# ancon platform developer portal (full) > Every guide and the endpoint index of every API. Each endpoint links to its markdown page with parameters, schemas and examples. ## Key facts - Authenticate every request with an `Access-Token` header (tenant- or outlet-level token created in the backoffice at https://cloud.ancon.io). Missing or invalid tokens return 401. - Core API base URL: `https://core-api.ancon.io` (API version public-v1) - Voucher API base URL: `https://voucher-api.ancon.io` (API version public-v1) - User API base URL: `https://user-api.ancon.io` (API version public-v1) - Requests and responses are JSON. Paths contain placeholders such as `{tenantId}`; get the tenant id from `GET /api/v1/Tenants` on the Core API. - Every page has a markdown twin: add `.md` to the URL or send `Accept: text/markdown`. Everything in one file: https://ancon.dev/llms-full.txt - Support: integration-support@ancon.io. Include the correlation id from the response. ## Contact us We would love to hear from you. - Integration questions: integration-support@ancon.io - General support: support@ancon.io - Phone: 010 - 40 50 900 - Hours: Mon-Fri 8:00-17:00 Include the correlation id from the response when you report an API problem, see [rate limits and correlation id](https://ancon.dev/guides/rate-limits.md). ## Get started All requests to the ancon platform APIs are authorized with an access token sent in the `Access-Token` header. A missing or invalid token returns `401 Unauthorized`. ### What do you want to do? - **You have, or represent, an existing customer** (an ancon platform account with a restaurant or chain) and want an API key for it: [existing customer](#existing-customer). - **You want to integrate as a partner** and open the integration to many restaurants now and in the future: [partner integrations](https://ancon.dev/partner.md). ### Existing customer 1. In the backoffice ([cloud.ancon.io](https://cloud.ancon.io)), open the integration menu and create an access token. Decide whether it is an outlet-level or tenant-level token (see below). 2. Follow the [API reference](https://ancon.dev/api/core.md) to implement your integration. ### Token levels | Level | Access | | --- | --- | | Tenant | Read and write on all endpoints. | | Outlet | Read on tenant-level data; read and write on outlet-level data for the outlet the token was created for. | ### First requests 1. [Get tenant details](https://ancon.dev/api/core/tenants/get-tenant-details.md) needs no input and returns the tenant your token belongs to. The `tenantId` is required in many other URLs. 2. [Get outlet list](https://ancon.dev/api/core/tenants/get-outlet-list.md) returns every outlet under the tenant (an outlet-level token only sees its own outlet). ```bash curl "https://core-api.ancon.io/api/v1/Tenants" \ -H "Access-Token: $ANCON_TOKEN" ``` ### Every response includes - `X-Rate-Limit-*` headers, see [rate limits](https://ancon.dev/guides/rate-limits.md). - A correlation id. Include it in any support question or bug report. You can also send your own as `x-correlation-id` (a UUID is best) to correlate logs on both sides. ### Choose a service - [Core API](https://ancon.dev/api/core.md): tenants, outlets, products, menus, checks, orders, payments. - [Voucher API](https://ancon.dev/api/voucher.md): bookkeeping, voucher bases and settlement reports. - [User API](https://ancon.dev/api/user.md): customers, companies, guest groups, tenant users. ### Working with AI agents Every reference page has a markdown twin (add `.md` to the URL), the raw OpenAPI specs are at `/specs/core.json`, `/specs/voucher.json` and `/specs/user.json`, and [llms.txt](https://ancon.dev/llms.txt) indexes everything. To let an AI assistant act on ancon platform data directly instead, see [MCP and OAuth](https://ancon.dev/mcp.md). ### Next - [Filtering](https://ancon.dev/guides/filtering.md) - [Webhooks](https://ancon.dev/guides/webhooks.md) - Questions: integration-support@ancon.io ## Deprecation Endpoints can be deprecated when a newer version is added; the old one eventually expires. Deprecated endpoints are marked in the API reference and announced in response headers: ``` Deprecation-Sunset: 2024-10-01 00:00:00 Deprecation: This API endpoint is deprecated and will be removed in a future version, use a newer version. ``` Alert on these headers so you find out before anything breaks. ### Check endpoints v2 The Core API Check endpoints exist in a newer generation under `api/v2` (same paths, version segment `v2`). They return the modern check model and honor the `Accept-Language` header for localized product names. The `api/v1` Check endpoints are deprecated with a sunset date of 2028-09-01. ## Filtering List endpoints take filters as query parameters, one parameter per filter. Combine as many as you need; they are joined with AND unless you say OR. ```text ?filter[{field}]={operator}:{value}:{condition} ``` - **field** is the property to filter on, in lowercase. Nested properties use a dot: `productgroup.id`, `customer.name`. - **operator** is one of the nine operators below. - **value** is what to compare with. `null` and `notnull` take no value. - **condition** is optional: `and` (default) or `or`. It joins this filter to the next one. > The web version of this page has an interactive filter builder: https://ancon.dev/guides/filtering#playground ### Operators | Operator | Matches when the field… | Example | | --- | --- | --- | | `has` | contains the value (text), or equals it (numbers, booleans, GUIDs) | `filter[name]=has:beef` | | `in` | exactly equals one of a comma-separated list | `filter[producttype]=in:1,2,3` | | `lt` / `lte` | is less than / less than or equal (numbers, dates) | `filter[created]=lt:2021-01-01 12:32` | | `gt` / `gte` | is greater than / greater than or equal (numbers, dates) | `filter[created]=gte:2022-10-26 00:00` | | `and` | has the bit flag set (enum flags) | `filter[orderformat]=and:8` | | `null` | is null | `filter[deleted]=null` | | `notnull` | is not null | `filter[deleted]=notnull` | #### has: search and single values On text, `has` matches substrings without regard to case (a `LIKE '%value%'`), so it doubles as search. On numbers, booleans and GUIDs it is an exact match. ```text ?filter[name]=has:beef ?filter[name]=has:sall&filter[name]=has:beef ?filter[name]=has:sall:or&filter[name]=has:beef ?filter[producttype]=has:2 ?filter[productgroup.id]=has:ca68cd1e-2a4c-4e81-8b30-75f4227467e3 ?filter[hasvariants]=has:true ``` 1. Names containing “beef”: *Beefburger*, *Steak beef 150g*. 2. Names containing both “sall” and “beef”: *Nice beef sallad*. 3. Names containing “sall” or “beef”: *Ceasar sallad*, *Beefburger*. 4. Product type exactly 2. 5. One product group, by id. 6. Products with variants. #### in: one of several exact values `in` takes a comma-separated list and matches values that equal one of them exactly. Use it for several GUIDs or enum values on the same field; for a single value, `has` reads better. ```text ?filter[productgroup.id]=in:ca68cd1e-2a4c-4e81-8b30-75f4227467e3,51abeddc-bec7-4416-9aac-f791cbe0eb83 ?filter[producttype]=in:1,2,3 ?filter[name]=in:Baconburger 200g,Ceasar sallad ``` Don't put spaces after the commas: in `in:one, two` the second value is “ two”, with a leading space. #### lt, lte, gt, gte: ranges Comparisons work on numbers and dates. Write dates as `2022-10-26 00:00` or in ISO 8601, `2022-10-26T00:00:00Z`, in UTC. Two filters on the same field make a range: ```text ?filter[created]=gte:2022-01-01 00:00&filter[created]=lt:2023-01-01 00:00 ?filter[producttype]=gt:3 ``` #### and: enum flags Some enums are bit flags: one value holds several options added together. `and` matches rows where the flag you pass is set. On orders, `orderformat` 8 is delivery, so this returns every delivery order, whatever other formats it also has: ```text ?filter[orderformat]=and:8 ``` A value is the sum of its flags. 15 is 8 + 4 + 2 + 1, so it contains 8, 4, 2 and 1: | Value | Flags set | Matches `and:32` | Matches `and:4` | Matches `and:2` | | --- | --- | --- | --- | --- | | 19 | 16 + 2 + 1 | no | no | yes | | 37 | 32 + 4 + 1 | yes | yes | no | | 15 | 8 + 4 + 2 + 1 | no | yes | yes | | 66 | 64 + 2 | no | no | yes | Pass one flag at a time. #### null and notnull No value after the operator. Useful for soft-deleted entities: ```text ?filter[deleted]=null ?filter[deleted]=notnull ``` The first returns entities that aren't deleted, the second only the deleted ones. ### Combining filters Filters are joined with AND by default: a row must match all of them. Add `:or` to a filter to join it to the next one with OR instead. ```text ?filter[tagid]=in:044ebf50-3436-4bb3-af6e-2f34df5afcbe&filter[productgroup.id]=in:ca68cd1e-2a4c-4e81-8b30-75f4227467e3 ?filter[tagid]=in:044ebf50-3436-4bb3-af6e-2f34df5afcbe:or&filter[productgroup.id]=in:ca68cd1e-2a4c-4e81-8b30-75f4227467e3 ``` The first returns products with that tag **and** in that group; the second, products with that tag **or** in that group. Use OR for things like “orders over 500 or refunded”, AND for “orders over 500 placed online”. ### Sending filters - **cURL:** square brackets are glob characters in curl. Pass `-g` (`--globoff`) or encode them as `%5B` and `%5D`. - **Spaces:** encode the space in `2022-10-26 00:00` as `%20`, or use the ISO 8601 form, which has none. - **Libraries:** let your HTTP library build the query string. With `URLSearchParams` or `requests`, append one `filter[field]` pair per filter; repeated keys are fine. ```bash curl -g "https://core-api.ancon.io/api/v1/Tenants/{tenantId}/Products?filter[name]=has:beef" \ -H "Access-Token: $ANCON_TOKEN" ``` ### Polling for changes To pick up new and changed orders without re-reading the whole day, poll [Get order details list](https://ancon.dev/api/core/orders/get-order-details-list.md) with `filter[modified]=gte:`, using the time your previous poll started minus a minute. The endpoint page explains what changes `modified`. ### Which endpoints support filtering Every list endpoint below accepts `filter[...]`. Where the fields are documented, the endpoint page lists them; elsewhere, filter on the fields you see in the response. #### Core API - [AddOnGroups · Get add on group list](https://ancon.dev/api/core/add-on-groups/get-add-on-group-list.md): `GET /api/v1/Tenants/{tenantId}/AddOnGroups` - [Checks · Get outlet check list V2](https://ancon.dev/api/core/checks/get-outlet-check-list-v2.md): `GET /api/v2/Outlets/{outletId}/Checks` (fields documented) - [Discounts · Get discount list](https://ancon.dev/api/core/discounts/get-discount-list.md): `GET /api/v1/Tenants/{tenantId}/Discounts` (fields documented) - [Fees · Get fee list](https://ancon.dev/api/core/fees/get-fee-list.md): `GET /api/v1/Tenants/{tenantId}/Fees` (fields documented) - [Ingredients · Get ingredients list](https://ancon.dev/api/core/ingredients/get-ingredients-list.md): `GET /api/v1/Tenants/{tenantId}/Ingredients` - [Invoices · Get invoice list](https://ancon.dev/api/core/invoices/get-invoice-list.md): `GET /api/v1/Outlets/{outletId}/Invoices` (fields documented) - [MenuTrees · Get menu tree list](https://ancon.dev/api/core/menu-trees/get-menu-tree-list.md): `GET /api/v1/Tenants/{tenantId}/MenuTrees` (fields documented) - [MetadataTemplates · Get metadata template list](https://ancon.dev/api/core/metadata-templates/get-metadata-template-list.md): `GET /api/v1/Tenants/{tenantId}/MetadataTemplate` (fields documented) - [Orders · Get order details list](https://ancon.dev/api/core/orders/get-order-details-list.md): `GET /api/v1/Outlets/{outletId}/Orders/DetailedList` (fields documented) - [OutletClientGroups · Get outlet client list.](https://ancon.dev/api/core/outlet-client-groups/get-outlet-client-list.md): `GET /api/v1/Outlets/{outletId}/ClientGroups` - [OutletClients · Get client list](https://ancon.dev/api/core/outlet-clients/get-client-list.md): `GET /api/v1/Outlets/{outletId}/Clients` (fields documented) - [ProductGroups · Get product group list](https://ancon.dev/api/core/product-groups/get-product-group-list.md): `GET /api/v1/Tenants/{tenantId}/ProductGroups` (fields documented) - [Products · Get product list](https://ancon.dev/api/core/products/get-product-list.md): `GET /api/v1/Tenants/{tenantId}/Products` (fields documented) - [SaleSources · Get Sale source list](https://ancon.dev/api/core/sale-sources/get-sale-source-list.md): `GET /api/v1/Tenants/{tenantId}/SaleSources` (fields documented) - [Sections · Get section list](https://ancon.dev/api/core/sections/get-section-list.md): `GET /api/v1/Outlets/{outletId}/Sections` - [Sections · Get section tables](https://ancon.dev/api/core/sections/get-section-tables.md): `GET /api/v1/Outlets/{outletId}/Sections/{sectionId}/Tables` - [SettlementReports · Get Adyen settlement report list](https://ancon.dev/api/core/settlement-reports/get-adyen-settlement-report-list.md): `GET /api/v1/Outlets/{outletId}/SettlementReports` (fields documented) - [Tables · Get table list](https://ancon.dev/api/core/tables/get-table-list.md): `GET /api/v1/Outlets/{outletId}/Tables` (fields documented) - [Tags · Get tag list](https://ancon.dev/api/core/tags/get-tag-list.md): `GET /api/v1/Tenants/{tenantId}/Tags` (fields documented) - [Taxes · Get tax list](https://ancon.dev/api/core/taxes/get-tax-list.md): `GET /api/v1/Tenants/{tenantId}/Taxes` (fields documented) - [Tenants · Get outlet list](https://ancon.dev/api/core/tenants/get-outlet-list.md): `GET /api/v1/Tenants/Outlets` (fields documented) - [Tickets · Get ticket details list](https://ancon.dev/api/core/tickets/get-ticket-details-list.md): `GET /api/v1/Outlets/{outletId}/Tickets/DetailedList` (fields documented) - [UpsellGroups · Get upsell group list](https://ancon.dev/api/core/upsell-groups/get-upsell-group-list.md): `GET /api/v1/Tenants/{tenantId}/UpsellGroups` - [WayOfPayments · Get way of payment list](https://ancon.dev/api/core/way-of-payments/get-way-of-payment-list.md): `GET /api/v1/Tenants/{tenantId}/WayOfPayments` (fields documented) - [WayOfPayments · Get way of payment list](https://ancon.dev/api/core/way-of-payments/get-way-of-payment-list-v1.1.md): `GET /api/v1.1/Tenants/{tenantId}/WayOfPayments` (fields documented) - [WayOfPayments · Get way of payment list](https://ancon.dev/api/core/way-of-payments/get-way-of-payment-list-v1.2.md): `GET /api/v1.2/Tenants/{tenantId}/WayOfPayments` (fields documented) #### Voucher API - [VoucherBases · Get voucher basis list](https://ancon.dev/api/voucher/voucher-bases/get-voucher-basis-list.md): `GET /public/api/v1/Outlets/{outletId}/OrderVoucherBases` (fields documented) #### User API - [Companies · Get tenant company list](https://ancon.dev/api/user/companies/get-tenant-company-list.md): `GET /public/api/v1/Tenants/{tenantId}/Companies` (fields documented) - [Companies · Get tenant company members list](https://ancon.dev/api/user/companies/get-tenant-company-members-list.md): `GET /public/api/v1/Tenants/{tenantId}/Companies/{companyId}/Members` - [Customers · Get Customer list by tenant](https://ancon.dev/api/user/customers/get-customer-list-by-tenant-v1.1.md): `GET /public/api/v1.1/Tenants/{tenantId}/Customers` (fields documented) - [GuestGroups · Get guest group list by tenant id.](https://ancon.dev/api/user/guest-groups/get-guest-group-list-by-tenant-id.md): `GET /public/api/v1/Tenants/{tenantId}/GuestGroups` (fields documented) The original filtering specification from 2022 is still available as a [PDF](https://ancon.dev/wp-content/uploads/2022/12/Filtering-2022-12-16.pdf). ## Rate limits Limit information is returned in response headers: ``` X-Rate-Limit-Limit: 1s X-Rate-Limit-Remaining: 9 X-Rate-Limit-Reset: 2022-12-16T14:13:28.6783785Z ``` In this example the endpoint allows at most 10 requests each second. ### Correlation id Every response carries a correlation id header that uniquely identifies the request. Include it in any question or bug report. To correlate your own logging, send `x-correlation-id` with a UUID on the request and it is used in ancon platform logs too. ## Webhooks Configure a webhook URL on the integration page for the public API in [cloud.ancon.io](https://cloud.ancon.io). Webhooks are sent once a URL is configured. ### Delivery On failure the platform retries up to 3 times, 3 minutes apart. Every request carries these headers: | Header | Example | | --- | --- | | `Api-Version` | `1.0` | | `Try` | `1` | | `MaxTries` | `3` | ### Events #### Core API | Event | Payload | | --- | --- | | Check created | `checkId` | | Check paid | `checkId` | | Check fully paid | `checkId`, `orderId` | | Order created / refunded | Same shape as the Get order response | | Product created / updated / deleted | Same shape as the Get product response | | Ticket updated | Same shape as the Get ticket response | #### Voucher API | Event | Payload | | --- | --- | | Voucher basis published | Small subset of the voucher basis details. Call the details endpoint for the full data. | #### User API | Event | Payload | | --- | --- | | Customer added | Same shape as the Get customer response | ## MCP and OAuth The ancon platform MCP server connects your ancon platform account to an AI assistant such as Claude or ChatGPT. After you approve the connection with OAuth, the assistant can read and change the data you already have access to in Ancon Cloud. Server URL: `https://public-mcp.ancon.support/mcp` ### What an assistant can do - Retrieve sales figures, compare periods, and break down revenue by outlet, payment method, product group, or employee. - Look up orders, bills, guests, and invoice customers. - Create and update products, menus, prices, and discounts. - Manage staff, permissions, tables, cash registers, kitchen displays, and integrations. ### Connect **Prerequisite:** AI access must be enabled for your tenant. If it isn't, contact support. **Claude:** go to Settings → Connectors, search for Ancon, and connect. On Team and Enterprise plans an Owner must add it first. **ChatGPT:** enable developer mode under Settings → Apps → Advanced settings, create a connector, and enter the server URL above. In both clients, make sure Ancon is turned on in the chat's tool menu. ### Access and control - The assistant acts as you and can reach only the tenants and outlets your account can access. - Any action that changes data is held until you approve it. ### MCP or REST? - Building a system that needs direct, programmatic access: use the [REST APIs](https://ancon.dev/get-started.md). - Connecting an AI assistant or agent to act as a signed-in user: use MCP. Source: [Ancon MCP](https://help.ancon.io/sv/articles/5514302-ancon-mcp) on help.ancon.io. ## Partner integrations Integrating with the ancon platform as a partner means building one integration that many restaurants can use, now and in the future. ### Apply for a sandbox To get access to a sandbox environment you need to apply. We will reach out for further information. Email integration-support@ancon.io with your company name, what you want to build, and which APIs you expect to use ([Core](https://ancon.dev/api/core.md), [Voucher](https://ancon.dev/api/voucher.md), [User](https://ancon.dev/api/user.md)). ### Already have a customer? If you build for a specific restaurant or chain that already has an ancon platform account, you don't need a sandbox. See [Get started](https://ancon.dev/get-started.md#existing-customer). ## Core API General purpose: tenants, outlets, products, menus, checks, orders, payments, webhooks. Base URL: `https://core-api.ancon.io` · OpenAPI spec: https://ancon.dev/specs/core.json · API version: public-v1 Authenticate every request with an `Access-Token` header. See https://ancon.dev/get-started.md. ### AddOnGroups - [Get add on group details](https://ancon.dev/api/core/add-on-groups/get-add-on-group-details.md): `GET /api/v1/Tenants/{tenantId}/AddOnGroups/{id}` - [Get add on group list](https://ancon.dev/api/core/add-on-groups/get-add-on-group-list.md): `GET /api/v1/Tenants/{tenantId}/AddOnGroups` ### Checkouts - [Get checkout details](https://ancon.dev/api/core/checkouts/get-checkout-details.md): `GET /api/v1/Outlets/{outletId}/Checkouts/{id}` - [Delete checkout](https://ancon.dev/api/core/checkouts/delete-checkout.md): `DELETE /api/v1/Outlets/{outletId}/Checkouts/{id}` - [Create checkout](https://ancon.dev/api/core/checkouts/create-checkout.md): `POST /api/v1/Outlets/{outletId}/Checkouts` - [Recalculate checkout prices](https://ancon.dev/api/core/checkouts/recalculate-checkout-prices.md): `PUT /api/v1/Outlets/{outletId}/Checkouts/{id}/RecalculatePrice` - [Apply checkout discount](https://ancon.dev/api/core/checkouts/apply-checkout-discount.md): `PUT /api/v1/Outlets/{outletId}/Checkouts/{id}/ApplyDiscount` - [Create checkout payment.](https://ancon.dev/api/core/checkouts/create-checkout-payment.md): `POST /api/v1/Outlets/{outletId}/Checkouts/{checkoutId}/Payments` ### Checks - [Get check details V2](https://ancon.dev/api/core/checks/get-check-details-v2.md): `GET /api/v2/Outlets/{outletId}/Checks/{checkId}` - [Delete check V2](https://ancon.dev/api/core/checks/delete-check-v2.md): `DELETE /api/v2/Outlets/{outletId}/Checks/{checkId}` - [Get outlet check list V2](https://ancon.dev/api/core/checks/get-outlet-check-list-v2.md): `GET /api/v2/Outlets/{outletId}/Checks` - [Create check V2](https://ancon.dev/api/core/checks/create-check-v2.md): `POST /api/v2/Outlets/{outletId}/Checks` - [Get sales location check list V2](https://ancon.dev/api/core/checks/get-sales-location-check-list-v2.md): `GET /api/v2/Outlets/{outletId}/Checks/SalesLocations/{salesLocationId}` - [Add item V2](https://ancon.dev/api/core/checks/add-item-v2.md): `POST /api/v2/Outlets/{outletId}/Checks/AddItem` - [Add items V2](https://ancon.dev/api/core/checks/add-items-v2.md): `POST /api/v2/Outlets/{outletId}/Checks/{checkId}/Items` - [Move check V2](https://ancon.dev/api/core/checks/move-check-v2.md): `PUT /api/v2/Outlets/{outletId}/Checks/{checkId}/Move` - [Update check custom name V2](https://ancon.dev/api/core/checks/update-check-custom-name-v2.md): `PUT /api/v2/Outlets/{outletId}/Checks/{checkId}/CustomName` - [Update check custom ticket number V2](https://ancon.dev/api/core/checks/update-check-custom-ticket-number-v2.md): `PUT /api/v2/Outlets/{outletId}/Checks/{checkId}/CustomTicket` - [Discount check V2](https://ancon.dev/api/core/checks/discount-check-v2.md): `PUT /api/v2/Outlets/{outletId}/Checks/{checkId}/Discount` - [Split check V2](https://ancon.dev/api/core/checks/split-check-v2.md): `PUT /api/v2/Outlets/{outletId}/Checks/{checkId}/Split` - [Split check items V2](https://ancon.dev/api/core/checks/split-check-items-v2.md): `PUT /api/v2/Outlets/{outletId}/Checks/{checkId}/Items/Split` - [Discount check items V2](https://ancon.dev/api/core/checks/discount-check-items-v2.md): `PUT /api/v2/Outlets/{outletId}/Checks/{checkId}/Items/Discount` - [Set check table reservation metadata V2](https://ancon.dev/api/core/checks/set-check-table-reservation-metadata-v2.md): `PUT /api/v2/Outlets/{outletId}/Checks/{checkId}/TableReservationMetaData` - [Create integration check payment V2](https://ancon.dev/api/core/checks/create-integration-check-payment-v2.md): `PUT /api/v2/Outlets/{outletId}/Checks/{checkId}/IntegrationPayment` ### Discounts - [Get discount list](https://ancon.dev/api/core/discounts/get-discount-list.md): `GET /api/v1/Tenants/{tenantId}/Discounts` - [Get discount details](https://ancon.dev/api/core/discounts/get-discount-details-v1.1.md): `GET /api/v1.1/Tenants/{tenantId}/Discounts/{discountId}` ### Fees - [Get fee details](https://ancon.dev/api/core/fees/get-fee-details.md): `GET /api/v1/Tenants/{tenantId}/Fees/{id}` - [Get fee list](https://ancon.dev/api/core/fees/get-fee-list.md): `GET /api/v1/Tenants/{tenantId}/Fees` ### Ingredients - [Get ingridient details](https://ancon.dev/api/core/ingredients/get-ingridient-details.md): `GET /api/v1/Tenants/{tenantId}/Ingredients/{id}` - [Get ingredients list](https://ancon.dev/api/core/ingredients/get-ingredients-list.md): `GET /api/v1/Tenants/{tenantId}/Ingredients` ### Integrations - [Get details active apitoken](https://ancon.dev/api/core/integrations/get-details-active-apitoken.md): `GET /api/v1/Tenants/{tenantId}/Integrations/Current` ### Invoices - [Get invoice list](https://ancon.dev/api/core/invoices/get-invoice-list.md): `GET /api/v1/Outlets/{outletId}/Invoices` - [Update invoice status](https://ancon.dev/api/core/invoices/update-invoice-status.md): `PUT /api/v1/Outlets/{outletId}/Invoices/Status` ### MenuTrees - [Get menu tree list](https://ancon.dev/api/core/menu-trees/get-menu-tree-list.md): `GET /api/v1/Tenants/{tenantId}/MenuTrees` - [Get menu tree details](https://ancon.dev/api/core/menu-trees/get-menu-tree-details.md): `GET /api/v1/Tenants/{tenantId}/MenuTrees/{menuTreeId}` - [Get menu tree item hierarchy](https://ancon.dev/api/core/menu-trees/get-menu-tree-item-hierarchy.md): `GET /api/v1/Tenants/{tenantId}/Outlets/{outletId}/MenuTrees/{menuTreeId}/Hierarchy` ### MetadataTemplates - [Get metadata template list](https://ancon.dev/api/core/metadata-templates/get-metadata-template-list.md): `GET /api/v1/Tenants/{tenantId}/MetadataTemplate` - [Create metadata template](https://ancon.dev/api/core/metadata-templates/create-metadata-template.md): `POST /api/v1/Tenants/{tenantId}/MetadataTemplate` - [Get metadata template details](https://ancon.dev/api/core/metadata-templates/get-metadata-template-details.md): `GET /api/v1/Tenants/{tenantId}/MetadataTemplate/{templateId}` - [Update metadata template](https://ancon.dev/api/core/metadata-templates/update-metadata-template.md): `PUT /api/v1/Tenants/{tenantId}/MetadataTemplate/{templateId}` - [Delete metadata template](https://ancon.dev/api/core/metadata-templates/delete-metadata-template.md): `DELETE /api/v1/Tenants/{tenantId}/MetadataTemplate/{templateId}` ### Orders Orders are the sale history for the outlet, orders are created when a check or checkout is fully paid. The order holds information about what products was sold and how it was paid. - [Get order details list](https://ancon.dev/api/core/orders/get-order-details-list.md): `GET /api/v1/Outlets/{outletId}/Orders/DetailedList` - [Get order details](https://ancon.dev/api/core/orders/get-order-details.md): `GET /api/v1/Outlets/{outletId}/Orders/{id}` ### OutletClientGroups - [Get outlet client list.](https://ancon.dev/api/core/outlet-client-groups/get-outlet-client-list.md): `GET /api/v1/Outlets/{outletId}/ClientGroups` - [Create outlet client group.](https://ancon.dev/api/core/outlet-client-groups/create-outlet-client-group.md): `POST /api/v1/Outlets/{outletId}/ClientGroups` - [Get outlet client group details.](https://ancon.dev/api/core/outlet-client-groups/get-outlet-client-group-details.md): `GET /api/v1/Outlets/{outletId}/ClientGroups/{id}` - [Update outlet client group.](https://ancon.dev/api/core/outlet-client-groups/update-outlet-client-group.md): `PUT /api/v1/Outlets/{outletId}/ClientGroups/{id}` - [Delete outlet client group.](https://ancon.dev/api/core/outlet-client-groups/delete-outlet-client-group.md): `DELETE /api/v1/Outlets/{outletId}/ClientGroups/{id}` ### OutletClients - [Get client list](https://ancon.dev/api/core/outlet-clients/get-client-list.md): `GET /api/v1/Outlets/{outletId}/Clients` ### Outlets Outlet is the physical place where the sales happen, it is the restaurant or bar. - [Update outlet](https://ancon.dev/api/core/outlets/update-outlet.md): `PUT /api/v1/Outlets/{outletId}` - [Get outlet details](https://ancon.dev/api/core/outlets/get-outlet-details-v1.1.md): `GET /api/v1.1/Outlets/{outletId}` ### ProductGroups - [Get product group details](https://ancon.dev/api/core/product-groups/get-product-group-details.md): `GET /api/v1/Tenants/{tenantId}/ProductGroups/{id}` - [Delete product group](https://ancon.dev/api/core/product-groups/delete-product-group.md): `DELETE /api/v1/Tenants/{tenantId}/ProductGroups/{id}` - [Get product group list](https://ancon.dev/api/core/product-groups/get-product-group-list.md): `GET /api/v1/Tenants/{tenantId}/ProductGroups` - [Create product group v1.1](https://ancon.dev/api/core/product-groups/create-product-group-v1-1.md): `POST /api/v1.1/Tenants/{tenantId}/ProductGroups` - [Update product group v1.1](https://ancon.dev/api/core/product-groups/update-product-group-v1-1.md): `PUT /api/v1.1/Tenants/{tenantId}/ProductGroups/{id}` ### Products Products use a draft/publish flow. This means any updates made on a product created / mopdifies a draft(copy) of the product which can be worked on with many update requestsuntil finally when you want to publish / apply the changes the 'Publish product' endpont must be called for any change to take affect. To get the product images use cdn: https://{environment}.media.ancon.io/{tenantId}/product/{productId}/{imageId} Production does not have an environment prefix then just use https://media.ancon.io/{tenantId}/product/{productId}/{imageId} - [Get product list](https://ancon.dev/api/core/products/get-product-list.md): `GET /api/v1/Tenants/{tenantId}/Products` - [Create product draft](https://ancon.dev/api/core/products/create-product-draft.md): `POST /api/v1/Tenants/{tenantId}/Products` - [Update product](https://ancon.dev/api/core/products/update-product.md): `PUT /api/v1/Tenants/{tenantId}/Products/{productId}` - [Delete product](https://ancon.dev/api/core/products/delete-product.md): `DELETE /api/v1/Tenants/{tenantId}/Products/{productId}` - [Publish product](https://ancon.dev/api/core/products/publish-product.md): `PUT /api/v1/Tenants/{tenantId}/Products/{productId}/publish` - [Update product availabilities](https://ancon.dev/api/core/products/update-product-availabilities.md): `PUT /api/v1/Tenants/{tenantId}/Products/{productId}/productAvailabilities` - [Update product outlet shares](https://ancon.dev/api/core/products/update-product-outlet-shares.md): `PUT /api/v1/Tenants/{tenantId}/Products/{productId}/shares` - [Create product variant](https://ancon.dev/api/core/products/create-product-variant.md): `POST /api/v1/Tenants/{tenantId}/Products/{productId}/variants` - [Update product variant](https://ancon.dev/api/core/products/update-product-variant.md): `PUT /api/v1/Tenants/{tenantId}/Products/{productId}/variants/{variantId}` - [Update product tags](https://ancon.dev/api/core/products/update-product-tags.md): `PUT /api/v1/Tenants/{tenantId}/Products/{productId}/tags` - [Update product meta data](https://ancon.dev/api/core/products/update-product-meta-data.md): `PUT /api/v1/Tenants/{tenantId}/Products/{productId}/metadata` - [Update sub products](https://ancon.dev/api/core/products/update-sub-products.md): `PUT /api/v1/Tenants/{tenantId}/Products/{productId}/SubProducts` - [Get product details v1.1](https://ancon.dev/api/core/products/get-product-details-v1-1.md): `GET /api/v1.1/Tenants/{tenantId}/Products/{id}` ### SaleSources - [Get Sale source list](https://ancon.dev/api/core/sale-sources/get-sale-source-list.md): `GET /api/v1/Tenants/{tenantId}/SaleSources` ### Sections - [Get section list](https://ancon.dev/api/core/sections/get-section-list.md): `GET /api/v1/Outlets/{outletId}/Sections` - [Get status section](https://ancon.dev/api/core/sections/get-status-section.md): `GET /api/v1/Outlets/{outletId}/Sections/{sectionId}/Status` - [Get section tables](https://ancon.dev/api/core/sections/get-section-tables.md): `GET /api/v1/Outlets/{outletId}/Sections/{sectionId}/Tables` ### SettlementReports - [Get Adyen settlement report list](https://ancon.dev/api/core/settlement-reports/get-adyen-settlement-report-list.md): `GET /api/v1/Outlets/{outletId}/SettlementReports` ### Tables - [Get table list](https://ancon.dev/api/core/tables/get-table-list.md): `GET /api/v1/Outlets/{outletId}/Tables` - [Update external id](https://ancon.dev/api/core/tables/update-external-id.md): `PUT /api/v1/Outlets/{outletId}/Tables/{tableId}` ### Tags - [Get tag list](https://ancon.dev/api/core/tags/get-tag-list.md): `GET /api/v1/Tenants/{tenantId}/Tags` ### Taxes - [Get tax details](https://ancon.dev/api/core/taxes/get-tax-details.md): `GET /api/v1/Tenants/{tenantId}/Taxes/{id}` - [Get tax list](https://ancon.dev/api/core/taxes/get-tax-list.md): `GET /api/v1/Tenants/{tenantId}/Taxes` ### Tenants Tenant is a collection of outlets and has entities settings attached to it. - [Get tenant details](https://ancon.dev/api/core/tenants/get-tenant-details.md): `GET /api/v1/Tenants` - [Get outlet list](https://ancon.dev/api/core/tenants/get-outlet-list.md): `GET /api/v1/Tenants/Outlets` ### TenantUsers - [Get tenant user details](https://ancon.dev/api/core/tenant-users/get-tenant-user-details.md): `GET /api/v1/Tenants/{tenantId}/TenantUsers/{tenantUserId}` ### Tickets - [Get ticket details](https://ancon.dev/api/core/tickets/get-ticket-details.md): `GET /api/v1/Outlets/{outletId}/Tickets/{ticketId}` - [Get ticket details list](https://ancon.dev/api/core/tickets/get-ticket-details-list.md): `GET /api/v1/Outlets/{outletId}/Tickets/DetailedList` ### UpsellGroups - [Get upsell group details](https://ancon.dev/api/core/upsell-groups/get-upsell-group-details.md): `GET /api/v1/Tenants/{tenantId}/UpsellGroups/{upsellGroupsId}` - [Get upsell group list](https://ancon.dev/api/core/upsell-groups/get-upsell-group-list.md): `GET /api/v1/Tenants/{tenantId}/UpsellGroups` ### WayOfPayments - [Get way of payment details](https://ancon.dev/api/core/way-of-payments/get-way-of-payment-details.md): `GET /api/v1/Tenants/{tenantId}/WayOfPayments/{id}` - [Get way of payment list](https://ancon.dev/api/core/way-of-payments/get-way-of-payment-list.md): `GET /api/v1/Tenants/{tenantId}/WayOfPayments` - [Get way of payment details](https://ancon.dev/api/core/way-of-payments/get-way-of-payment-details-v1.1.md): `GET /api/v1.1/Tenants/{tenantId}/WayOfPayments/{id}` - [Get way of payment list](https://ancon.dev/api/core/way-of-payments/get-way-of-payment-list-v1.1.md): `GET /api/v1.1/Tenants/{tenantId}/WayOfPayments` - [Get way of payment details](https://ancon.dev/api/core/way-of-payments/get-way-of-payment-details-v1.2.md): `GET /api/v1.2/Tenants/{tenantId}/WayOfPayments/{id}` - [Get way of payment list](https://ancon.dev/api/core/way-of-payments/get-way-of-payment-list-v1.2.md): `GET /api/v1.2/Tenants/{tenantId}/WayOfPayments` ### Checks - Events Event payload schemas. These are not HTTP endpoints - they document the JSON structure sent via WebSocket when events occur. - [CheckCreatedEvent_V20](https://ancon.dev/api/core/checks-events/check-created-event-v20.md): `EVENT /websocket/events/checks/CheckCreatedEvent` - [CheckUpdatedEvent_V20](https://ancon.dev/api/core/checks-events/check-updated-event-v20.md): `EVENT /websocket/events/checks/CheckUpdatedEvent` - [CheckDeletedEvent_V20](https://ancon.dev/api/core/checks-events/check-deleted-event-v20.md): `EVENT /websocket/events/checks/CheckDeletedEvent` - [CheckMovedEvent_V20](https://ancon.dev/api/core/checks-events/check-moved-event-v20.md): `EVENT /websocket/events/checks/CheckMovedEvent` - [CheckPaidEvent_V20](https://ancon.dev/api/core/checks-events/check-paid-event-v20.md): `EVENT /websocket/events/checks/CheckPaidEvent` - [CheckPaymentStatusUpdatedEvent_V20](https://ancon.dev/api/core/checks-events/check-payment-status-updated-event-v20.md): `EVENT /websocket/events/checks/CheckPaymentStatusUpdatedEvent` - [CheckUpdatedCustomNameEvent_V20](https://ancon.dev/api/core/checks-events/check-updated-custom-name-event-v20.md): `EVENT /websocket/events/checks/CheckUpdatedCustomNameEvent` - [CheckMetadataUpdatedEvent_V20](https://ancon.dev/api/core/checks-events/check-metadata-updated-event-v20.md): `EVENT /websocket/events/checks/CheckMetadataUpdatedEvent` - [ExchangeRatesUpdatedEvent_V20](https://ancon.dev/api/core/checks-events/exchange-rates-updated-event-v20.md): `EVENT /websocket/events/checks/ExchangeRatesUpdatedEvent` 30 deprecated endpoints are left out of this index; their pages still exist and name the replacement. ## Voucher API Bookkeeping: voucher bases and settlement reports. Base URL: `https://voucher-api.ancon.io` · OpenAPI spec: https://ancon.dev/specs/voucher.json · API version: public-v1 Authenticate every request with an `Access-Token` header. See https://ancon.dev/get-started.md. ### SettlementReports - [Get settlement report as SIE](https://ancon.dev/api/voucher/settlement-reports/get-settlement-report-as-sie.md): `GET /public/api/v1/Outlets/{outletId}/SettlementReports/{settlementReportId}/SIE` - [Get settlement report](https://ancon.dev/api/voucher/settlement-reports/get-settlement-report.md): `GET /public/api/v1/Outlets/{outletId}/SettlementReports/{settlementReportId}` ### VoucherBases Voucher basis can be in two statuses: Draft: The ongoing voucherbasis, each new order will be added to the voucher basis in draft. Published: Each day / when configured in outlet settings a new draft will be created and the current one is moved to published status. - [Get voucher basis list](https://ancon.dev/api/voucher/voucher-bases/get-voucher-basis-list.md): `GET /public/api/v1/Outlets/{outletId}/OrderVoucherBases` - [Get voucher basis as SIE](https://ancon.dev/api/voucher/voucher-bases/get-voucher-basis-as-sie.md): `GET /public/api/v1/Outlets/{outletId}/OrderVoucherBases/{voucherBasisId}/SIE` - [Get voucher basis as PDF](https://ancon.dev/api/voucher/voucher-bases/get-voucher-basis-as-pdf.md): `GET /public/api/v1/Outlets/{outletId}/OrderVoucherBases/{voucherBasisId}/PDF` - [Get voucher details](https://ancon.dev/api/voucher/voucher-bases/get-voucher-details.md): `GET /public/api/v1/Outlets/{outletId}/OrderVoucherBases/{voucherBasisId}/Voucher` - [Get voucher basis details v1.1](https://ancon.dev/api/voucher/voucher-bases/get-voucher-basis-details-v1-1.md): `GET /public/api/v1.1/Outlets/{outletId}/OrderVoucherBases/{voucherBasisId}` 1 deprecated endpoint is left out of this index; their pages still exist and name the replacement. ## User API Users and companies: customers, companies, guest groups, tenant users. Base URL: `https://user-api.ancon.io` · OpenAPI spec: https://ancon.dev/specs/user.json · API version: public-v1 Authenticate every request with an `Access-Token` header. See https://ancon.dev/get-started.md. ### Companies - [Delete tenant company](https://ancon.dev/api/user/companies/delete-tenant-company.md): `DELETE /public/api/v1/Tenants/{tenantId}/Companies/{companyId}` - [Get tenant company list](https://ancon.dev/api/user/companies/get-tenant-company-list.md): `GET /public/api/v1/Tenants/{tenantId}/Companies` - [Create tenant company](https://ancon.dev/api/user/companies/create-tenant-company.md): `POST /public/api/v1/Tenants/{tenantId}/Companies` - [Get tenant company members list](https://ancon.dev/api/user/companies/get-tenant-company-members-list.md): `GET /public/api/v1/Tenants/{tenantId}/Companies/{companyId}/Members` - [Create tenant company member](https://ancon.dev/api/user/companies/create-tenant-company-member.md): `POST /public/api/v1/Tenants/{tenantId}/Companies/{companyId}/Members` - [Get tenant company members details](https://ancon.dev/api/user/companies/get-tenant-company-members-details.md): `GET /public/api/v1/Tenants/{tenantId}/Companies/{companyId}/Members/{memberId}` - [Update tenant company member](https://ancon.dev/api/user/companies/update-tenant-company-member.md): `PUT /public/api/v1/Tenants/{tenantId}/Companies/{companyId}/Members/{memberId}` - [Delete tenant company member](https://ancon.dev/api/user/companies/delete-tenant-company-member.md): `DELETE /public/api/v1/Tenants/{tenantId}/Companies/{companyId}/Members/{memberId}` - [Update company external reference](https://ancon.dev/api/user/companies/update-company-external-reference.md): `PUT /public/api/v1/Tenants/{tenantId}/Companies/{companyId}/ExternalReference` - [Get company details 1.1](https://ancon.dev/api/user/companies/get-company-details-1-1.md): `GET /public/api/v1.1/Tenants/{tenantId}/Companies/{companyId}` - [Update tenant company](https://ancon.dev/api/user/companies/update-tenant-company-v1.1.md): `PUT /public/api/v1.1/Tenants/{tenantId}/Companies/{companyId}` ### Customers - [Get tenant customer details](https://ancon.dev/api/user/customers/get-tenant-customer-details-v1.1.md): `GET /public/api/v1.1/Tenants/{tenantId}/Customers/{customerId}` - [Get Customer list by tenant](https://ancon.dev/api/user/customers/get-customer-list-by-tenant-v1.1.md): `GET /public/api/v1.1/Tenants/{tenantId}/Customers` - [Assign customer guest group](https://ancon.dev/api/user/customers/assign-customer-guest-group.md): `PUT /public/api/v1.1/Tenants/{tenantId}/Customers/{customerId}/AssignGuestGroup` ### GuestGroups - [Get guest group list by tenant id.](https://ancon.dev/api/user/guest-groups/get-guest-group-list-by-tenant-id.md): `GET /public/api/v1/Tenants/{tenantId}/GuestGroups` ### TenantUsers - [Get tenant user details](https://ancon.dev/api/user/tenant-users/get-tenant-user-details.md): `GET /public/api/v1/Tenants/{tenantId}/TenantUsers/{tenantUserId}` 14 deprecated endpoints are left out of this index; their pages still exist and name the replacement.