# What an integration key can do

> The full list of routes available to an integration key, and what to do if the required method is not in it.

Access of an integration key is checked against the list of routes bound to the key — this is the **first level** of access. The second level — [key role permissions](/en/reference/role-permissions/) — decides what is returned in the response.

The list below is the **base template** that a key receives on creation. The access of a specific key may be wider — sensitive methods are opened separately, by configuring the key’s permissions in BILLZ.

## Authentication

Working with the key and access tokens.

| Method | Route              |
| ------ | ------------------ |
| `POST` | `/v1/auth/login`   |
| `POST` | `/v2/auth/refresh` |

## Company reference data

Read at startup and updated rarely.

| Method | Route                             |
| ------ | --------------------------------- |
| `GET`  | `/v1/company`                     |
| `GET`  | `/v1/shop`                        |
| `GET`  | `/v1/user`                        |
| `GET`  | `/v1/supplier`                    |
| `GET`  | `/v2/category`                    |
| `GET`  | `/v2/brand`                       |
| `GET`  | `/v2/product-characteristic`      |
| `GET`  | `/v2/measurement-unit`            |
| `GET`  | `/v2/product-type`                |
| `GET`  | `/v1/cash-box`                    |
| `GET`  | `/v1/company-payment-type`        |
| `GET`  | `/v2/company-currencies`          |
| `GET`  | `/v2/company-currency-rates`      |
| `GET`  | `/v1/transaction-report-payments` |
| `GET`  | `/v2/write-off-reason`            |

## Catalog

Fetching products and editing product cards.

| Method  | Route                             |
| ------- | --------------------------------- |
| `POST`  | `/v2/product`                     |
| `POST`  | `/v2/product-search-with-filters` |
| `PATCH` | `/v2/product/:id/patch-props`     |
| `GET`   | `/v2/products`                    |

## Sale

The full receipt cycle — from creation to payment.

| Method   | Route                                  |
| -------- | -------------------------------------- |
| `POST`   | `/v1/recalculate-order-bill/:order_id` |
| `PUT`    | `/v2/order-customer-new/:order_id`     |
| `POST`   | `/v2/order-manual-discount/:order_id`  |
| `GET`    | `/v2/order-notes`                      |
| `POST`   | `/v2/order-payment/:order_id`          |
| `POST`   | `/v2/order-product/:order_id`          |
| `POST`   | `/v2/order`                            |
| `POST`   | `/v2/order/create_postpone`            |
| `GET`    | `/v2/order/:id`                        |
| `DELETE` | `/v2/order/:id`                        |
| `PATCH`  | `/v2/order/:id`                        |
| `POST`   | `/v2/order/return-postpone`            |

## Gift cards

| Method | Route                            |
| ------ | -------------------------------- |
| `POST` | `/v1/gift-card/activate-list`    |
| `GET`  | `/v1/gift-card/search`           |
| `POST` | `/v1/order-gift-card-remove/:id` |
| `PUT`  | `/v1/order-gift-card/:id`        |

## Customers

| Method  | Route                          |
| ------- | ------------------------------ |
| `GET`   | `/v1/client`                   |
| `POST`  | `/v1/client`                   |
| `GET`   | `/v1/client-by-chat-id`        |
| `POST`  | `/v1/client-card`              |
| `PUT`   | `/v1/client/:id`               |
| `GET`   | `/v1/customer/:id`             |
| `PATCH` | `/v1/customer/set-balance/:id` |
| `PATCH` | `/v1/customer/bulk`            |
| `GET`   | `/v1/debt`                     |
| `GET`   | `/v1/debt-stats`               |

## Transfers between shops

| Method   | Route                     |
| -------- | ------------------------- |
| `GET`    | `/v2/transfer`            |
| `POST`   | `/v2/transfer`            |
| `GET`    | `/v2/transfer-items/:id`  |
| `DELETE` | `/v2/transfer/:id`        |
| `POST`   | `/v2/transfer/:id/add`    |
| `POST`   | `/v2/transfer/:id/send`   |
| `PUT`    | `/v2/transfer/finish/:id` |
| `PUT`    | `/v2/transfer/update/:id` |

