# 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.
