API reference

Customers and growth

Customer records, loyalty, campaigns, reservations, reviews and bulk orders.

get

/v1/customers/{id}

One merchant-side customer record (owner/manager/staff/judge; staff see a masked phone and no email)

operationId getCustomer

Auth

Member token+Tenant header

Parameters

  • idin pathstringrequired
    pattern ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

Response 200

V1Customercontract v1.customer
  • customer_idUuid7required
  • namestring | nullrequired
  • phonestring | nullrequired
  • emailstring | nullrequired
  • consentobjectrequired
    • emailbooleanoptional
    • smsbooleanoptional
  • has_accountbooleanrequired
  • erasedbooleanrequired
  • created_atIsoDatetimerequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

get

/v1/customers

Search merchant-side customer records (owner/manager/staff/judge; staff see masked contacts)

operationId listCustomers

Auth

Member token+Tenant header

Parameters

  • qin querystringoptional
  • limitin querystringoptional
  • cursorin querystringoptional

Response 200

CustomersCustomerListcontract customers.customer.list
  • customersarray of V1Customerrequired
  • next_cursorstring | nullrequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

post

/v1/customers:upsert

customers.customer.upsert.v1 — create or edit a customer record; consent can only be withdrawn

operationId upsertCustomer

Auth

Member token+Tenant header

Request body

object
  • command_idUuid7required
  • idempotency_keystringrequired
    pattern ^[A-Za-z0-9_.:-]{8,100}$
  • typeconst "customers.customer.upsert.v1"required

Response 200

CommandResultcontract command-result
  • command_idUuid7required
  • typestringrequired
    pattern ^[a-z][a-z_]*(\.[a-z][a-z_]*)+\.v[1-9][0-9]*$
  • entity_idUuid7required
  • committed_atIsoDatetimerequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

get

/v1/customers/{id}/loyalty

Loyalty balance (latest balance_after) and ledger entries

operationId getCustomerLoyalty

Auth

Member token+Tenant header

Parameters

  • idin pathstringrequired
    pattern ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

Response 200

CustomersLoyaltyLedgercontract customers.loyalty.ledger
  • customer_idUuid7required
  • balanceintegerrequired
    ≥ 0≤ 9007199254740991
  • balance_entry_idUuid7 | nullrequired
  • entriesarray of V1LoyaltyEntryrequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

get

/v1/customers/{id}/coupon-uses

Coupon use history of one customer

operationId listCustomerCouponUses

Auth

Member token+Tenant header

Parameters

  • idin pathstringrequired
    pattern ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

Response 200

CustomersCouponUseListcontract customers.coupon-use.list

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

post

/v1/loyalty:adjust

customers.loyalty.adjust.v1 — append an adjustment entry (never below zero)

operationId adjustLoyalty

Auth

Member token+Tenant header

Request body

object
  • command_idUuid7required
  • idempotency_keystringrequired
    pattern ^[A-Za-z0-9_.:-]{8,100}$
  • typeconst "customers.loyalty.adjust.v1"required

Response 200

CommandResultcontract command-result
  • command_idUuid7required
  • typestringrequired
    pattern ^[a-z][a-z_]*(\.[a-z][a-z_]*)+\.v[1-9][0-9]*$
  • entity_idUuid7required
  • committed_atIsoDatetimerequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

get

/v1/campaigns

Queued, cancelled and (demo) recorded-as-sent campaigns (created only by an approved draft; never sent by Munim)

operationId listCampaigns

Auth

Member token+Tenant header

Response 200

CustomersCampaignListcontract customers.campaign.list

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

post

/v1/campaigns:cancel

customers.campaign.cancel.v1 — cancel a queued campaign

operationId cancelCampaign

Auth

Member token+Tenant header

Request body

object
  • command_idUuid7required
  • idempotency_keystringrequired
    pattern ^[A-Za-z0-9_.:-]{8,100}$
  • typeconst "customers.campaign.cancel.v1"required

Response 200

CommandResultcontract command-result
  • command_idUuid7required
  • typestringrequired
    pattern ^[a-z][a-z_]*(\.[a-z][a-z_]*)+\.v[1-9][0-9]*$
  • entity_idUuid7required
  • committed_atIsoDatetimerequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

post

/v1/campaigns:record-sent

customers.campaign.record_sent.v1 — on a demo business, record a queued campaign as sent (simulated: no message leaves Munim; owner)

operationId recordCampaignSent

Auth

Member token+Tenant header

Request body

object
  • command_idUuid7required
  • idempotency_keystringrequired
    pattern ^[A-Za-z0-9_.:-]{8,100}$
  • typeconst "customers.campaign.record_sent.v1"required

Response 200

CommandResultcontract command-result
  • command_idUuid7required
  • typestringrequired
    pattern ^[a-z][a-z_]*(\.[a-z][a-z_]*)+\.v[1-9][0-9]*$
  • entity_idUuid7required
  • committed_atIsoDatetimerequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

get

/v1/reservations

Reservations

operationId listReservations

Auth

Member token+Tenant header

Parameters

  • outlet_idin querystringoptional
  • fromin querystringoptional
  • toin querystringoptional

Response 200

CustomersReservationListcontract customers.reservation.list

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

post

/v1/reservations:upsert

customers.reservation.upsert.v1

operationId upsertReservation

Auth

Member token+Tenant header

Request body

object
  • command_idUuid7required
  • idempotency_keystringrequired
    pattern ^[A-Za-z0-9_.:-]{8,100}$
  • typeconst "customers.reservation.upsert.v1"required

Response 200

CommandResultcontract command-result
  • command_idUuid7required
  • typestringrequired
    pattern ^[a-z][a-z_]*(\.[a-z][a-z_]*)+\.v[1-9][0-9]*$
  • entity_idUuid7required
  • committed_atIsoDatetimerequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

get

/v1/reviews

Imported or hand-entered reviews

operationId listReviews

Auth

Member token+Tenant header

Parameters

  • outlet_idin querystringoptional
  • limitin querystringoptional

Response 200

CustomersReviewListcontract customers.review.list

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

post

/v1/reviews:record

customers.review.record.v1 — enter a review (append-only)

operationId recordReview

Auth

Member token+Tenant header

Request body

object
  • command_idUuid7required
  • idempotency_keystringrequired
    pattern ^[A-Za-z0-9_.:-]{8,100}$
  • typeconst "customers.review.record.v1"required

Response 200

CommandResultcontract command-result
  • command_idUuid7required
  • typestringrequired
    pattern ^[a-z][a-z_]*(\.[a-z][a-z_]*)+\.v[1-9][0-9]*$
  • entity_idUuid7required
  • committed_atIsoDatetimerequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

get

/v1/bulk-orders

Bulk / catering enquiries and orders

operationId listBulkOrders

Auth

Member token+Tenant header

Parameters

  • outlet_idin querystringoptional

Response 200

CustomersBulkOrderListcontract customers.bulk-order.list

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.

post

/v1/bulk-orders:upsert

customers.bulk_order.upsert.v1

operationId upsertBulkOrder

Auth

Member token+Tenant header

Request body

object
  • command_idUuid7required
  • idempotency_keystringrequired
    pattern ^[A-Za-z0-9_.:-]{8,100}$
  • typeconst "customers.bulk_order.upsert.v1"required

Response 200

CommandResultcontract command-result
  • command_idUuid7required
  • typestringrequired
    pattern ^[a-z][a-z_]*(\.[a-z][a-z_]*)+\.v[1-9][0-9]*$
  • entity_idUuid7required
  • committed_atIsoDatetimerequired

Errors

Every error body carries a code, a message and, where it applies, a reason_code. All error and reason codes.