## Write-offs

| Method | Route                      |
| ------ | -------------------------- |
| `POST` | `/v2/write-off`            |
| `POST` | `/v2/write-off/:id/add`    |
| `PUT`  | `/v2/write-off/cancel/:id` |
| `PUT`  | `/v2/write-off/finish/:id` |

## Imports

| Method | Route                                     |
| ------ | ----------------------------------------- |
| `GET`  | `/v2/import`                              |
| `POST` | `/v2/product-import/create-with-products` |

## Purchase orders

| Method  | Route                              |
| ------- | ---------------------------------- |
| `GET`   | `/v2/supplier-order`               |
| `POST`  | `/v2/supplier-order`               |
| `GET`   | `/v2/supplier-order-products/:id`  |
| `PUT`   | `/v2/supplier-order/add-item`      |
| `PATCH` | `/v2/supplier-order/change-status` |
| `PUT`   | `/v2/supplier-order/update/:id`    |

## Stocktaking

Reading the list only.

| Method | Route             |
| ------ | ----------------- |
| `GET`  | `/v2/stocktaking` |

## Reports

Methods for retrieving shop activity data in the form of reports.

| Method | Route                                    |
| ------ | ---------------------------------------- |
| `GET`  | `/v1/customer-general-table`             |
| `GET`  | `/v1/customer-purchases-table`           |
| `GET`  | `/v1/general-report-table`               |
| `GET`  | `/v1/import-report-table`                |
| `GET`  | `/v1/product-general-table`              |
| `GET`  | `/v1/product-sells-by-suppliers-table`   |
| `GET`  | `/v1/profit-and-lose`                    |
| `GET`  | `/v1/report-product-performance-table`   |
| `GET`  | `/v1/seller-general-table`               |
| `GET`  | `/v1/stock-report-table`                 |
| `GET`  | `/v1/stocktaking-summary-table`          |
| `GET`  | `/v1/supplier-order-return-report-table` |
| `GET`  | `/v1/transaction-report-table`           |
| `GET`  | `/v1/transaction-report-totals`          |
| `GET`  | `/v1/write-off-report-table`             |

## Report export

A ready-made Excel file instead of reading the report page by page.

| Method | Route                                        |
| ------ | -------------------------------------------- |
| `POST` | `/v1/cashflow-excel`                         |
| `POST` | `/v1/customer-general-report-excel`          |
| `POST` | `/v1/customer-purchases-report-excel`        |
| `POST` | `/v1/general-report-excel`                   |
| `POST` | `/v1/import-report-excel`                    |
| `POST` | `/v1/product-general-report-excel`           |
| `POST` | `/v1/report-product-performance-excel`       |
| `POST` | `/v1/report-profit-and-lose-excel`           |
| `POST` | `/v1/seller-general-report-excel`            |
| `POST` | `/v1/sells-supplier-report-excel`            |
| `POST` | `/v1/stock-report-excel`                     |
| `POST` | `/v1/stocktaking-summary-table-excel-export` |
| `POST` | `/v1/supplier-order-returned-export`         |
| `POST` | `/v1/transaction-report-excel`               |
| `POST` | `/v1/transfer-report-excel-export`           |
| `POST` | `/v1/write-off-report-table-export`          |

> **What to do if the required method is not in the list**
>
> Access to a method outside the list is requested separately — specifying the route, HTTP method and purpose. Sometimes another method from the list covers the task: for example, instead of searching sales — the transaction report for a period.

> **The method is in the list, but the data is incomplete**
>
> Zero supply price, ignored `shop_ids`, reset `only_deleted` and an asynchronous refusal when creating a transfer — [key role permissions](/en/reference/role-permissions/).

Analysis of `403` — in [troubleshooting](/en/troubleshooting/403-and-404/).