Menus, Stocks, Orders, Outlets, Users
🚧
Receiving events
Atlas Open API delivers the webhooks by sending a POST request to the endpoint of your choosing. Your application must read event details from the request body as JSON.The endpoint must acknowledge the receipt of the webhook by responding with
2xx
HTTP status.Retries and duplicate handling
2xx
status response from the webhook endpoint. If this response is not received, Atlas Open API will retry the request.Events
Menu
menu.updated
{
"event_type": "menu.updated",
"event_at": 1727423000,
"payload": {
"event": "menu.updated"
"menu_id": 1
}
}
Stock
stock.updated
{
"event_type": "stock.updated",
"event_at": 1727423000,
"payload": {
"item_id": 15,
"outlet_id": 1,
"is_available": true
}
}
Order
order.created
OrderCreatedPayload
id
integerÂ
required
user_id
integerÂ
required
channel_id
integerÂ
required
outlet_id
integerÂ
required
brand_id
integer  | nullÂ
required
identifier
string  | nullÂ
required
state
stringÂ
required
fulfilment_type
enum<string>Â
required
Allowed values:
dine_inpickupdelivery
serving_date
string <date>
required
YYYY-MM-DD
timeslot_start
integerÂ
required
timeslot_end
integerÂ
required
timeslot_type
enum<string>Â
required
Allowed value:
asap
timeslot_range
stringÂ
read-onlyrequired
order_items
array[object (OrderItemResponse) {12}]Â
required
id
integerÂ
required
item_id
integerÂ
required
name
stringÂ
required
quantity
integerÂ
required
>= 1
price_cents
integerÂ
required
currency
stringÂ
required
discount
integerÂ
required
Default:
0
notes
string  | nullÂ
required
calculated_subtotal
integer  | nullÂ
required
per_unit_quantity
integer  | nullÂ
required
unit_label
string  | nullÂ
required
sub_items
array [object {11}]Â
required
contact_name
string  | nullÂ
required
contact_email
string  | nullÂ
required
contact_number
string  | nullÂ
required
address_line1
string  | nullÂ
required
address_line2
string  | nullÂ
required
external_order_id
string  | nullÂ
required
external_order_short_code
string  | nullÂ
required
call_number
stringÂ
required
postal_code
string  | nullÂ
required
address_latitude
number  | nullÂ
required
address_longitude
number  | nullÂ
required
is_cutlery_required
booleanÂ
required
Default:
false
is_contactless
booleanÂ
required
Default:
false
notes
string  | nullÂ
required
is_gift
booleanÂ
required
Default:
false
recipient_name
string  | nullÂ
required
recipient_contact_number
string  | nullÂ
required
gift_message
string  | nullÂ
required
is_paid
booleanÂ
required
Default:
false
promo_code
string  | nullÂ
required
created_at
integerÂ
required
unix time
updated_at
integerÂ
required
unix time
cancelled_at
integer  | nullÂ
required
unix time
completed_at
integer  | nullÂ
required
unix time
donation_amount
integerÂ
required
>= 0
Default:
0
confirmation_custom_message
string  | nullÂ
required
{
"event_type": "order.created",
"event_at": 1727423000,
"payload": {
"id": 85,
"identifier": null,
"user_id": 17,
"channel_id": 1,
"outlet_id": 3,
"brand_id": null,
"fulfilment_type": "delivery",
"state": "unpaid",
"notes": null,
"serving_date": "2024-10-01",
"timeslot_start": 54000,
"timeslot_end": 55800,
"timeslot_range": "3:00PM–3:30PM",
"contact_name": "John",
"contact_email": "john@example.com",
"contact_number": "80000001",
"address_line1": "8 Temasek Boulevard",
"address_line2": "Suntec Tower 3",
"address_latitude": null,
"address_longitude": null,
"postal_code": "038988",
"is_gift": false,
"recipient_name": null,
"recipient_contact_number": null,
"gift_message": null,
"is_paid": false,
"promo_code": null,
"delivery_fee": 0,
"surcharge": 0,
"admin_discount": 0,
"discount": 0,
"tax": 0,
"tax_rate": "0.0",
"tax_inclusive_prices": false,
"subtotal": 0,
"total": 0,
"total_including_tax": 0,
"is_cutlery_required": false,
"is_contactless": false,
"created_at": 1727423000,
"updated_at": 1727423000,
"cancelled_at": 1727423000,
"completed_at": 1727423000,
"order_items": [
{
"id": 214,
"item_id": 380,
"name": "Coffee",
"quantity": 1,
"currency": "SGD",
"calculated_subtotal": 400,
"per_unit_quantity": 1,
"unit_label": null,
"notes": null,
"discount": 0,
"price_cents": 400,
"sub_items": [
{
"id": 215,
"item_id": 496,
"name": "Iced",
"quantity": 1,
"currency": "SGD",
"calculated_subtotal": 0,
"per_unit_quantity": 1,
"unit_label": null,
"notes": null,
"discount": 0,
"price_cents": 0
}
]
},
{
"id": 216,
"item_id": 480,
"name": "Eggs Benedict",
"quantity": 2,
"currency": "SGD",
"calculated_subtotal": 1600,
"per_unit_quantity": 1,
"unit_label": null,
"notes": null,
"discount": 0,
"price_cents": 1600,
"sub_items": []
}
]
}
}
order.updated
OrderCreatedPayload
id
integerÂ
required
user_id
integerÂ
required
channel_id
integerÂ
required
outlet_id
integerÂ
required
brand_id
integer  | nullÂ
required
identifier
string  | nullÂ
required
state
stringÂ
required
fulfilment_type
enum<string>Â
required
Allowed values:
dine_inpickupdelivery
serving_date
string <date>
required
YYYY-MM-DD
timeslot_start
integerÂ
required
timeslot_end
integerÂ
required
timeslot_type
enum<string>Â
required
Allowed value:
asap
timeslot_range
stringÂ
read-onlyrequired
order_items
array[object (OrderItemResponse) {12}]Â
required
id
integerÂ
required
item_id
integerÂ
required
name
stringÂ
required
quantity
integerÂ
required
>= 1
price_cents
integerÂ
required
currency
stringÂ
required
discount
integerÂ
required
Default:
0
notes
string  | nullÂ
required
calculated_subtotal
integer  | nullÂ
required
per_unit_quantity
integer  | nullÂ
required
unit_label
string  | nullÂ
required
sub_items
array [object {11}]Â
required
contact_name
string  | nullÂ
required
contact_email
string  | nullÂ
required
contact_number
string  | nullÂ
required
address_line1
string  | nullÂ
required
address_line2
string  | nullÂ
required
external_order_id
string  | nullÂ
required
external_order_short_code
string  | nullÂ
required
call_number
stringÂ
required
postal_code
string  | nullÂ
required
address_latitude
number  | nullÂ
required
address_longitude
number  | nullÂ
required
is_cutlery_required
booleanÂ
required
Default:
false
is_contactless
booleanÂ
required
Default:
false
notes
string  | nullÂ
required
is_gift
booleanÂ
required
Default:
false
recipient_name
string  | nullÂ
required
recipient_contact_number
string  | nullÂ
required
gift_message
string  | nullÂ
required
is_paid
booleanÂ
required
Default:
false
promo_code
string  | nullÂ
required
created_at
integerÂ
required
unix time
updated_at
integerÂ
required
unix time
cancelled_at
integer  | nullÂ
required
unix time
completed_at
integer  | nullÂ
required
unix time
donation_amount
integerÂ
required
>= 0
Default:
0
confirmation_custom_message
string  | nullÂ
required
{
"event_type": "order.updated",
"event_at": 1727423000,
"payload": {
"id": 85,
"identifier": null,
"user_id": 17,
"channel_id": 1,
"outlet_id": 3,
"brand_id": null,
"fulfilment_type": "delivery",
"state": "unpaid",
"notes": null,
"serving_date": "2024-10-01",
"timeslot_start": 54000,
"timeslot_end": 55800,
"timeslot_range": "3:00PM–3:30PM",
"contact_name": "John",
"contact_email": "john@example.com",
"contact_number": "80000001",
"address_line1": "8 Temasek Boulevard",
"address_line2": "Suntec Tower 3",
"address_latitude": null,
"address_longitude": null,
"postal_code": "038988",
"is_gift": false,
"recipient_name": null,
"recipient_contact_number": null,
"gift_message": null,
"is_paid": false,
"promo_code": null,
"delivery_fee": 0,
"surcharge": 0,
"admin_discount": 0,
"discount": 0,
"tax": 0,
"tax_rate": "0.0",
"tax_inclusive_prices": false,
"subtotal": 0,
"total": 0,
"total_including_tax": 0,
"is_cutlery_required": false,
"is_contactless": false,
"created_at": 1727423000,
"updated_at": 1727423000,
"cancelled_at": 1727423000,
"completed_at": 1727423000,
"order_items": [
{
"id": 214,
"item_id": 380,
"name": "Coffee",
"quantity": 1,
"currency": "SGD",
"calculated_subtotal": 400,
"per_unit_quantity": 1,
"unit_label": null,
"notes": null,
"discount": 0,
"price_cents": 400,
"sub_items": [
{
"id": 215,
"item_id": 496,
"name": "Iced",
"quantity": 1,
"currency": "SGD",
"calculated_subtotal": 0,
"per_unit_quantity": 1,
"unit_label": null,
"notes": null,
"discount": 0,
"price_cents": 0
}
]
},
{
"id": 216,
"item_id": 480,
"name": "Eggs Benedict",
"quantity": 2,
"currency": "SGD",
"calculated_subtotal": 1600,
"per_unit_quantity": 1,
"unit_label": null,
"notes": null,
"discount": 0,
"price_cents": 1600,
"sub_items": []
}
]
}
}
Outlet
outlet.created
{
"event_type": "outlet.created",
"payload": {
"id": 2,
"identifier": "valley-hungry",
"label": "Hungry Valley",
"address": "Hungry Valley, Singapore",
"description": "Valley of hungry people",
"contact_number": "+6598890011",
"created_at": "2022-11-23T12:39:41.039+08:00",
"updated_at": "2025-01-23T12:37:43.456+08:00",
"email": "outlet@atlas.kitchen",
"archived": null
},
"created_at": "2025-01-23T14:11:12.008+08:00",
"updated_at": "2025-01-23T14:11:12.008+08:00"
}
outlet.updated
{
"event_type": "outlet.updated",
"payload": {
"id": 2,
"identifier": "valley-hungry",
"label": "Hungry Valley",
"address": "Hungry Valley, Singapore",
"description": "Valley of hungry people",
"contact_number": "+6598890011",
"created_at": "2022-11-23T12:39:41.039+08:00",
"updated_at": "2025-01-23T12:37:43.456+08:00",
"email": "outlet@atlas.kitchen",
"archived": null
},
"created_at": "2025-01-23T14:11:12.008+08:00",
"updated_at": "2025-01-23T14:11:12.008+08:00"
}
outlet.closed
{
"event_type": "outlet.closed",
"payload": {
"id": 2,
"identifier": "valley-hungry",
"label": "Hungry Valley",
"address": "Hungry Valley, Singapore",
"description": "Valley of hungry people",
"contact_number": "+6598890011",
"created_at": "2022-11-23T12:39:41.039+08:00",
"updated_at": "2025-01-23T12:37:43.456+08:00",
"email": "outlet@atlas.kitchen",
"archived": null
},
"created_at": "2025-01-23T14:11:12.008+08:00",
"updated_at": "2025-01-23T14:11:12.008+08:00"
}
outlet.opened
{
"event_type": "outlet.opened",
"payload": {
"id": 2,
"identifier": "valley-hungry",
"label": "Hungry Valley",
"address": "Hungry Valley, Singapore",
"description": "Valley of hungry people",
"contact_number": "+6598890011",
"created_at": "2022-11-23T12:39:41.039+08:00",
"updated_at": "2025-01-23T12:37:43.456+08:00",
"email": "outlet@atlas.kitchen",
"archived": null
},
"created_at": "2025-01-23T14:11:12.008+08:00",
"updated_at": "2025-01-23T14:11:12.008+08:00"
}
User
user.created
{
"event_type": "user.created",
"data": {
"id": 123,
"email": "john.doe@example.com",
"mobile_number": "+1234567890",
"name": "John Doe",
"date_of_birth": "1990-01-01",
"marketing_consent": true,
"title": "Mr.",
"external_user_links": [
{
"external_user_id": "ext_123",
"external_user_type": "ext_app"
}
]
},
"created_at": "2025-01-23T14:11:12.008+08:00",
"updated_at": "2025-01-23T14:11:12.008+08:00"
}
user.updated
{
"event_type": "user.updated",
"data": {
"id": 123,
"email": "john.doe@example.com",
"mobile_number": "+1234567890",
"name": "John Doe",
"date_of_birth": "1990-01-01",
"marketing_consent": true,
"title": "Mr.",
"external_user_links": [
{
"external_user_id": "ext_123",
"external_user_type": "ext_app"
}
]
},
"created_at": "2025-01-23T14:11:12.008+08:00",
"updated_at": "2025-01-23T14:11:12.008+08:00"
}
Modified at 2025-03-17 13:02:54