Data Formats
Requests and Responses
- JSON with UTF-8 encoding. Send
Content-Type: application/jsonon requests with a body. - Field names use
snake_case. - Successful responses use the envelope
{"status": "success", "message": ..., "data": ...}. Responses carry anX-Request-Idresponse header; error responses also carry a request id asmeta.request_id. Errors are described in Errors. - New fields can be added to responses at any time (see Versioning). Ignore fields you do not know.
Values
| Kind | Format |
|---|---|
| IDs | Strings, usually UUIDs. Treat every id as an opaque string. |
| Timestamps | RFC 3339 in UTC with Z and whole seconds, for example 2026-10-09T03:30:00Z, in answers and webhooks. Time filters such as sold_at_from take the same format. |
| Dates | YYYY-MM-DD, for example a customer's birthday |
| Money | Integer in whole units of currency. IDR has no decimals in Mekari POS: 15000 means Rp15.000. |
| Quantities | Integers, for example stock quantity |
Every amount is an integer in whole units of currency (IDR: rupiah). Money fields have no unit suffix.