Skip to main content
PATCH
/
v1
/
partner
/
menus
/
categories
/
enable
Bulk enable / disable categories
curl --request PATCH \
  --url https://api.dev.shadowchef.co/v1/partner/menus/categories/enable \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "ids": [
    41254
  ],
  "isEnabled": false
}
'
{
  "request_id": "req_4d1b7e3f-...",
  "data": "<unknown>",
  "error": {
    "code": "auth_invalid_credential",
    "message": "<string>",
    "details": "<unknown>"
  }
}

Authorizations

Authorization
string
header
required

Authorization: Basic base64(partner_key:secret_key).

Credentials are issued by a klikit operator. The plaintext secret_key is shown once at issuance and cannot be retrieved later — store it securely. If lost, ask your operator to rotate the secret to receive a new one. The old secret stops working immediately on rotation; there is no overlap window.

Body

application/json

Bulk enable / disable for sections, categories, or items. Used by enableSections, enableCategories, and enableItems — same request shape for every level; only the meaning of ids changes.

Two scopes of write:

  • Business-level (omit zoneStores) — flips the enable flag on the business row. Applies everywhere the entity is inherited.
  • Per-store override (populate zoneStores) — writes a row in the matching store_*_overrides table for each listed (brandID, branchID). The business row is untouched.

isCascadeToModifierGroups: true propagates the same flip down to any modifier-group ↔ modifier link rows attached to the targeted entities. brandIDsToCascade narrows that cascade to specific brand ids.

isEnabled is a primitive boolean — missing / null reads as false. Always send it explicitly.

ids
integer[]
required

Ids of the sections / categories / items to flip. Must belong to your business or the upstream returns 404 not_found.

Minimum array length: 1
isEnabled
boolean
required

Target value for the enable flag.

zoneStores
object[]

Per-store override targets. Each entry writes (or replaces) the store-level enable row for that (brandID, branchID).

brandIDsToCascade
integer[]

Cascade the enable flip only to this subset of the entity's attached brand ids. Empty / absent → cascade to every attached brand.

isCascadeToModifierGroups
boolean
default:false

When true, also flips the enable flag on every modifier-group ↔ modifier link row attached to the targeted entities.

Response

Success — payload wrapped in the canonical Envelope.

Canonical response wrapper. Every response — success or error — carries the request_id so you can quote one id to klikit support to correlate a request end-to-end.

request_id
string
required
Example:

"req_4d1b7e3f-..."

data
any

Endpoint-specific payload on success.

error
object

Machine-readable error code + human message. The code is stable across releases — switch on code in your client code rather than parsing the message text.

Common codes you will encounter as a partner:

CodeHTTPMeaning
auth_missing401Authorization header absent / malformed
auth_invalid_credential401partner_key or secret_key did not verify
auth_revoked403Credential is revoked
auth_forbidden403Credential not authorized for the requested scope
request_invalid400Body / query parameters failed validation
request_missing_idempotency_key400Write endpoint called without Idempotency-Key
request_invalid_range400Date range > 90 days
resource_not_found404Order / store / mapping does not exist
resource_unmapped404Stock / availability call referenced an unknown SKU
state_invalid_transition409Order PATCH not allowed by current state
state_idempotency_conflict409Same Idempotency-Key reused with a different body
rate_limit_exceeded429Per-credential rate cap hit
downstream_unavailable502An internal klikit dependency is unreachable