Skip to main content
POST
/
v1
/
partner
/
menus
/
publish
Publish the menu to providers + refresh the store snapshot
curl --request POST \
  --url https://api.dev.shadowchef.co/v1/partner/menus/publish \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "stores": [
    {
      "brandID": 663,
      "branchID": 1062
    }
  ],
  "providerIDs": [
    1
  ]
}
'
{
  "request_id": "req_4d1b7e3f-1f06-4d3c-a14f-9c0b9f8a3e2c",
  "data": {
    "success": 1,
    "failed": 0
  }
}

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

Trigger a publish for a set of (brand, branch) stores. Side effects on success:

  • Rebuilds the cached store_full_menus blob that getMenu reads from — without this, recent biz-level edits aren't visible to the partner-facing read endpoint even after syncMenuToStores.
  • Ships the menu to each provider id in providerIDs (klikit is 1; pull the rest from listProviders).

Use scheduledAt (UTC) to defer the publish; absent or zero means "publish now".

stores
object[]
required
providerIDs
integer[]
required

Provider ids to publish to. [1] for klikit-only.

scheduledAt
string<date-time>

UTC timestamp at which the publish should fire. Omit / send the zero value to publish immediately.

Response

Publish queued / completed.

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