# Altegio REST API This is an official document describing the interaction with the Altegio business managment platform. API allows third-party developers to perform most operations with the Altegio data. When designing methods, we tried to adhere to the [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) architecture. * All interaction with protocol are transpire by TLS encryption (from 1.2 version) * Limits are `200` requests per minute or `5` requests per second per IP address * URL API: `https://api.alteg.io/api` **If you encounter difficulties when working with the API, please carefully review the documentation, including the required headers, parameters, and the structure of the request body in the JSON example.** If you're having trouble resolving the issue on your own, feel free to contact us at api@alteg.io. Please include the request URL, headers, request body, and the response you received in your message. # API Versioning The API uses URL path versioning. Currently available versions: - **V1** (`/v1/...`) - Stable, full-featured API - **V2** (`/v2/...`) - New endpoints with improved design Both versions are production-ready. New features may be released in V2 only. V1 endpoints are maintained for backward compatibility. **Base URL:** `https://api.alteg.io/api` **Example requests:** - V1: `GET https://api.alteg.io/api/v1/companies` - V2: `GET https://api.alteg.io/api/v2/companies/{id}/tags` # Integration cases with Altegio * Data exchange with automation, accounting or CRM software * **Integration of Online Booking into third-party websites and mobile applications.** Allows embedding of Online Booking forms into external platforms, such as business catalogs, branded apps, and other partner services. * Data collection and analysis for business intelligence systems / Development of custom reporting and analytics tools * Chat bots and virtual assistants for appointment scheduling and client management # General description of data exchange with Altegio The Altegio integration API includes two groups of methods: * Methods that require both user authorization and partner authorization * Methods that require partner authorization only (no user authorization) #### API Request Authorization Accessing both the first and second groups of methods requires *partner authorization*. I.e. passing the partner's unique hash key. API requests are authorized in accordance with [RFC 6749 "Resource Owner Password Credentials Grant"](https://tools.ietf.org/html/rfc6749#section-4.3). When making API requests the HTTP authorization header must include the access key in the following format: ``` Authorization: Bearer ``` To obtain this key, you need to register in the [marketplace](https://app.alteg.io/appstore/developers/1) – it will be located in the 'Developer account' "Account settings" under "Account details" tab. To get the user API key, use the **auth** method, or, if you are creating an integration application, use the key located in an application's settings under the "API Access" section. The key itself must also be sent in the request header (after the partner key, separated by a comma): ``` Authorization: Bearer , User ``` Whether user authorization is required to work with specific entities is indicated in the data format descriptions and sample queries. Please note that not all users have access to all methods and data, depending on their assigned access rights. #### Date and time The most of dates in the API are represented as strings in ISO 8601 format. Exluding cases specified otherwise in outdated or deprecated methods. ``` "2026-09-21T23:00:00.000-05:00" ``` Service durations and other time-related values are provided in **seconds**. For example, a 15-minute service should be represented as: ``` { "length": 900 } ``` # Core Entities of the Altegio API The API allows to work with most of the platform's entities. However, please note that there are inconsistencies in the technical terminology: method and variable names, as well as terminology, may differ between the user interface and the documentation ### Locations [Locations in the product knowledge base](https://alteg.io/en/support/knowledge-base/4835906213149-general-information-location-settings/) A Location is an individual business unit that operates within the platform. Each Location belongs to a Chain. For single-location businesses, the platform still creates a single-location Chain. *Also known as: company, branch, filial, salon* ### Chains [Chains in the product knowledge base](https://alteg.io/en/support/knowledge-base/4905257602333-main-chain-settings/) A Chain is a group of multiple Locations managed as a single business network. Chain-level settings, promotions, service catalogs, and loyalty rules may be inherited by all child Locations while each Location can still override them where needed. *Also known as: groups, networks, salon_groups* ### Users [Users in the product knowledge base](https://alteg.io/en/support/knowledge-base/4835071824157-authorization-in-altegio/) A User is an account that provides authenticated access to one or more Locations. Access scope is defined by Roles, which are predefined sets of Access Rights. If a User does not have access to a module or method, the API returns HTTP 403. Users can also be linked to Chains, which provide a different set of access rights and are required for certain Chain-level requests. Each User is linked to one Team Member within a Location and may be linked to different Team Members across multiple Locations. Operational context (available Services, Schedule, permissions) depends on the current Location and Team Member binding. Most API methods require the User to be authorised (a valid token obtained) and to have explicit access to the target Location. ### Team members and Positions [Team members in the product knowledge base](https://alteg.io/en/support/knowledge-base/175105/) · [Positions in the product knowledge base](https://alteg.io/en/support/knowledge-base/4846458760349-positions-of-staff-members/) A Team Member is an individual within a Location who participates in operational processes: provides Services within Appointments, creates or manages reservations, or works with financial and analytical data (for example, a professional, cashier, administrator, or accountant). Team Members do not directly define access rights in the API, but they determine the business role and workload of a person inside a Location. Positions are logical groups of Team Members (similar to folders) that help structure staff by departments, functions, or specialisation. In some configurations, Positions are used to filter available reports. *Also known as: employee, staff, staff_member, master* ### Resources [Resources in the product knowledge base](https://alteg.io/en/support/knowledge-base/4869516836637-resources/) Resources are limited items required to provide Services (rooms, chairs, devices, machines). A Resource cannot be used in parallel for multiple Appointments; it is reserved when a Service linked to that Resource is booked. ### Schedule & Time Slots [Schedule in the product knowledge base](https://alteg.io/en/support/knowledge-base/4846253288989-work-schedule-staff/) A Schedule is a set of time intervals during which a Team Member or Resource is available to provide Services. A Time Slot is a specific available interval within the Schedule that can be booked online for an Appointment with a Team Member. ### Appointments & Visits [Visits in the product knowledge base](https://alteg.io/en/support/knowledge-base/24496357742749-new-visit-window/) An Appointment is a scheduled time interval during which a specific Team Member provides one or more Services or sells Products to a specific Client. A Visit is a group of one or more Appointments that take place during a single Client presence at a Location. Grouping rules depend on the Location settings. *Also known as: record, booking* ### Events [Events in the product knowledge base](https://alteg.io/en/support/knowledge-base/4847139440413-group-events-creation-and-editing/) An Event is a scheduled time slot for a group Service where multiple Clients can book simultaneously. Unlike individual Appointments, an Event has a capacity limit defining the maximum number of participants. Events are used for group classes, workshops, webinars, and any service that can serve multiple Clients at the same time with a single Team Member. *Also known as: activity, group event* ### Clients [Clients in the product knowledge base](https://alteg.io/en/support/knowledge-base/4861296116253-client-database-filters/) A Client is an individual who books, receives, or has received Services or Products from a Location. Client data is used for scheduling, communication, and analytics. ### Services and Service Categories [Services in the product knowledge base](https://alteg.io/en/support/knowledge-base/4838077232925-adding-categories-and-services/) A Service is a predefined type of work or procedure that can be provided to a Client by a Team Member within a Location. Each Service has key parameters such as duration, price (or price range), and applicable resources. Service Categories are logical groups used to organise Services for configuration, reporting, and client-facing catalogs. ### Products and Product Categories [Products in the product knowledge base](https://alteg.io/en/support/knowledge-base/4850363619485-products-initial-configuration/) A Product is a tangible or consumable item that can be sold to a Client or used as part of a Service. Product Categories are logical groups used to organise Products for inventory management, reporting, and sales operations. *Also known as: goods, items* ### Inventories [Inventory in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/inventory/) Inventories represent physical or logical Warehouses used to store and track Products and consumables. Inventory operations (receipts, write-offs, transfers) ensure that product usage in Visits is reflected in stock levels and financial reports. *Also known as: storages, warehouses* ### Suppliers [Suppliers in the product knowledge base](https://alteg.io/en/support/knowledge-base/4867739493021-suppliers-and-partners-information-and-editing/) Suppliers and Partners are counterparties used in Inventory and Finance modules to track product purchases, settlements, and mutual transactions with external companies. *Also known as: partners* ### Location accounts [Location accounts in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/working-with-accounts-and-cash-registers/) Location Accounts are accounts (cash registers or bank accounts) attached to a specific Location. They are used to record payments for Visits, product sales, and other financial operations, and they define how money flows are grouped in financial reports. *Also known as: cashdesks, cash registers* ### Payment methods [Payment methods in the product knowledge base](https://alteg.io/en/support/knowledge-base/4868729320349-creating-new-item-of-payment/) Payment methods define how payments are recorded in the system (cash, card, bank transfer, online acquiring, loyalty instruments). Each method is linked to specific Accounts and can have its own commission and reporting logic. ### Payroll rules [Payroll in the product knowledge base](https://alteg.io/en/support/knowledge-base/167548/) Payroll rules define how staff compensation is calculated based on Visits, Products, Memberships, tips, and other metrics. They describe commission schemes, fixed payments, and deductions. ### Client cards [Client cards in the product knowledge base](https://alteg.io/en/support/knowledge-base/4861029589661-information-in-client-s-card/) A Client Card is a unified profile that stores balances, active memberships, certificates, and participation in loyalty programs for a specific Client across one Location or an entire Chain. ### Memberships and their Types [Memberships in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/memberships/) A Membership is a prepaid product that gives a Client the right to receive a set number of services or discounts over a defined period. Membership Types define the rules: which services are included, how many visits are available, validity period, and usage restrictions. *Also known as: abonements* ### Certificates and their Types [Certificates in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/gift-cards/) A Certificate is a prepaid value or service voucher that can be used to pay for Services and Products. Certificate Types define how certificates are sold, accounted for, and redeemed, including validity period and usage restrictions. ### Loyalty programs [Loyalty programs in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/loyalty-programs/) Loyalty programs combine bonus accrual, cumulative discounts and referral promotions to increase repeat visits and average spend. Any loyalty instrument must be linked to a specific Client Card so that bonuses, discounts, and balances are applied consistently across Visits. ### Client accounts [Client accounts in the product knowledge base](https://alteg.io/en/support/knowledge-base/4905494221085-deposit-accounts/) Client Accounts are internal balances (deposits) stored on the Client Card. They are used to prepay future Visits, store overpayments, or keep store credit that can be partially or fully redeemed in subsequent Visits and sales. *Also known as: deposits* ### Subdivisions [Subdivisions in the product knowledge base](https://alteg.io/en/support/knowledge-base/4905355089821-subdivisions/) Subdivisions are higher-level groups used to organise Services across a Chain (for example, "Hair", "Nails", "Spa"). They help structure large catalogs, simplify analytics, and control visibility of Services in online booking. ### Custom fields [Custom fields in the product knowledge base](https://alteg.io/en/support/knowledge-base/4858681446941-additional-fields/) Custom fields are additional attributes configured by the Location to store extra data in Visits or other entities (for example, medical notes, internal IDs). They extend the standard schema without changing the core data model. *Also known as: additional fields* ### Tags [Tags in the product knowledge base](https://alteg.io/en/support/knowledge-base/4861319864861-client-categories/) · [Filters in the product knowledge base](https://alteg.io/en/support/knowledge-base/4861296116253-client-database-filters/) Tags allow users to group Clients, Appointments, or Events. They are used for analytics, targeted communications, and certain loyalty scenarios. *Also known as: labels, segments, categories* ### Integrations HUB [Integrations in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/integration-marketplace/) Integrations HUB is a catalog of external applications and services connected to Altegio (telephony, messaging, CRM, loyalty, etc.). It standardises how integrations are discovered, installed, configured, and monetised. Version: 1.0.1 License: Altegio API Agreement ## Servers ``` https://api.alteg.io/api ``` ## Security ### bearer Type: apiKey In: header Name: Authorization ### user Type: apiKey In: header Name: Authorization ### BearerPartner Type: http Scheme: bearer Bearer Format: Bearer {PartnerToken} ### BearerPartnerUser Type: http Scheme: bearer Bearer Format: Bearer {PartnerToken}, User {UserToken} ## Download OpenAPI description [Altegio REST API](https://developer.alteg.io/_bundle/en/index.yaml) ## Authentication B2C End-customer authentication methods. Get access tokens required for some API operations. ### Send SMS Verification Code - [POST /v1/book_code/{location_id}](https://developer.alteg.io/en/authentication-b2c/send_booking_verification_code.md): + Request body + phone (required, string, '+13155550175') - phone to which the code will be sent + fullname (option, sring, James) - Client name ### Authorize Online Booking User - [POST /v1/booking/auth](https://developer.alteg.io/en/authentication-b2c/authorize_online_booking_user.md): When a user of an online account changes their password, their API key will change and a new authorization will be required | Attribute | Type | Description | | ------------- | ------------- | ------------- | | login | string | The visitor's phone number in the format +13155550175, or their email address. | | password | string | Visitor password | ### Log in with phone number and code - [POST /v1/user/auth](https://developer.alteg.io/en/authentication-b2c/log_in_with_phone_number_and_code.md): To access both online and offline (e.g., phone-made) appointments, the user must log in by verifying their phone number. This is done by requesting a confirmation code to be sent via SMS using the "SMS phone number verification code" endpoint. ## Authentication ### Authorize Online Booking User - [POST /v1/booking/auth](https://developer.alteg.io/en/authentication-b2c/authorize_online_booking_user.md): When a user of an online account changes their password, their API key will change and a new authorization will be required | Attribute | Type | Description | | ------------- | ------------- | ------------- | | login | string | The visitor's phone number in the format +13155550175, or their email address. | | password | string | Visitor password | ## Online Booking Public APIs for integrating online booking into third-party websites and mobile applications. ## Getting Started **Before implementing online booking, you must retrieve the Booking Form configuration.** The Booking Form ID is typically embedded in the widget URL subdomain (e.g., `https://b123.alteg.io` where `123` is the form ID). This configuration is essential because it defines: - **Booking flow steps** — The order and visibility of steps (service selection, team member selection, date/time, contact info). Some steps may be hidden or have pre-set defaults. - **Phone verification** — Whether SMS code confirmation is required before creating a booking. - **Location scope** — Whether the form applies to a single location (`company_id`) or an entire chain (`group_id`). For chain forms, you'll need to fetch the list of available locations separately. - **Required fields** — Whether comments are mandatory, which agreements to display, etc. - **Localization** — Available languages and default language for the booking interface. **Ignoring these settings will lead to failed bookings** — for example, attempting to create a booking without SMS verification when `phone_confirmation` is enabled, or skipping required steps. ## Typical Integration Flow 1. **Get Booking Form Configuration** — Retrieve form settings and determine the booking flow 2. **Get Services** — Fetch available services (respecting any pre-selected defaults) 3. **Get Team Members** — Fetch available team members for selected services 4. **Get Available Dates** — Fetch dates with available time slots 5. **Get Time Slots** — Fetch specific available times for the selected date 6. **Validate Parameters** — Optionally validate booking parameters before submission 7. **Send SMS Verification Code** — If `phone_confirmation` is enabled in the form configuration, send a verification code to the client's phone number 8. **Create Booking** — Submit the booking with client details, selected options, and SMS verification code (if required) 9. **Get Booking Details** — After successful creation, fetch the full booking details to display a confirmation screen to the user ### Get Booking Form Configuration - [GET /v1/bookform/{id}](https://developer.alteg.io/en/online-booking/get_booking_form_config.md): Each Altegio client can create an unlimited number of Online Booking forms with different designs and booking scenarios. Typically, the ID of a booking form is embedded in the subdomain. For example: https://b123.alteg.io, where 123 is the booking form ID. This ID can be used to retrieve all necessary parameters for implementing Online Booking and to determine whether the booking applies to a specific location or a location chain. For chain widgets, you will also need to call the [GET] /locations method with the company_id filter to retrieve the list of locations available for booking. The object containing the Online Booking form settings includes the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | steps | Array of objects | Booking form steps with custom settings | | style | object | Booking form design settings | | group_id | number | Location chain ID (0 - if the booking form is for a non-chain location) | | company_id | number | Location ID (always returned, used to get additional settings) | | phone_confirmation | boolean | Do I need to confirm the phone by SMS (if groupid = 0 (not a group form), otherwise look in the settings of each location separately) | language | string | Booking form language (code from langs array) | | langs | array of object | List of widget languages | comment_required | boolean | Whether the field with a comment within booking is required | google_analytics_id | string | Google Analytics ID | facebook_pixel_id | string | Facebook Pixel ID | sms_enabled | boolean | Is sending SMS available? | comment_input_name | string (optional) | Title for the field with a comment to the booking (if not set, the default value is used) | booking_notify_text | string (optional) | The text of the notification that is displayed (if set) at the step of entering contact data | is_show_privacy_policy | boolean | Whether it is necessary to display the text of the agreement on the personal data processing policy to the user | specialization_display_mode | number | Display the specialization or position of the team member. 0 - Specialization, 1 - Position The steps array consists of objects that have the following fields: | Field | Type | Description | For what steps is specified | | ------------- | ------------- | ------------- | ------------- | | step | string | Step city/company/service/team member/datetime/contact/confirm | | title | string | Name of the step to display in the interface | For everyone | | number | number | What number should this step be displayed on (starting from 1) | For everyone | | default | string or number | The default value for this step, if set | For all but datetime | | hidden | boolean | Hide this step when booking or not | For everyone | | date_hidden | boolean | Hide this step when booking or not | For datetime | | time_hidden | boolean | Hide this step when booking or not | For datetime | | date_default | string | The default value for this step, if set | For datetime | | time_default | number | The default value for this step, if set | For datetime | The style object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | show header | boolean | Show header and menu or not | | logo | string | Path to logo image | | header_background | string | Path to subtitle background image | | menu_background | string | Path to menu background image | | primaryPalette | string | The main color of the form (all colors from the list: red, pink, purple, deep-purple, indigo, blue, light-blue, cyan, teal, green, light-green, lime, yellow, amber, orange, deep-orange, brown , grey, blue-grey, white, black) | | accentPalette | string | Form secondary color (subtitle semi-transparent cover) | | warnPalette | string | Booking form buttons color | | backgroundPalette | string | Booking form background color | ### Get Internationalization Options - [GET /v1/i18n/{lang_code}](https://developer.alteg.io/en/online-booking/get_i18n_options.md): Translation is available in one of the languages: - Latvian - 'lv-LV' - English - 'en-US' - Estonian - 'ee-EE' - Lithuanian - 'lt-LT' - German - 'de-DE' - Ukrainian - 'uk-UK' ### Get Services Available for Booking - [GET /v1/book_services/{location_id}](https://developer.alteg.io/en/online-booking/get_services_available_for_booking.md): The object of services available for booking has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | categories | array of objects | Array of service categories (you can't book a category) | | services | array of objects | Services available for booking by category | An object from the categories array, has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | Category ID | | title | string | Category name | | gender | number | Category belonging to gender (1 - male, 2 - female, 0 - not specified) | | weight | number | Category weight. Categories are sorted by weight, heavier ones first | | api_id | string | External Category ID | An object from the services array, has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | Service ID | | title | string | Service name | | category_id | number | Identifier of the category to which the service belongs | | weight | number | Category weight. Services are sorted by weight, heavier ones first | | price_min | number | The minimum cost of the service | | price_max | number | Maximum cost of the service | | discount | number | Service discount | | comment | string | Comment on the service | | active | number | Is the service active | | prepaid | string | Online payment status | | gender | number | Gender for which the service is provided | | session_length | number | Service duration in seconds (only if filter by team member is set) | | image | string | Image services | If you need to get the services provided by a specific team member, then you need to use the filter by team member. The following filters are available: + staff_id: team member ID. If you need services that only the selected team member provides + datetime: date (in iso8601 format). Specifies the desired appointment date. Use this parameter to retrieve services that can be booked with the selected team member on that specific date. + service_ids: An array of service IDs. If a team member is already selected and the time and service(s) are part of an existing appointment, this parameter should be used to select an additional service. ### Get Team Members Available for Booking - [GET /v1/book_staff/{location_id}](https://developer.alteg.io/en/online-booking/get_team_members_available_for_booking.md): Each object from the array of team members available for booking has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | team member ID | | name | string | team member name | | specialization | string | team member specialization | | position | object | team member position | | bookable | boolean | Does the team member have sessions available for booking | | weight | number | team member weight. When withdrawing, team members are sorted by weight, heavier first | | show_rating | number | Whether to show team member's rating (1 - show, 0 - don't show) | | rating | number | team member rating | | votes_count | number | Number of votes rated team member | | comments_count | number | Number of comments to a team member | | avatar | string | Path to team member avatar file | | information | string | Additional information about the team member (HTML format) | | session_date | string | Date of the next day that there are available sessions (only for bookable = true) | The following filters are available: + service_ids: Array of service IDs. If you need team members who provide only the selected service + datetime: date (in iso8601 format). If you need team members who have sessions for the specified service at the specified time ### Get Nearest Available Time Slots for Team Member - [GET /v1/book_staff_seances/{location_id}/{team_member_id}](https://developer.alteg.io/en/online-booking/get_nearest_time_slots.md): the team member's nearest sessions object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | session_date | string | Next date with available sessions | | sessions | array | List of available sessions | The following filters are available: + service_ids: Array of service IDs. If you need sessions, when can you book these services + datetime: date (in iso8601 format) for which you want to get the next sessions ### Get Dates Available for Booking - [GET /v1/book_dates/{location_id}](https://developer.alteg.io/en/online-booking/get_dates_available_for_booking.md): The dates available for booking object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | working_days | array of working days grouped by month | Working days of a team member/organization | | working_dates | array of dates | An array of dates when the team member/organization works | | booking_days | array of days when there are free sessions | Array of days that are available for booking for the specified services | | booking_dates | array of dates | An array of dates when there are free sessions for the service to the selected team member/organization | working days and booking_days have the same format: month:[array of days in this month] For example, this booking_days: "9": [ "4", "5"] "10": [ "14", "25"] Means that on September 4 and 5, and on October 14 and 25 there are free sessions for booking The following filters are available: + service_ids: Array of service IDs. If you need dates when you can book the specified services + staff_id: team member ID. If you need dates when you can book the specified team member + date: Date within a month, if you need dates for a specific month ### Get a List of Time Slots Available for Booking - [GET /v1/book_times/{location_id}/{team_member_id}/{date}](https://developer.alteg.io/en/online-booking/get_time_slots_for_booking.md): The sessions available for booking object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | time | string | Session time (17:30 for example) | | session_length | number | Session duration in seconds | | datetime | datetime | Date and time of the session in ISO8601 format (must be passed when creating the appointment) | The following filters are available: + service_ids: Array of service IDs. If you need sessions, when can you book these services ### Validate Booking Parameters - [POST /v1/book_check/{location_id}](https://developer.alteg.io/en/online-booking/validate_booking_params.md): After generating the appointment parameters, you can validate them to ensure the appointment can be successfully created. The JSON object containing the Online Booking parameters includes the following fields: | Field | Type | Mandatory | Description | | ------------- | ------------- | ------------- | ------------- | | appointments | Array of objects | YES | Booking options (services, team members...) | The appointments array consists of objects that have the following fields: | Field | Type | Mandatory | Description | | ------------- | ------------- | ------------- | ------------- | | id | number | Yes | Appointment ID for post-save feedback (see response to request). | services | array of numbers | NO | Array of IDs of the services the client wants to sign up for | | staff_id | number | YES | ID of the team member the client wants to book with (0 if any team member is selected) | | datetime | datetime | YES | Session date and time in ISO8601 format (passed for each session in the book_times resource)| In response to the parameter check request, an empty response with the code 201 will be returned if the booking parameters are in order and bookings can be created: If the response is JSON with an HTTP code other than 201, then the booking parameters are out of order, and bookings cannot be created. The server may return the following errors during appointment creation: 1. Selected time slot is already taken. Returned with HTTP status code 422 and error code 433. 2. No team members available for booking. Occurs if a default team member was selected but none are available. Returned with HTTP status code 422 and error code 436. 3. Booking time conflict within the same request. One of the selected booking times overlaps with another booking created in the same request. Returned with HTTP status code 422 and error code 437, including the conflicting booking’s id in the appointments array. 4. Service not available for booking The selected service is no longer available (e.g. removed by the location). Returned with HTTP status code 422 and error code 438. ### Create an Online Booking - [POST /v1/book_record/{location_id}](https://developer.alteg.io/en/online-booking/create_online_booking.md): To create a session appointment, provide a JSON object containing the online booking parameters. The object includes the following fields: | Field | Type | Mandatory | Description | | ------------- | ------------- | ------------- | ------------- | | phone | string | YES | Client's phone number (eg +13155550175) | | full name | string | YES | Client name | | email | string | NO | Postal address of the client | | appointments | Array of objects | YES | Booking options (services, team members...) | | code | string | NO | Phone number confirmation code sent via SMS (only needed if you need to confirm the number) | | notify_by_sms | number | NO | Number of hours in advance to send an SMS reminder for the appointment (set to 0 to disable reminders). | | notify_by_email | number | NO | Number of hours in advance to send an email reminder for the appointment (set to 0 to disable the reminder). | | comment | string | NO | Appointment Comment | | api_id | string | NO | External Appointment ID | The appointments array consists of objects that have the following fields: | Field | Type | Mandatory | Description | | ------------- | ------------- | ------------- | ------------- | | id | number | Yes | Appointment ID for post-save feedback (see response to request). | services | array of numbers | NO | Array of IDs of the services the client wants to sign up for | | staff_id | number | YES | ID of the team member the client wants to book with (0 if any team member is selected) | | datetime | datetime | YES | Session date and time in ISO8601 format (passed for each session in the book_times resource)| | custom_fields | key-value object | NO | Custom field values that are returned with the appointment | Custom fields in the appointments array When custom appointment fields are created (see the "Custom Fields" section), you can pass custom values for them during appointment creation. These fields are unique to each location. Once the custom fields are set up, their values can be included in the optional custom_fields parameter. This should be passed as a key–value object, where each key corresponds to the code of the custom field. Example: * location created an custom appointment field with code="my_custom_field" type="number", and a second field code="some_another_field" type="list" * When creating an appointment, another attribute was passed in the appointments array element: "" appointments: [{ ... }, { ... custom_fields: { "my_custom_field": 123, "some_another_field": ["first value", "second value"] } }]" * When this appointment is received by the GET method later, the same value of custom fields will be returned in the response In response to the request to create an appointment, an array of objects will come (the number of objects is equal to the number of objects in the appointments array) with the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | The appointment ID as passed in the original appointments array | | record_id | number | The unique identifier of the appointment created in the system | | record_hash | string | A temporary ID used for deleting the appointment immediately after creation | Errors to be handled: 1. Incorrect SMS verification code. Returned with HTTP status 422 and error code 432. The SMS verification code entered by the user is invalid. 2. Selected time slot is already taken. Returned with HTTP status 422 and error code 433. The selected appointment time is unavailable. The response includes the id of the conflicting appointment from the appointments array. 3. User is blacklisted. Returned with HTTP status 403 and error code 434. The user with the specified phone number is blacklisted and cannot book an appointment. 4. Invalid phone number format. Returned with HTTP status 422 and error code 431. The user's phone number is not in a valid format. 5. Missing client name. Returned with HTTP status 422 and error code 435. The client's name was not provided. 6. No available team members. Returned with HTTP status 422 and error code 436. No team members are available at the selected time (commonly occurs when using a default team member setting). 7. Overlapping appointments in request. Returned with HTTP status 422 and error code 437. One of the selected times overlaps with another appointment in the same request. The response includes the id of the conflicting appointment from the appointments array. ### Get Online Booking Details - [GET /v1/book_record/{location_id}/{record_id}/{record_hash}](https://developer.alteg.io/en/online-booking/get_online_booking_details.md) ### Change Online Booking Date/Time - [PUT /v1/book_record/{location_id}/{record_id}](https://developer.alteg.io/en/online-booking/update_online_booking_datetime.md) ### Book Event - [POST /v1/activity/{location_id}/{event_id}/book](https://developer.alteg.io/en/online-booking/book_event.md) ### Get location privacy policy for online booking - [GET /v1/privacy_policy/{location_id}](https://developer.alteg.io/en/online-booking/get_location_privacy_policy.md): Retrieves the privacy policy configured for a specific location. This endpoint should be called before creating an online booking record to check if the location has a custom privacy policy. If a location has a custom privacy policy configured, the online booking flow must: - Display the policy text to the user - Show a checkbox for accepting the privacy policy - Only proceed with booking creation after the user has checked the acceptance checkbox If no custom policy is configured for the location, the booking can proceed without showing any policy acceptance step. ## Client Personal Cabinet End-customer account. Manage user profile, appointments, and other operations. ### Update Online Booking User Data - [PUT /v1/booking/user](https://developer.alteg.io/en/client-personal-cabinet/update_booking_user.md): Updating a team member’s data in online booking. When updating a phone number, the confirmation_code field must be included in the request. This code should be obtained using the [SMS confirmation code of the phone number to change data](#operation/Send%20SMS%20code%20confirmation%20number%20phone%20for%20change%20data) ### Get Online Booking User Data - [GET /v1/booking/user/data](https://developer.alteg.io/en/client-personal-cabinet/get_booking_user.md): Retrieve online booking user data. ### Update Online Booking User Password - [PUT /v1/booking/user/password](https://developer.alteg.io/en/client-personal-cabinet/update_booking_user_password.md): Updating the password of an online booking user. The response comes with a new user token. ### Send SMS Verification Code for Phone Update - [GET /v1/booking/user/phone_confirmation](https://developer.alteg.io/en/client-personal-cabinet/send_phone_update_verification_code.md): The request must contain one of two parameters: company_id or group_id ### Get User Appointments - [GET /v1/user/records/{record_id}/{record_hash}](https://developer.alteg.io/en/client-personal-cabinet/get_user_appointment_list.md): The JSON Object containing the user appointment parameters has the following fields: | Field | Type | Mandatory | Description | | ------------- | ------------- | ------------- | ------------- | | id | number | YES | Appointment ID | | services | array of numbers | YES | List of ID service appointments | | location | object | YES | location parameters | | staff | object | YES | Parameters of the team member who was booked. Note: "staff" is a legacy field name for team member. | | clients_count | int | YES | Number of clients | | date | string | YES | Session date | | datetime | string | YES | Session date in ISO | | create_date | string | YES | Appointment creation date | | length | number | YES | Session duration | | deleted | boolean | YES | Has the appointment been created ? (true if deleted) | | notify_by_sms | number | NO | Number of hours in advance to send an SMS reminder for the appointment. Set to 0 to disable SMS reminders | | notify_by_email | number | NO | Number of hours in advance to send an email reminder for the appointment. Set to 0 to disable email reminders | | comment | string | YES | Appointment Comment | | master_requested | boolean | YES | Whether a specific team member was specified when appointment (false if "any team member" was specified) | | online | boolean | YES | Indicates whether the appointment was created online by the client (true) or manually by an administrator (false) | | visit_attendance | number | YES | 2 - The user confirmed the appointment, 1 - The user came, the services were provided, 0 - the user was waiting, -1 - the user did not come to visit | | api_id | string | NO | External Appointment ID | | last_change_date | string | NO | Date of the last edit of the appointment | | prepaid | boolean | NO | Is online payment available for appointment | | prepaid_confirmed | boolean | NO | Online payment status | | last_change_date | string | NO | Date of the last edit of the appointment | | activity_id | int | NO | Event ID (for group events) | Each object in the services array has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | Service ID | | title | string | Service name | | cost | float | Service cost | | price_min | float | Minimum price of the service | | price_max | float | Maximum service price | | discount | float | Discount | | amount | int | Number of ordered services | | session_length | int | Service duration in seconds (only if filter by team member is set) | The location object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | location ID | | title | string | location name | | country_id | number | Identifier of the country in which the location is located | | country | string | location name | | city_id | number | Identifier of the city where the location is located) | | city | string | location city name | | time zone | string | timezone locations | | address | string | Address where the location is located | | phone | string | location's main phone number | | phones | array of strings | All phone numbers of the location | | coordinate_lat | float | Latitude where the location is located | | coordinate lng | float | Longitude | | allow_delete_record | boolean | Is it possible to delete an appointment | | allow_change_record | boolean | Is it possible to reschedule the appointment | | site | string | location website | | currency_short_title | string | Currency symbol | | allow_change_record_delay_step | int | Time after which you can reschedule the appointment | | allow_delete_record_delay_step | int | Time after which you can delete an appointment | The team member object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | team member ID | | name | string | team member name | | specialization | string | team member specialization | | position | object | team member position | | show_rating | number | Whether to show team member's rating (1 - show, 0 - don't show) | | rating | number | team member rating | | votes_count | number | Number of votes rated team member | | comments_count | number | Number of comments to a team member | | avatar | string | Path to team member avatar file | ### Delete User Appointment - [DELETE /v1/user/records/{record_id}/{record_hash}](https://developer.alteg.io/en/client-personal-cabinet/delete_user_appointment.md) ### Get appointment review - [GET /v1/master_record_review/{record_token}](https://developer.alteg.io/en/client-personal-cabinet/get_feedback_form_status.md) ### Submit appointment review - [POST /v1/master_record_review/{record_token}](https://developer.alteg.io/en/client-personal-cabinet/submit_feedback_form.md) ## Authentication B2B SaaS users authentication methods. Get access tokens required for all API operations. ### Authorize User - [POST /v1/auth](https://developer.alteg.io/en/authentication-b2b/authorize_user.md): When a user changes their password, their API key is regenerated. As a result, reauthorization is required using the new API key. | Attribute | Type | Description | | ------------- | ------------- | ------------- | | login | string | The user's phone number in the format +13155550175, or their email address.| | password | string | User password | ## Locations [Locations in the product knowledge base](https://alteg.io/en/support/knowledge-base/4835906213149-general-information-location-settings/) Location management. Create, read, update locations and their settings. ### Get a list of locations - [GET /v1/companies](https://developer.alteg.io/en/locations/get_location_list.md): Get a list of locations with data ### Create a location - [POST /v1/companies](https://developer.alteg.io/en/locations/create_location.md): Create new location ### Get location - [GET /v1/company/{location_id}](https://developer.alteg.io/en/locations/get_location.md): Getting information about the location. ### Change location - [PUT /v1/company/{location_id}](https://developer.alteg.io/en/locations/update_location.md): Change location data ### Delete location - [DELETE /v1/company/{location_id}](https://developer.alteg.io/en/locations/delete_location.md): Delete a location. ## Services [Services in the product knowledge base](https://alteg.io/en/support/knowledge-base/4838077232925-adding-categories-and-services/) Service and service category management. Define services offered by your locations. ### Create a service category - [POST /v1/service_categories/{location_id}](https://developer.alteg.io/en/services/create_service_category.md) ### Get a list of services - [GET /v1/services/{location_id}](https://developer.alteg.io/en/services/get_service_list.md): Returns a list of all services for the specified location ### Create a service - [POST /v1/services/{location_id}](https://developer.alteg.io/en/services/create_service.md): Method to create a service ### Change service - [PATCH /v1/services/{location_id}/{service_id}](https://developer.alteg.io/en/services/update_service.md): Method to change the service ### Delete a service - [DELETE /v1/services/{location_id}/{service_id}](https://developer.alteg.io/en/services/delete_service.md): Method to remove a service ### Get service category - [GET /v1/service_category/{location_id}/{id}](https://developer.alteg.io/en/services/get_service_category.md) ### Change service category - [PUT /v1/service_category/{location_id}/{id}](https://developer.alteg.io/en/services/update_service_category.md) ### Delete service category - [DELETE /v1/service_category/{location_id}/{id}](https://developer.alteg.io/en/services/delete_service_category.md) ### Get a list of service categories - [GET /v1/company/{location_id}/service_categories/{id}](https://developer.alteg.io/en/services/get_service_category_list.md): + Options + company_id (required, number) - location ID + id (optional, number) - service category ID (to work with a specific category) + staff_id (optional, number) - team member ID (to get categories associated with a team member) ### Get a list of services / specific service - [GET /v1/company/{location_id}/services/{service_id}](https://developer.alteg.io/en/services/get_service.md): + Parameter + company_id (required, number, 1) - location ID + service_id (optional, number, 1) - service ID ### Linking a Team Member to a Provided Service - [POST /v1/company/{location_id}/services/{service_id}/staff](https://developer.alteg.io/en/services/assign_service_to_team_member.md): Creates a team member service link with provided duration and bill of materials. ### Updating Team Member Service Link Settings - [PUT /v1/company/{location_id}/services/{service_id}/staff/{team_member_id}](https://developer.alteg.io/en/services/update_service_team_member_assignment.md): Updates a team member service link with provided duration and bill of materials. ### Deleting a Team Member Service Link - [DELETE /v1/company/{location_id}/services/{service_id}/staff/{team_member_id}](https://developer.alteg.io/en/services/remove_service_from_team_member.md): Deletes a team member service link. ### Update service links - [POST /v1/company/{location_id}/services/links](https://developer.alteg.io/en/services/update_service_links.md): Updates service configuration including: - Team member assignments with custom duration and pricing - Tech cards (technological cards) for each team member - Required resources for the service - Service name translations for different languages This endpoint allows bulk updating of service-team member relationships without affecting other service properties. ### Get a list of chain service categories - [GET /v1/chain/{chain_id}/service_categories](https://developer.alteg.io/en/services/get_chain_service_category_list.md) ### Deprecated. Get a list of service categories (deprecated) - [GET /v1/service_categories/{location_id}/{id}](https://developer.alteg.io/en/services/deprecated_get_service_category_list.md): Get a list of service categories ### Deprecated. Get a list of services / specific service (deprecated) - [GET /v1/services/{location_id}/{service_id}](https://developer.alteg.io/en/services/deprecated_get_service_list_by_id.md) ### Deprecated. Change Service (deprecated) - [PUT /v1/services/{location_id}/{service_id}](https://developer.alteg.io/en/services/deprecated_update_service_by_id.md): Deprecated. Method to change the service ## Team Members [Team members in the product knowledge base](https://alteg.io/en/support/knowledge-base/175105/) · [Positions in the product knowledge base](https://alteg.io/en/support/knowledge-base/4846458760349-positions-of-staff-members/) Team member management, including positions, service assignments, and team member profiles. ### Edit Team Member - [PUT /v1/staff/{location_id}/{team_member_id}](https://developer.alteg.io/en/team-members/update_team_member.md) ### Delete team member - [DELETE /v1/staff/{location_id}/{team_member_id}](https://developer.alteg.io/en/team-members/delete_team_member.md) ### Quick create a team member - [POST /v1/company/{location_id}/staff/quick](https://developer.alteg.io/en/team-members/create_team_member_quick.md): Creates a new team member with a minimal set of parameters. ### Get Team Members / Specific Team Member - [GET /v1/company/{location_id}/staff/{team_member_id}](https://developer.alteg.io/en/team-members/get_team_member.md) ### Get a list of location positions - [GET /v1/company/{location_id}/staff/positions](https://developer.alteg.io/en/team-members/get_position_list.md): The method allows you to get a list of current positions in the location ### Quick create a position - [POST /v1/company/{location_id}/positions/quick](https://developer.alteg.io/en/team-members/create_position_quick.md): Creates a new position in a location; position is created as a chain entity and at the same time linked to a location initiated its creation. ### Deprecated. Add new team member (deprecated) - [POST /v1/staff/{location_id}](https://developer.alteg.io/en/team-members/deprecated_create_team_member.md) ### Deprecated. Get a list of team members / specific team member (deprecated) - [GET /v1/staff/{location_id}/{team_member_id}](https://developer.alteg.io/en/team-members/deprecated_get_team_member_list.md) ## Clients [Clients in the product knowledge base](https://alteg.io/en/support/knowledge-base/4861296116253-client-database-filters/) Client management including search, bulk operations, files, comments, and visit history. ### Adding a Client - [POST /v1/clients/{location_id}](https://developer.alteg.io/en/clients/create_client.md) ### Get a list of clients - [POST /v1/company/{location_id}/clients/search](https://developer.alteg.io/en/clients/get_client_list.md) ### Get a client - [GET /v1/client/{location_id}/{id}](https://developer.alteg.io/en/clients/get_client.md) ### Edit client - [PUT /v1/client/{location_id}/{id}](https://developer.alteg.io/en/clients/update_client.md) ### Delete client - [DELETE /v1/client/{location_id}/{id}](https://developer.alteg.io/en/clients/delete_client.md) ### Bulk adding clients - [POST /v1/clients/{location_id}/bulk](https://developer.alteg.io/en/clients/bulk_create_clients.md) ### List of a comments for a client - [GET /v1/clients/{location_id}/clients/{client_id}/comments](https://developer.alteg.io/en/clients/list_client_comments.md): Returns a list of a comments for a client and a files in a client details uploads history. ### Add a comment for a client - [POST /v1/clients/{location_id}/clients/{client_id}/comments](https://developer.alteg.io/en/clients/create_client_comment.md): Creates a new text comment for a client. ### Delete a comment for a client - [DELETE /v1/clients/{location_id}/clients/{client_id}/comments/{comment_id}](https://developer.alteg.io/en/clients/delete_client_comment.md): Deletes a comment for a client; does not delete files uploaded that triggered creation of a comment. ### Sample Request to Get a List of Client Files - [GET /v1/company/{location_id}/clients/files/{client_id}](https://developer.alteg.io/en/clients/get_client_file_list.md): A list of uploaded client files can be retrieved by providing both the location ID and the client ID in the request. The client ID can be obtained from the client collection. The response returns an array of client files. Each client file has the following structure: | Field | Type | Description | | -----------------| ------- | -------------------------------------------------- ------------------------ | | id | number | File ID | | client_id | number | Client ID | | name | string | Filename with extension | | description | string | File description | | extension | string | File name extension | | mime | string | MIME file type | | link | string | File download link | | date_create | string | File upload date in ISO8601 format | | size | string | Formatted file size string | | username | string | The name of the user who uploaded the file | | user_avatar | string | Avatar of the user who uploaded the file | | can_edit | boolean | Is there a right to change and delete the file? true - there is a right, false - there is no right | ### Delete request example - [DELETE /v1/company/{location_id}/clients/files/{client_id}/{file_id}](https://developer.alteg.io/en/clients/delete_client_file.md) ### Search by customer history - [POST /v1/company/{location_id}/clients/visits/search](https://developer.alteg.io/en/clients/search_client_visits.md): Displays the client’s visit history.This method returns the client’s appointment and product purchase history, grouped by visit. Data is filtered based on visit status and paid status. The client is identified using either the client_id or client_phone parameter. All other parameters are optional. Results are sorted by visit date and paginated in batches of 25 items. If multiple visits share the same date as the last item on the page, they will be included on the current page to ensure complete grouping. To retrieve the next page, use the from and to values provided in the meta field of the current response. ### Deprecated. Get a list of clients (deprecated) - [GET /v1/clients/{location_id}](https://developer.alteg.io/en/clients/deprecated_get_client_list.md): + Parameter + company_id (required, number, 1) - location ID + page (number, 1) - Page number + count (number, 20) - Number of clients per page #### Client filtering + fullname:Joh (optional, string) - Name (part of name) to filter clients + phone:1315 (optional, string) - Phone (part of the number) for filtering clients + email:test@ (optional, string) - Email (part) for client filtering + card:5663rt (optional, string) - Card (part) for filtering customers by loyalty card number + paid_min:100 (optional, number) - Minimum amount paid, to filter customers by the amount of payments + paid_max:0 (optional, number) - Maximum amount paid, to filter customers by the amount of payments + paid_max:0 (optional, number) - Maximum amount paid, to filter customers by the amount of payments + id:66 (optional, number) - ID of one client for filtering clients + id[]: 66 (optional, array) - IDs of multiple clients to filter + changed_after: '2000-01-01T00:00:00' (optional, string) - Filtering clients changed/created since a specific date and time + changed_before: '2020-12-31T23:59:59' (optional, string) - Filtering clients changed/created before a specific date and time ## Users & Permissions [Users in the product knowledge base](https://alteg.io/en/support/knowledge-base/4835071824157-authorization-in-altegio/) User account management, roles, permissions, and invitations. Control access to location features. ### Get location users - [GET /v1/company/{location_id}/users](https://developer.alteg.io/en/users-and-permissions/get_location_users.md): The method allows you to get users of the location. location User object: | Attribute | Type | Description | | ------------- | ------------- | ------------- | | id | number | User ID | | name | string | User name | | phone | string | User phone | | email | string | User email | | information | string | User information | | is_approved | boolean | Whether the user accepted the invitation to manage the location | | is_non_deletable | boolean | Whether the user is non-deletable ### Remove the user from the location - [DELETE /v1/company/{location_id}/users/{user_id}](https://developer.alteg.io/en/users-and-permissions/remove_user_from_location.md) ### Get a list of rights - [GET /v1/user/permissions/{location_id}](https://developer.alteg.io/en/users-and-permissions/get_permission_list.md): + Parameter + company_id (required, number, 1) - location ID ### Getting a list of user roles - [GET /v1/company/{location_id}/users/roles](https://developer.alteg.io/en/users-and-permissions/list_roles.md): Returns a list of user roles along with permissions for each role. ### Getting a list of user roles in the context of a location user - [GET /v1/company/{location_id}/users/{user_id}/roles](https://developer.alteg.io/en/users-and-permissions/get_user_roles.md): Returns a list of user roles along with permissions for each role. Allows to get the editable status for each permission of a location user (is_editable field). This status depends on the current user's permissions. ### Getting permission values and user role - [GET /v1/company/{location_id}/users/{user_id}/permissions](https://developer.alteg.io/en/users-and-permissions/get_user_permissions.md): Return user role and list of permissions values. ### Updating permission values and user role - [PUT /v1/company/{location_id}/users/{user_id}/permissions](https://developer.alteg.io/en/users-and-permissions/update_user_permissions.md): Updates the role and permissions of the user, as well as the team member who is attached to this user. ### Create and Send an Invitation - [POST /v1/user/invite/{location_id}](https://developer.alteg.io/en/users-and-permissions/create_user_invitation.md): An invitation to manage a location is sent via email or phone as a link. By following the link and completing registration, the user gains access to manage the location according to the permissions assigned. Permission assignment is performed in a separate request after the invitation is sent. ### Copy a User to Companies - [POST /v1/company/{location_id}/users/{user_id}/copy_to_companies](https://developer.alteg.io/en/users-and-permissions/copy_user_permissions_to_locations.md): Copies an active user and their permissions to multiple locations at once. If the user does not yet exist in a location, they will be added as an active user. If the user has already been invited to the location, only their permissions will be updated — however, they will still need to accept the invitation. ### Removing a User from Companies - [POST /v1/company/{location_id}/users/{user_id}/remove_from_companies](https://developer.alteg.io/en/users-and-permissions/remove_user_from_locations.md): Removes an active user from multiple companies at once. ### Deprecated. Get location users (deprecated) - [GET /v1/company_users/{location_id}](https://developer.alteg.io/en/users-and-permissions/deprecated_get_location_users.md): location User object ## Appointments [Visits in the product knowledge base](https://alteg.io/en/support/knowledge-base/24496357742749-new-visit-window/) Appointment and visit management. **Key concepts:** - **Appointment (record)** — A single scheduled service for a client with a specific team member at a specific time - **Visit** — A container that groups multiple appointments when a client books several services in one session **Example:** Client books haircut + coloring → 1 visit containing 2 appointments This section covers creating, modifying, and managing both individual appointments and visit containers. ### Get list of appointments - [GET /v1/records/{location_id}](https://developer.alteg.io/en/appointments/get_appointment_list.md): #### Filtering Appointments + staff_id: team member ID. Use this to retrieve appointments for a specific team member + client_id: Client ID Use this to retrieve appointments for a specific client + created_user_id: User ID User who created the appointment Use this to filter appointments created by a specific user + start_date: Session start date (inclusive) Returns appointments with a session starting on or after this date + end_date: Session end date (inclusive) Returns appointments with a session ending on or before this date + c_start_date: Appointment creation date from Returns appointments created on or after this date + c_end_date: Appointment creation date until Returns appointments created on or before this date + changed_after: Modified or created after this datetime Returns appointments created or modified after the specified date and time + changed_before: Modified or created before this datetime Returns appointments created or modified before the specified date and time ### Create a New Appointment - [POST /v1/records/{location_id}](https://developer.alteg.io/en/appointments/create_appointment.md): When creating an appointment for a group event, the event_id parameter becomes mandatory. In this case, the following parameters become optional: + staff_id + services + datetime + session_length Custom fields You can pass custom values using custom fields created specifically for your location (see the "Custom Fields" section for setup details). Once created, these fields can be included in the custom_fields object when creating an appointment. Each key in this object must match the code of the corresponding custom field. Example: * If your location has the following custom fields: my_custom_field with type="number" some_another_field with type="list" * You can pass their values during appointment creation as follows: custom_fields: { "my_custom_field": 123, "some_another_field": ["first value", "second value"] } * When this appointment is later retrieved using the GET method, the same custom field values will be returned in the response. ### Get an Appointment - [GET /v1/record/{location_id}/{record_id}](https://developer.alteg.io/en/appointments/get_appointment.md) ### Edit Appointment - [PUT /v1/record/{location_id}/{record_id}](https://developer.alteg.io/en/appointments/update_appointment.md): When an appointment is changed in a group event, the event_id parameter becomes required, staff_id, services, datetime, session_length parameters become optional ### Delete Appointment - [DELETE /v1/record/{location_id}/{record_id}](https://developer.alteg.io/en/appointments/delete_appointment.md) ### Get a List of Partner Appointments - [GET /v1/records/partner](https://developer.alteg.io/en/appointments/get_partner_appointment_list.md): #### Filtering appointments + salon_id: Location ID Use this to filter appointments for a specific location + start_date: Visit date from Filters appointments with a visit date starting from the specified date (inclusive) + end_date: Visit date until Filters appointments with a visit date up to the specified date (inclusive) + created_start_date: Appointment creation date from Filters appointments created on or after this date + created_end_date: Appointment creation date until Returns appointments created on or before this date + user_id: User ID Filters appointments created by a specific user ### Get a visit - [GET /v1/visits/{visit_id}](https://developer.alteg.io/en/appointments/get_visit.md) ### Get Visit Details - [GET /v1/visit/details/{location_id}/{record_id}/{visit_id}](https://developer.alteg.io/en/appointments/get_visit_details.md): Block "kkm_transaction_details_container" Flag "last_operation_type" | Meaning | Description | | ------------- | ------------- | | 0 | Print return receipt | | 1 | Print sales receipt | Types of all transactions with location account | Meaning | Description | | ------------- | ------------- | | 0 | Sales operation – Active for documents of type Visit | | 1 | Sale return operation – Active for documents of type Visit | | 2 | Correction operation | | 4 | Shift opening operation – Opens a new POS shift | | 5 | Shift closing operation – Closes the current POS shift | | 9 | Get POS status – Retrieves the current status of the POS device | | 11 | Get POS team status – Retrieves the status of all POS devices connected to the team | | 12 | Correction operation | | 13 | Print X-report – Prints a non-fiscal summary report of the current shift | | 6 | Cash deposit – Registers a cash-in transaction in the POS | | 7 | Cash withdrawal – Registers a cash-out transaction in the POS | Statuses of All POS Operations | Meaning | Description | | ------------- | ------------- | | 0 | Connection error with POS – Unable to establish a connection with the POS device | | 1 | Success – Operation completed successfully | | 2 | Sent for printing – The request has been sent to the POS and is waiting for print completion | | 3 | Runtime error – An error occurred while processing the operation on the POS device | | 4 | Status check error – Failed to retrieve the current status of the POS | | 5 | Waiting for POS readiness – Operation is pending until the POS device becomes ready | Document Types | Meaning | Description | | ------------- | ------------- | | 1 | Sale of products | | 2 | Provision of services | | 3 | Arrival of products | | 4 | Products write-off | | 5 | Transfer of products | | 6 | Inventory | | 7 | Visit | | 8 | Consumables write-off | ### Edit Visit - [PUT /v1/visits/{visit_id}/{record_id}](https://developer.alteg.io/en/appointments/update_visit.md) ### Receipt PDF for the visit - [GET /v1/attendance/receipt_print/{visit_id}](https://developer.alteg.io/en/appointments/get_visit_receipt_pdf.md) ### Get comments - [GET /v1/comments/{location_id}](https://developer.alteg.io/en/appointments/get_comments.md): The comment object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | Comment ID | | salon_id | number | location ID | | type | number | 1 - comment to the team member, 0 - to the location | | master_id | number | Team Member ID if type = 1 | | text | string | Comment text | | date | string | Date when the comment was left | | rating | number | Rating (from 1 to 5) | | user_id | number | Id of the user who left the comment | | username | string | Name of the user who left the comment | | user_avatar | string | Avatar of the user who left the comment | | record_id | number | ID of the post after which the review was left (the value will be non-zero if the review was left through a link asking for a review after the visit) | ### Leave a Comment - [POST /v1/comments/{location_id}/{team_member_id}](https://developer.alteg.io/en/appointments/leave_comment.md) ### Create Recurring Appointments - [POST /v1/company/{location_id}/schedules/{schedule_id}/client_schedules](https://developer.alteg.io/en/appointments/create_timetable_client_schedule.md): Creates a recurring appointment series for a client based on an event schedule. Automatically generates future appointments according to the schedule pattern. ### Update Recurring Appointments - [PATCH /v1/company/{location_id}/schedules/{schedule_id}/client_schedules/{client_schedule_id}](https://developer.alteg.io/en/appointments/update_timetable_client_schedule.md): Updates a recurring appointment series by attaching or detaching schedule days. This creates or removes future appointments accordingly. ### Delete Recurring Appointments - [DELETE /v1/company/{location_id}/schedules/{schedule_id}/client_schedules/{client_schedule_id}](https://developer.alteg.io/en/appointments/delete_timetable_client_schedule.md): Deletes a recurring appointment series and all associated future appointments. ## Events [Events in the product knowledge base](https://alteg.io/en/support/knowledge-base/4847139440413-group-events-creation-and-editing/) Manage Events — scheduled time slots for group Services where multiple Clients can book simultaneously. Create, update, search, and duplicate Events with customizable capacity, duplication strategies, and Team Member assignments. ### Search Events - [GET /v1/activity/{location_id}/search](https://developer.alteg.io/en/events/search_events.md) ### Search Event Dates - [GET /v1/activity/{location_id}/search_dates](https://developer.alteg.io/en/events/search_event_dates.md) ### Get Event Date Range - [GET /v1/activity/{location_id}/search_dates_range](https://developer.alteg.io/en/events/get_event_date_range.md) ### Get Event Search Filters - [GET /v1/activity/{location_id}/filters](https://developer.alteg.io/en/events/get_event_search_filters.md) ### Get Event - [GET /v1/activity/{location_id}/{event_id}](https://developer.alteg.io/en/events/get_event.md) ### Update Event - [PUT /v1/activity/{location_id}/{event_id}](https://developer.alteg.io/en/events/update_event.md) ### Delete Event - [DELETE /v1/activity/{location_id}/{event_id}](https://developer.alteg.io/en/events/delete_event.md) ### Create Event - [POST /v1/activity/{location_id}](https://developer.alteg.io/en/events/create_event.md) ### Duplicate Event - [POST /v1/activity/{location_id}/{event_id}/duplicate](https://developer.alteg.io/en/events/duplicate_event.md): A request for duplication can be made in 3 ways: - Specifying a list of dates and times to duplicate - Specifying the ID of the repetition strategy - By specifying all repetition parameters ### Search Event Services - [GET /v1/activity/{location_id}/services](https://developer.alteg.io/en/events/search_event_services.md) ### List Event Duplication Strategies - [GET /v1/activity/{location_id}/duplication_strategy](https://developer.alteg.io/en/events/list_event_duplication_strategies.md): Duplication of Events occurs based on a set of parameters combined in the "duplication strategy" entity | Field | Type | Description | | ------------- | ------------- | ----------------------------------------- | | title | string | Strategy name | | repeat_mode_id| integer | Repeat mode | | days | integer[] | List of days of the week: 0 Sun, 6 Fri | | interval | integer | Break in searching for dates, in units of type | | content_type | integer | Duplicate appointments? 1 - no, 2 - yes | The repeat mode can take the values | Meaning | Description | Break unit | | -------- | ------------- | ------------------------------ | | 1 | Daily | Day | | 2 | Weekdays | - | | 3 | Mon Wed Fri | - | | 4 | Tue Thu | - | | 5 | Every week | Week | | 6 | Every month | Month | | 7 | Every year | Year | The days field is relevant only for mode 5 - week, for specifying specific days of repetition If you specify repeat_mode = 5, days = [1,4], interval = 2, then the Event will be repeat every 3rd week on Mon and Thu ### Create Event Duplication Strategy - [POST /v1/activity/{location_id}/duplication_strategy](https://developer.alteg.io/en/events/create_event_duplication_strategy.md) ### Update Event Duplication Strategy - [POST /v1/activity/{location_id}/duplication_strategy/{strategy_id}](https://developer.alteg.io/en/events/update_event_duplication_strategy.md) ### Create Event (v2) - [POST /v2/companies/{location_id}/activities](https://developer.alteg.io/en/events/create_event_v2.md): Creates an Event using the v2 API. Note: This is the v2 version of the Events API with enhanced features. ### Get Event (v2) - [GET /v2/companies/{location_id}/activities/{event_id}](https://developer.alteg.io/en/events/get_event_v2.md): Returns detailed information about a specific Event using v2 API. ### Update Event (v2) - [PUT /v2/companies/{location_id}/activities/{event_id}](https://developer.alteg.io/en/events/update_event_v2.md): Updates an existing Event using v2 API. ### Delete Event (v2) - [DELETE /v2/companies/{location_id}/activities/{event_id}](https://developer.alteg.io/en/events/delete_event_v2.md): Deletes an Event using v2 API. ### Create Event Appointment (v2) - [POST /v2/companies/{location_id}/activities/{event_id}/records](https://developer.alteg.io/en/events/create_event_appointment_v2.md): Creates an Appointment for a Client in an Event using v2 API. Note: All client fields are required even when using existing client ID. ### Update Event Appointment (v2) - [PATCH /v2/companies/{location_id}/activities/{event_id}/records/{record_id}](https://developer.alteg.io/en/events/update_event_appointment_v2.md): Updates an existing Appointment in an Event using v2 API. Note: This endpoint uses PATCH (not POST as in some documentation). ## Schedule & Resources [Schedule in the product knowledge base](https://alteg.io/en/support/knowledge-base/4846253288989-work-schedule-staff/) · [Resources in the product knowledge base](https://alteg.io/en/support/knowledge-base/4869516836637-resources/) Work schedules, available time slots, resources, and timetable management for team members and facilities. ### Get schedule of a specific team member - [GET /v1/schedule/{location_id}/{team_member_id}/{start_date}/{end_date}](https://developer.alteg.io/en/schedule-and-resources/get_team_member_schedule.md) ### Change schedule of a specific team member - [PUT /v1/schedule/{location_id}/{team_member_id}/{start_date}/{end_date}](https://developer.alteg.io/en/schedule-and-resources/update_team_member_schedule.md) ### Get a list of dates for Appointment Calendar - [GET /v1/timetable/dates/{location_id}/{date}](https://developer.alteg.io/en/schedule-and-resources/get_appointment_calendar_dates.md): The Appointment Calendar dates are returned as an array of date strings, for example: [\"2026-10-26\", \"2026-10-30\"]. To retrieve this list, you must provide a reference date. The response will return the available working dates of the specified location or team member relative to that date ### Get a list of sessions for the Appointment Calendar - [GET /v1/timetable/seances/{location_id}/{team_member_id}/{date}](https://developer.alteg.io/en/schedule-and-resources/get_appointment_calendar_sessions.md): The sessions object for the log has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | time | string | Session time (17:30 for example) | | free | boolean | Free time or busy | ### Getting Resources at a Location - [GET /v1/resources/{location_id}](https://developer.alteg.io/en/schedule-and-resources/get_resource_list.md) ### Search a Schedule by Event - [GET /v1/company/{location_id}/schedules/search/{entity_type}/{entity_id}](https://developer.alteg.io/en/schedule-and-resources/search_timetable_event_schedules_by_event.md): Search for a schedule based on the appointment or event linked to it, or based on the associated appointment or event. ### Create a Schedule - [POST /v1/company/{location_id}/schedules](https://developer.alteg.io/en/schedule-and-resources/create_timetable_event_schedule.md): Creates a schedule for appointments or events based on the original associated entity. ### Update a Schedule - [PATCH /v1/company/{location_id}/schedules/{schedule_id}](https://developer.alteg.io/en/schedule-and-resources/update_timetable_event_schedule.md): Updates the settings of a schedule containing appointments or events. ### Delete a Schedule - [DELETE /v1/company/{location_id}/schedules/{schedule_id}](https://developer.alteg.io/en/schedule-and-resources/delete_timetable_event_schedule.md): Completely deletes a schedule along with all its series and the linked appointments or events. ### Create a Schedule Series - [POST /v1/company/{location_id}/schedules/{schedule_id}/days](https://developer.alteg.io/en/schedule-and-resources/create_timetable_schedule_day.md): Adds a new series to an existing schedule of appointments or events. ### Update a schedule series - [PATCH /v1/company/{location_id}/schedules/{schedule_id}/days/{day_id}](https://developer.alteg.io/en/schedule-and-resources/update_timetable_schedule_day.md): Updates the settings of a schedule series for appointments or events. ### Delete a schedule series - [DELETE /v1/company/{location_id}/schedules/{schedule_id}/days/{day_id}](https://developer.alteg.io/en/schedule-and-resources/delete_timetable_schedule_day.md): Deletes a schedule series and all appointments or events linked to it. ### Get a List of Scheduled Appointments and Events - [GET /v1/company/{location_id}/schedules/{schedule_id}/days/{day_id}/events](https://developer.alteg.io/en/schedule-and-resources/list_timetable_schedule_day_events.md): Prints a list of events of scheduled records/activities. ### Retrieving Appointment Calendar Settings - [GET /v1/company/{location_id}/settings/timetable](https://developer.alteg.io/en/schedule-and-resources/get_appointment_calendar_settings.md) ### Update Appointment Calendar settings - [PATCH /v1/company/{location_id}/settings/timetable](https://developer.alteg.io/en/schedule-and-resources/update_appointment_calendar_settings.md) ### Get team member schedules - [GET /v1/company/{location_id}/staff/schedule](https://developer.alteg.io/en/schedule-and-resources/get_team_member_schedule_list.md): Retrieves work schedules for team members as working intervals. Optionally includes: - Busy intervals (appointments and events) - Off-day type identifiers Query Parameters: - start_date / end_date - Date range for schedule search - staff_ids[] - Filter by specific team members - include[] - Include additional data (busy_intervals, off_day_type) ### Set team member schedules - [PUT /v1/company/{location_id}/staff/schedule](https://developer.alteg.io/en/schedule-and-resources/set_team_member_schedule.md): Sets work schedules for team members by date. Supports both setting new schedules and deleting existing ones in a single request. Returns the resulting schedules for affected team members within the date range from minimum to maximum modified date. ### Update team member schedule (deprecated) (deprecated) - [PUT /v1/schedule/{location_id}/{team_member_id}](https://developer.alteg.io/en/schedule-and-resources/schedule_team_member_update_deprecated.md): DEPRECATED: Use PUT /location/{location_id}/staff/schedule instead. Updates the work schedule for a specific team member. ## Products [Products in the product knowledge base](https://alteg.io/en/support/knowledge-base/4850363619485-products-initial-configuration/) Product catalog management. Define products available for sale and organize them into categories. ### Search products and categories - [GET /v1/goods/search/{location_id}](https://developer.alteg.io/en/products/search_product.md): ### List of products and product categories You can retrieve a list of products and product categories by providing the location ID. Use the search_term parameter to filter: + Product categories by name or article + Products by name, article, or barcode Limit the number of results using the max_count parameter. If search_term is not provided, the response will return a list of root categories for the specified location. In this case, the max_count parameter is ignored. If search_term is provided, the system will first search among categories. If fewer than max_count results are found, the search will continue among products to fill the remaining count. The result is returned as an array of products tree elements. Product tree element has the following structure: | Field | Type | Description | | -------------| ------- | -------------------------------------------------- ----------------------------------------- | | parent_id | number | Parent element ID (0 for root elements) | | item_id | number | Item ID (0 if item is a category) | | category_id | number | Product category ID (0 if the item is a product) | | title | string | Product name or product category | | is_chain | boolean | Is the element chain-bound? true - the element is connected to the chain, false - not connected | | is_category | boolean | Is the element a category? true - category, false - product | | is_item | boolean | Is the item a product? true - product, false - category | ### Get Products - [GET /v1/goods/{location_id}/{product_id}](https://developer.alteg.io/en/products/get_product.md): + term: Name, article or barcode + page (number, 1) - Page number (not used if product_id is passed) + count (number, 25) - Number of products on the page (not used if product_id is passed) + category_id (number, 777) - Id of the product category (not used if product_id is passed) + changed_after (string) - filtering products changed/created since a specific date and time (not used if product_id is passed) + changed_before (string) - filtering products changed/created before a specific date and time (not used if product_id is passed) ### Edit Products - [PUT /v1/goods/{location_id}/{product_id}](https://developer.alteg.io/en/products/update_product.md): The method allows you to change the product parameters. When editing units of measure for a product that already has inventory operations, you must add an array of rules for recalculating units of measure - correction_rules. Otherwise, the array is optional. ### Delete Items - [DELETE /v1/goods/{location_id}/{product_id}](https://developer.alteg.io/en/products/delete_product.md): The method allows you to remove the product ### Get a list of products - [GET /v1/goods/{location_id}](https://developer.alteg.io/en/products/get_products_list.md): Returns a list of all products for the specified location ### Create product - [POST /v1/goods/{location_id}](https://developer.alteg.io/en/products/create_product.md): The method allows you to create a product ### Example of a request to get categories - [GET /v1/company/{location_id}/goods_categories/{parent_category_id}](https://developer.alteg.io/en/products/get_product_category_list.md) ### Example of a request to get the composition of a category - [GET /v1/goods/category_node/{location_id}/{category_id}](https://developer.alteg.io/en/products/get_product_category_composition.md): ##№ Composition of the product category Information on a product category and its descendants can be obtained by making a request specifying the location ID and product category. Pagination is supported, specified by the page and count parameters. Composition of a product category has the following structure: | Field | Type | Description | |-----------------|----------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------| | parent_id | number | Parent element ID (0 for root elements) | | item_id | number | Item ID (always 0) | | category_id | number | Product category ID | | title | string | Product category name | | is_chain | boolean | Is the element chain-bound? true - the element is connected to the chain, false - not connected | | is_category | boolean | Is the element a category? always true | | is_item | boolean | Is the item a product? always false | | children | array of objects (Product tree element) | Child elements of a product category | | children_count | number | Total number of child products and categories (no recursion) | ### Get a list of product categories by ID - [GET /v1/goods_categories/multiple/{location_id}](https://developer.alteg.io/en/products/get_product_category_list_by_ids.md) ### Create a Product Category - [POST /v1/goods_categories/{location_id}](https://developer.alteg.io/en/products/create_product_category.md): The method allows you to create a product category. ### Edit a Product Category - [PUT /v1/goods_categories/{location_id}/{category_id}](https://developer.alteg.io/en/products/update_product_category.md): The method allows you to edit the product category ### Delete a Product Category - [DELETE /v1/goods_categories/{location_id}/{category_id}](https://developer.alteg.io/en/products/delete_product_category.md): The method allows you to delete a product category ### Get a list of product categories (deprecated) - [GET /v1/goods_categories/{location_id}/{category_id}](https://developer.alteg.io/en/products/deprecated_get_product_category_list.md) ## Inventory [Inventory in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/inventory/) Stock management including storage locations, inventory documents, stock movements, and consumables tracking. ### Get location inventories - [GET /v1/storages/{location_id}](https://developer.alteg.io/en/inventory/get_location_inventories.md): The location inventory object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | Inventory ID | | title | string | Title | | for_services | number | 1 - if used for automatic write-off of consumables | | for_sale | number | 1 - if the default inventory for selling products | | comment | string | Description of the inventory | ### Search for product transactions - [GET /v1/storages/transactions/{location_id}](https://developer.alteg.io/en/inventory/search_for_product_transactions.md) ### Create an inventory operation - [POST /v1/storage_operations/operation/{location_id}](https://developer.alteg.io/en/inventory/create_inventory_operation.md): An inventory operation is created by submitting a document along with multiple product transactions in a single API request. If a payment type is specified, the corresponding financial transactions will be generated automatically. ### Create document - [POST /v1/storage_operations/documents/{location_id}](https://developer.alteg.io/en/inventory/create_document.md) ### Get document - [GET /v1/storage_operations/documents/{location_id}/{document_id}](https://developer.alteg.io/en/inventory/get_document.md) ### Update Document - [PUT /v1/storage_operations/documents/{location_id}/{document_id}](https://developer.alteg.io/en/inventory/update_document.md) ### Delete document - [DELETE /v1/storage_operations/documents/{location_id}/{document_id}](https://developer.alteg.io/en/inventory/delete_document.md) ### Create Transaction - [POST /v1/storage_operations/goods_transactions/{location_id}](https://developer.alteg.io/en/inventory/create_transaction.md) ### Get a transaction - [GET /v1/storage_operations/goods_transactions/{location_id}/{transaction_id}](https://developer.alteg.io/en/inventory/get_transaction.md) ### Transaction update - [PUT /v1/storage_operations/goods_transactions/{location_id}/{transaction_id}](https://developer.alteg.io/en/inventory/update_transaction.md) ### Deleting a transaction - [DELETE /v1/storage_operations/goods_transactions/{location_id}/{transaction_id}](https://developer.alteg.io/en/inventory/delete_transaction.md) ### Get Product Transactions of a Document - [GET /v1/storage_operations/documents/goods_transactions/{document_id}](https://developer.alteg.io/en/inventory/get_document_product_transactions.md) ### Retrieve a list of bill of materials and consumables - [GET /v1/technological_cards/{location_id}](https://developer.alteg.io/en/inventory/get_bill_of_materials_list.md) ### Get the Bill of Materials for a Team Member’s Service - [GET /v1/technological_cards/default_for_staff_and_service/{location_id}/{team_member_id}/{service_id}](https://developer.alteg.io/en/inventory/get_team_member_service_bill_of_materials.md) ### Retrieve a list of bill of materials and consumables - [GET /v1/technological_cards/record_consumables/{location_id}/{record_id}](https://developer.alteg.io/en/inventory/get_appointment_consumables.md) ### Update Consumables for the Appointment-Service Association - [PUT /v1/technological_cards/record_consumables/consumables/{location_id}/{record_id}/{service_id}](https://developer.alteg.io/en/inventory/update_appointment_service_consumables.md) ### Unlink Appointment-Service Association - [DELETE /v1/technological_cards/record_consumables/technological_cards/{location_id}/{record_id}/{service_id}](https://developer.alteg.io/en/inventory/unlink_appointment_service_association.md) ## Sales Sales documents and receipts. View and manage point-of-sale transactions. ### Receipt of a Sales Transaction - [GET /v1/company/{location_id}/sale/{document_id}](https://developer.alteg.io/en/sales/get_sale_transaction.md) ### Payment at the Location Account and Loyalty (Various Methods) - [POST /v1/company/{location_id}/sale/{document_id}/payment](https://developer.alteg.io/en/sales/create_payment_with_loyalty_methods.md): As a response, information about the Sale operation is returned ### Delete a Loyalty Payment Transaction - [DELETE /v1/company/{location_id}/sale/{document_id}/payment/loyalty_transaction/{payment_transaction_id}](https://developer.alteg.io/en/sales/delete_loyalty_payment_transaction.md): As a response, information about the Sale operation is returned ### Delete a Cashier Payment Transaction - [DELETE /v1/company/{location_id}/sale/{document_id}/payment/payment_transaction/{payment_transaction_id}](https://developer.alteg.io/en/sales/delete_location_account_payment.md): As a response, information about the Sale operation is returned ## Payments [Payment methods in the product knowledge base](https://alteg.io/en/support/knowledge-base/4868729320349-creating-new-item-of-payment/) · [Accounts in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/working-with-accounts-and-cash-registers/) Financial operations including location accounts, payment transactions, and all monetary movements. ### Get document financial transactions - [GET /v1/storage_operations/documents/finance_transactions/{document_id}](https://developer.alteg.io/en/payments/get_document_financial_transactions.md) ### Get location accounts - [GET /v1/accounts/{location_id}](https://developer.alteg.io/en/payments/get_account_list.md): The location account object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | Location account ID | | title | string | Title | | type | number | 1 - for non-cash payments, 0 for cash | | comment | string | Description to the location account | ### Get transactions - [GET /v1/transactions/{location_id}](https://developer.alteg.io/en/payments/get_transactions.md): #### Transaction filtering + page: Page number + count: Number of customers per page + account_id: Checkout ID + supplier_id: Supplier ID + client_id: Client ID + user_id: user ID + master_id: team member ID + type: transaction type + real_money: Indicates whether this is a real-money (fiat) transaction + deleted: whether the transaction was deleted + start_date: start date of the period + end_date: end date of the period + balance_is: 0 - any balance, 1 - positive, 2 - negative + document_id: document ID ### Get Transactions by Visit or Appointment ID - [GET /v1/timetable/transactions/{location_id}](https://developer.alteg.io/en/payments/get_transactions_by_visit_or_appointment_id.md): #### Transaction filtering + record_id: Appointment ID + visit_id: ID of the visit ### Create a Financial Transaction - [POST /v1/finance_transactions/{location_id}](https://developer.alteg.io/en/payments/create_financial_transaction.md) ### Getting a financial transaction - [GET /v1/finance_transactions/{location_id}/{transaction_id}](https://developer.alteg.io/en/payments/get_financial_transaction.md) ### Financial Transaction Update - [PUT /v1/finance_transactions/{location_id}/{transaction_id}](https://developer.alteg.io/en/payments/update_financial_transaction.md) ### Deleting a transaction - [DELETE /v1/finance_transactions/{location_id}/{transaction_id}](https://developer.alteg.io/en/payments/delete_financial_transaction.md) ## Notifications Send SMS, Email or other notifications to clients. Configure notification preferences and settings for users and notification types. ### Send SMS to the list of clients - [POST /v1/sms/clients/by_id/{location_id}](https://developer.alteg.io/en/notifications/send_sms_to_clients.md): The object for creating SMS mailing has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | client_ids | array of numbers | Array of client IDs | | text | string | SMS text message | ### Send SMS campaigns to customers matching the filters - [POST /v1/sms/clients/by_filter/{location_id}](https://developer.alteg.io/en/notifications/send_sms_campaign_to_filtered_clients.md): The object for creating SMS mailing has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | text | string | SMS text message | #### Client filtering + fullname:'Joh' (optional, string) - Name (part of name) to filter clients + phone:'1315' (optional, string) - Phone (part of the number) to filter clients + email:'test@' (optional, string) - Email (part) for client filtering + card:'5663rt' (optional, string) - Card (part) to filter customers by loyalty card number Attention: If there are no filters, SMS mailing will go to the entire database! ### Send Email newsletter according to the list of clients - [POST /v1/email/clients/by_id/{location_id}](https://developer.alteg.io/en/notifications/send_email_newsletter_to_clients.md): The object for creating an Email campaign has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | client_ids | array of numbers | Array of client IDs | | text | string | Text Email Message | | subject | string | Email Subject | ### Send email campaigns for clients matching the filters - [POST /v1/email/clients/by_filter/{location_id}](https://developer.alteg.io/en/notifications/send_email_campaign_to_filtered_clients.md): The object for creating an Email campaign has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | text | string | Text Email Message | | subject | string | Email Subject | #### Client filtering + fullname:'Joh' (optional, string) - Name (part of name) to filter clients + phone:'1315' (optional, string) - Phone (part of the number) to filter clients + email:'test@' (optional, string) - Email (part) for client filtering + card:'5663rt' (optional, string) - Card (part) to filter customers by loyalty card number Attention: If there are no filters, email distribution will go to the entire database! ### Getting Message Statuses - [POST /v1/delivery/status](https://developer.alteg.io/en/notifications/get_message_status_list.md): ### Get message statuses | Number | Title | | ------------- | ------------- | | 1 | Delivered | | 2 | Not delivered | | 4 | Sent to phone | | 8 | Transferred to the operator | | 16 | Rejected by operator | | 52 | Not enough funds | In the event of an error, the corresponding HTTP status code is returned. In some cases, a descriptive error message is also included in the response. The following error codes may be returned by all API methods: | error code | Http status code | Title | Description | | ------------- | ------------- | ------------- | ------------- | | 5 | 400 | ENTITY_VALIDATION_ERROR | The request body did not pass validation | | 10 | 400 | FIELD_VALIDATION_ERROR | Parameter not validated | | 15 | 403 | ACCESS_FORBIDDEN | The action is not available, the application does not have the required permissions. | | 20 | 401 | INVALID_PARTNER_TOKEN | partner_token missing or invalid | | 30 | 404 | RESOURCE_NOT_FOUND | The resource at the requested path does not exist | When sending SMS, the delivery_callback_url attribute is passed in the request - this is the url to which message statuses should be sent. Use it to send message statuses. Url to which message statuses should be sent - https://app.alteg.io/smsprovider/status/callback/{partner_token} ### Get notification settings in a location - [GET /v1/notification_settings/{location_id}/notification_types](https://developer.alteg.io/en/notifications/get_location_notification_settings.md): The method allows you to get notification settings in a location. ### Get User Notification Settings - [GET /v1/notification_settings/{location_id}/users/{user_id}](https://developer.alteg.io/en/notifications/get_user_notification_settings.md): The method allows you to get notification settings for a particular location user. ### Change User Push Notification Settings - [POST /v1/notification_settings/{location_id}/users/{user_id}](https://developer.alteg.io/en/notifications/update_user_notification_settings.md): The method allows you to change the user's PUSH notification settings. The type of notification to be changed (record_create_online_staff or record_create_online_admin, etc.) should be selected based on the type of notification specified by the user (mode: admin or mode: team_member). Note: 'staff' in notification type names is a legacy term for team member. ## Online Booking Settings Manage custom booking forms and their configurations for online appointment scheduling. ### Get Online Booking Settings - [GET /v1/company/{location_id}/settings/online](https://developer.alteg.io/en/online-booking-settings/get_online_booking_settings.md) ### Update Online Booking Settings - [PATCH /v1/company/{location_id}/settings/online](https://developer.alteg.io/en/online-booking-settings/update_online_booking_settings.md) ### Get timeslot settings - [GET /v1/company/{location_id}/settings/timeslots](https://developer.alteg.io/en/online-booking-settings/get_timeslot_settings.md): Retrieves the timeslot configuration for online booking at a location. Timeslot settings control how available booking times are displayed to clients: - Grid type (predefined, schedule-based, or dynamic) - Available time range - Step interval between slots - Delay before nearest available slot - Per-weekday and per-date overrides Timeslot values are in seconds from midnight (e.g., 7200 = 02:00, 50400 = 14:00). ### Get a list of booking widgets - [GET /v1/company/{location_id}/booking_forms](https://developer.alteg.io/en/online-booking-settings/get_booking_widget_list.md) ### Create a Booking Widget - [POST /v1/company/{location_id}/booking_forms](https://developer.alteg.io/en/online-booking-settings/create_booking_widget.md) ### Get a Booking Widget - [GET /v1/company/{location_id}/booking_forms/{form_id}](https://developer.alteg.io/en/online-booking-settings/get_booking_widget.md) ### Delete Booking Widget - [DELETE /v1/company/{location_id}/booking_forms/{form_id}](https://developer.alteg.io/en/online-booking-settings/delete_booking_widget.md) ### Change Booking Widget - [PATCH /v1/company/{location_id}/booking_forms/{form_id}](https://developer.alteg.io/en/online-booking-settings/update_booking_widget.md) ## Analytics & Reports Business analytics and statistical reports for business intelligence. ### Get key location metrics - [GET /v1/company/{location_id}/analytics/overall](https://developer.alteg.io/en/analytics-and-reports/get_location_analytics_overall.md): The method allows you to get the main indicators of the location for the selected period and compare with the previous period of the same duration ### Get occupancy data by day - [GET /v1/company/{location_id}/analytics/overall/charts/fullness_daily](https://developer.alteg.io/en/analytics-and-reports/get_location_analytics_occupancy_daily.md) ### Get data on revenue by day - [GET /v1/company/{location_id}/analytics/overall/charts/income_daily](https://developer.alteg.io/en/analytics-and-reports/get_location_analytics_revenue_daily.md) ### Get the Structure of Appointments by Source - [GET /v1/company/{location_id}/analytics/overall/charts/record_source](https://developer.alteg.io/en/analytics-and-reports/get_appointment_analytics_by_source.md) ### Get the Structure of Appointments by Visit Status - [GET /v1/company/{location_id}/analytics/overall/charts/record_status](https://developer.alteg.io/en/analytics-and-reports/get_appointment_analytics_by_status.md) ### Get Data on the Number of Appointments by Day - [GET /v1/company/{location_id}/analytics/overall/charts/records_daily](https://developer.alteg.io/en/analytics-and-reports/get_location_analytics_appointments_daily.md) ### Get revenue statistics - [GET /v1/company/{location_id}/analytics/loyalty_programs/income](https://developer.alteg.io/en/analytics-and-reports/get_loyalty_program_revenue_statistics.md): The method allows you to get statistics on revenue. ### Get team member return - [GET /v1/company/{location_id}/analytics/loyalty_programs/staff](https://developer.alteg.io/en/analytics-and-reports/get_loyalty_program_team_member_statistics.md): The method allows you to get the return statistics for a team member ### Get customer statistics - [GET /v1/company/{location_id}/analytics/loyalty_programs/visits](https://developer.alteg.io/en/analytics-and-reports/get_loyalty_program_client_statistics.md): The method allows you to get statistics on returning, new and lost customers ### Get day-end report data - [GET /v1/reports/z_report/{location_id}](https://developer.alteg.io/en/analytics-and-reports/get_day_end_report_data.md): + start_date: Report date + team_member_id: team member ID ## Tags [Tags in the product knowledge base](https://alteg.io/en/support/knowledge-base/4861319864861-client-categories/) Custom tags for clients, appointments, and events. ### List Tags (v2) - [GET /v2/companies/{company_id}/tags](https://developer.alteg.io/en/tags/list_tags_v2.md): Returns all tags for the specified company, optionally filtered by entity type. Response uses JSON:API format where type: "tag" is the resource type name (not to be confused with entity_type attribute). Entity types: - common (0) - General tags - client (1) - Client tags - record (2) - Appointment/record tags - activity (3) - Activity/event tags Use the entity query parameter to filter by type. Accepts both string aliases and numeric values. ### Create Tag (v2) - [POST /v2/companies/{company_id}/tags](https://developer.alteg.io/en/tags/create_tag_v2.md): Creates a new tag for the specified company. ### Get Tag (v2) - [GET /v2/companies/{company_id}/tags/{tag_id}](https://developer.alteg.io/en/tags/get_tag_v2.md): Returns detailed information about a specific tag. Response uses JSON:API format where type: "tag" is the resource type name. ### Update Tag (v2) - [PUT /v2/companies/{company_id}/tags/{tag_id}](https://developer.alteg.io/en/tags/update_tag_v2.md): Updates an existing tag. ### Delete Tag (v2) - [DELETE /v2/companies/{company_id}/tags/{tag_id}](https://developer.alteg.io/en/tags/delete_tag_v2.md): Deletes a tag (soft delete - marks as deleted). ### Create a Tag (Deprecated) (deprecated) - [POST /v1/labels/{location_id}](https://developer.alteg.io/en/tags/create_tag.md): Deprecated: Use POST /api/v2/companies/{company_id}/tags instead. Creates a new tag for the specified location. ### Get location tags (Deprecated) (deprecated) - [GET /v1/labels/{location_id}/{entity}](https://developer.alteg.io/en/tags/get_tag_list_by_entity.md): Deprecated: Use GET /api/v2/companies/{company_id}/tags?entity={entity} instead. Returns tags for the specified entity type. The entity parameter accepts string aliases: - common - common tags - client - client tags - record - appointment/record tags - activity - activity/event tags > Legacy support: Numeric values (0, 1, 2, 3) are also accepted but string aliases are preferred. ### Update Tag (Deprecated) (deprecated) - [PUT /v1/labels/{location_id}/{tag_id}](https://developer.alteg.io/en/tags/update_tag_by_tag_id.md): Deprecated: Use PUT /api/v2/companies/{company_id}/tags/{tag_id} instead. ### Delete location tag (Deprecated) (deprecated) - [DELETE /v1/labels/{location_id}/{tag_id}](https://developer.alteg.io/en/tags/delete_tag_by_tag_id.md): Deprecated: Use DELETE /api/v2/companies/{company_id}/tags/{tag_id} instead. ## Deposits [Client accounts in the product knowledge base](https://alteg.io/en/support/knowledge-base/4905494221085-deposit-accounts/) Client deposit account management and operations. ### Get a List of Client Accounts by Location and Client - [GET /v1/deposits/company/{location_id}/client/{client_id}](https://developer.alteg.io/en/deposits/get_client_account_list_by_location_and_client.md) ### Get a list of client accounts by chain and a set of filters - [GET /v1/deposits/chain/{chain_id}](https://developer.alteg.io/en/deposits/get_client_account_list_by_chain.md) ### Get a list of client accounts by chain and customer phone number - [GET /v1/deposits/chain/{chain_id}/phone/{phone}](https://developer.alteg.io/en/deposits/get_client_account_by_chain_and_phone.md) ### Create a client account topup operation - [POST /v1/deposits_operations/{location_id}](https://developer.alteg.io/en/deposits/create_client_account_topup_operation.md): Creating a transaction with a client account involves creating a document, a transaction with a client account, and a financial transaction within a single API request. ### Get client account transaction history - [GET /v1/chain/{chain_id}/deposits/{deposit_id}/history](https://developer.alteg.io/en/deposits/get_chain_client_account_history.md): Retrieves the transaction history for a specific client account in the chain. Returns a list of all transactions (top-ups, withdrawals, etc.) made on the client account. Note: Requires chain-level permissions. ## Loyalty Cards [Client cards in the product knowledge base](https://alteg.io/en/support/knowledge-base/4861029589661-information-in-client-s-card/) Loyalty card management including card types, manual transactions, and card assignments. ### Get a List of Customer Cards by ID - [GET /v1/loyalty/client_cards/{client_id}](https://developer.alteg.io/en/loyalty-cards/get_loyalty_card_list_by_client_id.md): Returns a list of customer cards with programs that are active in this location The attributes in the response to the request completely match the "Get a list of issued cards by phone number" method described above ### Get a List of Customer Cards by Phone Number - [GET /v1/loyalty/cards/{phone}/{chain_id}/{location_id}](https://developer.alteg.io/en/loyalty-cards/get_loyalty_card_list_by_phone.md): Returns a list of customer cards with programs that are active in this location | Attribute | Type | Description | |------------------|---------|-----------------------------------------------------------------------------------------------| | id | int | Loyalty card ID | | balance | decimal | Loyalty card balance | | paid_amount | decimal | Amount "Paid" | | sold_amount | decimal | Amount "Sold" | | visits_count | int | Number of visits | | number | string | Card number | | type_id | int | Loyalty card type identifier | | salon_group_id | int | ID of the chain where the card was created | | type | object | Object that contains the "id" and "title" fields: card type identifier and name | | salon_group | object | Object that contains the "id" and "title" fields: identifier of the chain where the card type was created and the name of this chain | | programs | array | Array with information about promotions linked to a loyalty card | | rules | array | Array with information about the rules configured in the action | The programs array consists of objects with the following fields: | Attribute | Type | Description | |-------------------|---------|-----------------------------------------------| | id | int | Promotion ID | | title | string | Action name | | loyalty_type_id | int | Promotion type ID | | item_type_id | int | Is cashback accrued from products | | value_unit_id | int | Bonus field — Discount % or Fixed amount | | group_id | int | ID of the chain where the action was created | | loyalty_type | object | Object with information about the action | The rules array consists of objects with the following fields: | Attribute | Type | Description | |---------------------|---------|--------------------------------------------------------------| | id | int | Rule ID | | loyalty_program_id | int | Identifier of the promotion to which the rule is attached | | loyalty_type_id | int | Promotion type ID | | value | decimal | Value from which the rule will work | ### Get User Loyalty Cards - [GET /v1/user/loyalty_cards/{chain_id}](https://developer.alteg.io/en/loyalty-cards/get_user_loyalty_cards.md): Returns a list of cards of an authorized user with programs, filtering cards by location chain / location ### Get a list of card types available at the location - [GET /v1/loyalty/card_types/salon/{location_id}](https://developer.alteg.io/en/loyalty-cards/get_loyalty_card_type_list.md): Returns a list of card types that are valid for the given location. The attributes and their descriptions match those defined in the "Collection of Card Types Available to the Client" method described above. ### Get a List of Card Types Available for Issuance to the Client - [GET /v1/loyalty/card_types/client/{location_id}/{phone}](https://developer.alteg.io/en/loyalty-cards/get_loyalty_card_type_list_for_client.md): Returns a list of card types that are available for issuance to a location client. | Attribute | Type | Description | |------------------|---------|-----------------------------------------------------------------------------------------------| | id | int | Card type identifier | | title | string | Card type name | | salon_group_id | int | ID of the chain where the card type was created | | salon_group | object | An object that contains the "id" and "title" fields: identifier of the chain where the card type was created and the name of this chain | ### Get a List of Card Types Available at the Chain - [GET /v1/chain/{chain_id}/loyalty/card_types](https://developer.alteg.io/en/loyalty-cards/get_chain_loyalty_card_type_list.md) ### Issue a Loyalty Card - [POST /v1/loyalty/cards/{location_id}](https://developer.alteg.io/en/loyalty-cards/issue_loyalty_card.md): | Attribute | Type | Description | |----------------------|--------|----------------- ------------------------------| | loyalty_card_number | number | Loyalty card number | | loyalty_card_type_id | number | Loyalty card type identifier | | phone | number | Customer phone number (e.g., 13155550175 for +13155550175) | ### Remove a Loyalty Card - [DELETE /v1/loyalty/cards/{location_id}/{card_id}](https://developer.alteg.io/en/loyalty-cards/remove_loyalty_card.md) ### Manual withdraw/deposit to loyalty card in location - [POST /v1/company/{location_id}/loyalty/cards/{card_id}/manual_transaction](https://developer.alteg.io/en/loyalty-cards/create_loyalty_card_transaction.md): Manual withdraw/deposit to loyalty card in location ### Manual withdraw/deposit to loyalty card in chain - [POST /v1/chain/{chain_id}/loyalty/cards/{card_id}/manual_transaction](https://developer.alteg.io/en/loyalty-cards/create_chain_loyalty_card_transaction.md): Manual withdraw/deposit to loyalty card in chain ## Subscriptions & Certificates [Memberships in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/memberships/) · [Certificates in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/gift-cards/) Membership and certificate management including creation, freezing, and balance operations. ### Get Client Memberships - [GET /v1/loyalty/abonements](https://developer.alteg.io/en/subscriptions-and-certificates/get_client_memberships.md): Returns a list of client's memberships by phone ### Get User Memberships - [GET /v1/user/loyalty/abonements](https://developer.alteg.io/en/subscriptions-and-certificates/get_user_memberships.md): Returns a list of memberships of an authorized user ### Get a List of Memberships by Filter - [GET /v1/chain/{chain_id}/loyalty/abonements](https://developer.alteg.io/en/subscriptions-and-certificates/get_membership_list.md) ### Get a List of Membership Types by ID - [GET /v1/company/{location_id}/loyalty/abonement_types/fetch](https://developer.alteg.io/en/subscriptions-and-certificates/get_membership_type_list_by_id.md): A list of membership types available at a location can be obtained by querying the location ID and membership type IDs. The list is an array of membership types. ### Get a list of membership types by ID + Parameters + company_id (required, number) - location ID + id: 1 (optional, number) - membership type ID (you can specify several additional parameters &ids[]={id} ### Get a List of Available Membership Types - [GET /v1/company/{location_id}/loyalty/abonement_types/search](https://developer.alteg.io/en/subscriptions-and-certificates/get_membership_type_list.md): A list of membership types available at a location can be obtained by requesting the location ID. The list can be filtered by membership type name by passing the title parameter. Pagination is supported, specified by the page and page_size parameters. The list is an array of membership types. Membership type has the following structure: | Field | Type | Description | |-------------------------------|---------|----------------------------------------------------------------------------------------------------------------------| | id | number | Membership type identifier | | title | string | Membership type name | | allow_freeze | boolean | Is it possible to freeze memberships? true - allowed, false - not allowed | | freeze limit | number | Maximum total freezing period (days) | | salon_group_id | number | Identifier of the chain in which the membership type is valid | | period | number | Membership expiration date (0 if not set) | | period_unit_id | number | Membership expiration unit (list of possible values, if not set - 0) | | is_allow_empty_code | boolean | Allow the sale of a membership without a code? true - allow, false - do not allow | | is_united_balance | boolean | Total or separate membership balance: true - total, false - separate | | united_balance_services_count | number | Number of visits for total balance | Measurement units of membership type validity period | Meaning | Description | |---------|-------------| | 1 | Day | | 2 | Week | | 3 | Month | | 4 | Year | ### Search available subscriptions for event - [GET /v1/api/v1/company/{location_id}/client/{client_id}/loyalty/abonements/search_for_activity](https://developer.alteg.io/en/subscriptions-and-certificates/search_memberships_for_event.md): Retrieves subscriptions that can be used to create a client schedule for a series of events. This method returns subscriptions (memberships) that: - Belong to the specified client - Are valid and active - Can be applied to the specified activity - Have remaining visits available Use cases: - Display available subscriptions when scheduling recurring activity sessions - Check which subscriptions cover specific activity types - Validate subscription applicability before creating schedules Note: Returns subscriptions with their types and availability intervals. ### Check membership availability for event - [GET /v1/api/v1/company/{location_id}/client/{client_id}/loyalty/abonements/{membership_id}/check_for_activity](https://developer.alteg.io/en/subscriptions-and-certificates/check_memberships_for_event.md): Validates a specific subscription for creating activity schedules. Returns: - Last possible appointment date based on membership expiration - Available visit count for the selected subscription - Schedule day IDs that can be booked Use cases: - Validate subscription before creating recurring appointments - Check if subscription has enough visits for schedule - Determine last bookable date based on expiration - Pre-validate schedule parameters Note: Requires schedule_day_ids parameter to check specific dates. ### Get client gift cards - [GET /v1/loyalty/certificates](https://developer.alteg.io/en/subscriptions-and-certificates/get_client_gift_cards.md): Returns a list of client gift cards by phone | Attribute | Type | Description | |-------------------|-----------|---------------------------------------------------------------------------| | id | int | Gift card ID | | number | string | Gift card code | | balance | decimal | Current balance | | default_balance | decimal | Initial balance | | type_id | int | Gift card type identifier | | status_id | int | Status ID | | created_date | timestamp | Date of sale | | expiration_date | datetime | Burn date | | type | object | Object with gift card type information | | status | object | An object with information about the current gift card status | The type array contains the following objects: | Attribute | Type | Description | |--------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------| | id | int | Gift card type identifier | | title | string | Type name | | balance | decimal | Gift card denomination | | is_multi | boolean | Is it available for multiple debits | | company_group_id | int | ID of the chain where the certificate type was created | | item_type_id | int | Restriction on the use of redemption points. 0 - no limit, 1 - services only, 2 - some services + all products, 3 - some services, 4 - products only | | expiration_type_id | int | The ID of the expiration limit. 0 - unlimited, 1 - fixed date, 2 - fixed term | | expiration_date | timestamp | Burn date of all gift cards. Populated with expiration_type_id = 1 | | expiration_timeout | int | Validity period of gift card. Populated with expiration_type_id = 2 | | expiration_timeout_unit_id | int | Time units. 1 - Day, 2 - Week, 3 - Month, 4 - Year | | is_allow_empty_code | boolean | Sale without code | | item_type | object | Object with item_type_id and its name | ### Get user gift cards - [GET /v1/user/loyalty/certificates](https://developer.alteg.io/en/subscriptions-and-certificates/get_user_gift_cards.md): Returns a list of authorized user gift cards ### Get a List of Gift Card Types by ID - [GET /v1/company/{location_id}/loyalty/certificate_types/fetch](https://developer.alteg.io/en/subscriptions-and-certificates/get_gift_card_type_list_by_id.md): A list of gift card types available at the location can be obtained by querying the location ID and gift card type IDs. The list is an array of gift card types. ### Get a List of Available Gift Card Types - [GET /v1/company/{location_id}/loyalty/certificate_types/search](https://developer.alteg.io/en/subscriptions-and-certificates/get_gift_card_type_list.md): A list of gift card types available at a location can be obtained by querying the location ID. The list can be filtered by the name of the gift card type by passing the title parameter. Pagination is supported, specified by the page and page_size parameters. The list is an array of gift card types. Gift card type has the following structure: | Field | Type | Description | |----------------------------|---------|------------------------------------------------------------------------------------------------------------------------------------| | id | number | Gift card type identifier | | title | string | Gift card type name | | balance | number | Gift card denomination | | is_multi | boolean | Write-off type: true - multiple write-off, false - single write-off | | company_group_id | number | ID of the chain where the gift card type is valid | | item_type_id | number | Application Constraint (list of possible values) | | expiration_type_id | number | Expiration limit (list of possible values) | | expiration_date | string | Fixed burn date in ISO8601 format (null if not set) | | expiration_timeout | number | Gift card validity period from the date of sale (0 if not set) | | expiration_timeout_unit_id | number | The unit of measurement of the validity period of the gift card from the moment of sale (list of possible values, if not set - 0) | | is_allow_empty_code | boolean | Allow sale of gift card without code? true - allow, false - do not allow | Gift Card Type Restriction | Meaning | Description | |---------|---------------------------------| | 0 | Unlimited | | 1 | Any services without products | | 2 | Any products without services | | 3 | Some services without products | | 4 | Some services and any products | Gift Card Type Expiration Limit | Meaning | Description | |---------|----------------------------------------| | 0 | No expiration date | | 1 | Fixed date for all instances | | 2 | Fixed period of validity from the date of sale | Units of certificate type validity period | Meaning | Description | |---------|-------------| | 1 | Day | | 2 | Week | | 3 | Month | | 4 | Year | ## Loyalty Programs [Loyalty programs in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/loyalty-programs/) Loyalty programs and loyalty transaction management. ### Get a List of Promotions Active in the Location - [GET /v1/company/{location_id}/loyalty/programs/search](https://developer.alteg.io/en/loyalty-programs/get_location_loyalty_program_list.md): The method allows you to get a list of promotions that are active for the specified location. ### Get loyalty transactions by visit - [GET /v1/visit/loyalty/transactions/{visit_id}](https://developer.alteg.io/en/loyalty-programs/get_loyalty_transactions_by_visit.md): List of transactions for loyalty promotions for this visit ### Gift Card/Membership Code Generation - [GET /v1/loyalty/generate_code/{location_id}/{product_id}](https://developer.alteg.io/en/loyalty-programs/generate_loyalty_code.md): + Options + location_id (required, number, 1) - location ID + product_id (required, number, 1) - product ID (gift card/ membership) ### Apply Deduction from the Loyalty Card in the Visit - [POST /v1/visit/loyalty/apply_card_withdrawal/{location_id}/{card_id}](https://developer.alteg.io/en/loyalty-programs/apply_loyalty_card_deduction.md): The amount deducted will not exceed the available bonus balance. If the value is set to 0, no write-off transaction will occur ### Cancel Withdrawal from the Loyalty Card During the Visit - [POST /v1/visit/loyalty/cancel_card_withdrawal/{location_id}/{card_id}](https://developer.alteg.io/en/loyalty-programs/cancel_loyalty_card_withdrawal.md): Cancellation of write-off from the loyalty card. ### Apply a Discount Promotion in a Visit - [POST /v1/visit/loyalty/apply_discount_program/{location_id}/{card_id}/{program_id}](https://developer.alteg.io/en/loyalty-programs/apply_discount_promotion.md): Applying a promotion to a visit, it only makes sense if there is a visit ### Cancel the Application of the Discount Promotion in the Visit - [POST /v1/visit/loyalty/cancel_discount_program/{location_id}/{card_id}/{program_id}](https://developer.alteg.io/en/loyalty-programs/cancel_discount_promotion.md): Cancellation of the promotion applied to the visit. ### Apply Referral Program During a Visit - [POST /v1/visit/loyalty/apply_referral_program/{location_id}/{chain_id}](https://developer.alteg.io/en/loyalty-programs/apply_referral_program.md): Applying a referral program to a visit ## Salary [Payroll in the product knowledge base](https://alteg.io/en/support/knowledge-base/167548/) Salary calculations, payroll management, and compensation tracking for team members. ### Receipt of mutual settlements of a team member grouped by date - [GET /v1/company/{location_id}/salary/calculation/staff/daily/{team_member_id}](https://developer.alteg.io/en/salary/search_team_member_calculation_daily_salary.md): The method allows location owner to get mutual settlements of a team member grouped by date. ### Receipt of mutual settlements of a team member - [GET /v1/company/{location_id}/salary/calculation/staff/{team_member_id}](https://developer.alteg.io/en/salary/search_team_member_calculation_salary.md): The method allows location owner to get mutual settlements of a team member. ### Obtaining payroll schemes count for a team member - [GET /v1/company/{location_id}/salary/calculation/staff/{team_member_id}/salary_schemes_count](https://developer.alteg.io/en/salary/get_team_member_calculation_schemes_count.md): The method allows you to get salary calculation schemes count for a team member before trying to obtain calculation data. ### Search payroll calculations of a team member - [GET /v1/company/{location_id}/salary/payroll/staff/{team_member_id}/calculation](https://developer.alteg.io/en/salary/search_team_member_payroll_calculation.md): The method allows location owner to search payroll calculations for the period for a team member. ### Get payroll calculation details of a team member - [GET /v1/company/{location_id}/salary/payroll/staff/{team_member_id}/calculation/{calculation_id}](https://developer.alteg.io/en/salary/get_team_member_payroll_calculation.md): The method allows location owner to get details of a specific payroll calculation. ### Getting payroll for a period for a team member grouped by date - [GET /v1/company/{location_id}/salary/period/staff/daily/{team_member_id}](https://developer.alteg.io/en/salary/search_team_member_period_daily_salary.md): The method allows location owner to get the calculation for the period for a team member grouped by date. ### Getting payroll for a period for a team member - [GET /v1/company/{location_id}/salary/period/staff/{team_member_id}](https://developer.alteg.io/en/salary/search_team_member_period_salary.md): The method allows location owner to get the calculation for the period for a team member. ### Get Mutual Settlements for a Specific Team Member - [GET /v1/company/{location_id}/salary/staff/{team_member_id}/calculation](https://developer.alteg.io/en/salary/get_team_member_salary_calculation.md): The method allows you to get mutual settlements of a specific team member. In the user's access rights, the checkbox "Access to payroll only for a specific team member" must be specified. ### Get Payroll for a Specific Team Member for a Given Period - [GET /v1/company/{location_id}/salary/staff/{team_member_id}/period](https://developer.alteg.io/en/salary/get_team_member_salary_period.md): The method allows you to get the calculation for the period for a specific team member. In the user's access rights, the checkbox "Access to payroll only for a specific team member" must be checked. ### Obtaining own payroll schemes for a specific team member - [GET /v1/company/{location_id}/salary/staff/{team_member_id}/salary_schemes](https://developer.alteg.io/en/salary/get_team_member_salary_schemes.md): The method allows you to get own salary calculation schemes for a specific team member. In the user's access rights, the checkbox "Access to payroll only for a specific team member" must be specified. ## Custom Fields [Custom fields in the product knowledge base](https://alteg.io/en/support/knowledge-base/4858681446941-additional-fields/) Additional custom field definitions for extending entity data structures. ### Getting a collection of location fields - [GET /v1/custom_fields/{field_category}/{location_id}](https://developer.alteg.io/en/custom-fields/get_custom_field_list.md) ### Adding a Custom Field - [POST /v1/custom_fields/{field_category}/{location_id}](https://developer.alteg.io/en/custom-fields/create_custom_field.md): To add a field, the user must be part of the Chain associated with the location and have the appropriate access rights in the following section: Settings → Access → Custom Fields → Create custom fields ### Update a Custom Field - [PUT /v1/custom_fields/{field_category}/{location_id}/{field_id}](https://developer.alteg.io/en/custom-fields/update_custom_field.md): To update a field, the user must be part of the Chain associated with the location and have the appropriate access rights in the following section Settings → Access → Custom Fields → Modify custom fields ### Remove a Custom Field from a Location - [DELETE /v1/custom_fields/{field_category}/{location_id}/{field_id}](https://developer.alteg.io/en/custom-fields/delete_custom_field.md): To remove a field, the user must be part of the Chain associated with the location and have the appropriate access rights in the following section: Settings → Access → Custom Fields → Remove custom fields ## Chain Management [Chains in the product knowledge base](https://alteg.io/en/support/knowledge-base/4905257602333-main-chain-settings/) Chain-level operations for managing multiple locations within a business chain. ### Obtaining chains available to the user - [GET /v1/groups](https://developer.alteg.io/en/chain-management/get_chain_list.md): The location chain object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | id | number | Location chain ID | | title | string | Location chain name | | locations | array | List of chain locations | | access | object | Object with access rights for chain management | ### Get a chain client by phone number. - [GET /v1/group/{chain_id}/clients](https://developer.alteg.io/en/chain-management/get_chain_client_by_phone_number.md): + Parameter + group_id (required, number, 43877) - ID of the location chain #### Client filtering + phone:'+13155550175' (optional, string) - Phone to filter clients ## Chain Loyalty Programs [Loyalty programs in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/loyalty-programs/) Chain-level loyalty program management including programs, transactions, and message templates. ### Freeze membership - [POST /v1/chain/{chain_id}/loyalty/abonements/{membership_id}/freeze](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_memberships_freeze.md): Freezes a subscription (membership) until the specified date. The subscription's expiration date will be extended by the freeze period. Frozen subscriptions cannot be used for appointments. Requirements: - Membership type must have allow_freeze: true - Freeze period must not exceed freeze_limit from membership type Note: Requires chain-level permissions. ### Unfreeze membership - [POST /v1/chain/{chain_id}/loyalty/abonements/{membership_id}/unfreeze](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_memberships_unfreeze.md): Removes the freeze from a subscription (membership). The subscription's expiration date will remain extended by the freeze period that was already applied during the freeze. Note: Requires chain-level permissions. ### Change membership balance - [POST /v1/chain/{chain_id}/loyalty/abonements/{membership_id}/set_balance](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_memberships_set_balance.md): Modifies the remaining visit count for a subscription (membership). For unified balance subscriptions: - Use united_balance_services_count to set total visits For separate balance subscriptions: - Use services_balance_count array with service_id and balance for each service/category Use cases: - Adjust balance after administrative changes - Correct errors in visit counts - Add bonus visits Note: Requires chain-level permissions. ### Change membership validity period - [POST /v1/chain/{chain_id}/loyalty/abonements/{membership_id}/set_period](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_memberships_set_period.md): Modifies the validity period (duration) of a subscription (membership). This changes how long the subscription remains active before expiring. Period units: - 1 = day - 2 = week - 3 = month - 4 = year Use cases: - Extend expiration as customer service gesture - Adjust period after policy changes - Correct administrative errors Note: Requires chain-level permissions. ### List membership types - [GET /v1/chain/{chain_id}/loyalty/abonement_types](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_membership_types_list.md): Retrieves all membership types available in the chain. Note: Requires chain-level permissions. ### Create membership type - [POST /v1/chain/{chain_id}/loyalty/abonement_types](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_membership_types_create.md): Creates a new membership type at the chain level. Membership types define reusable packages (e.g., "10 visits", "Monthly unlimited") that can be sold across multiple locations in the chain. Important API Differences: - services and service_categories must be objects (key-value pairs), not arrays - Example: {"service_id": count} not [service_id] - Some legacy documentation shows arrays, but the real API requires objects Note: Requires chain-level permissions. ### Get membership type details - [GET /v1/chain/{chain_id}/loyalty/abonement_types/{loyalty_membership_type_id}](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_membership_types_read.md): Retrieves detailed information about a specific membership type. Note: Requires chain-level permissions. ### Update membership type - [PUT /v1/chain/{chain_id}/loyalty/abonement_types/{loyalty_membership_type_id}](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_membership_types_update.md): Updates an existing membership type. You can update basic information (title, cost, period) without modifying the service/category links. Note: To preserve existing services, pass empty arrays for services and service_categories fields. ### Delete membership type - [DELETE /v1/chain/{chain_id}/loyalty/abonement_types/{loyalty_membership_type_id}](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_membership_types_delete.md): Deletes a membership type from the chain. Warning: This action cannot be undone. Active subscriptions using this type may be affected. ### Clone membership type - [POST /v1/chain/{chain_id}/loyalty/abonement_types/{loyalty_membership_type_id}/clone](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_membership_types_clone.md): Creates a copy of an existing membership type with a new ID. The cloned membership type will: - Have the same settings (cost, period, services, etc.) - Get a modified title with " (2)" suffix automatically added - Have a new unique ID - Preserve all service/category links from the original Note: Requires chain-level permissions. ### Restore deleted membership type - [POST /v1/chain/{chain_id}/loyalty/abonement_types/{loyalty_membership_type_id}/restore](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_membership_types_restore.md): Restores a previously deleted membership type. Note: Requires chain-level permissions. ### Archive or unarchive membership type - [PATCH /v1/chain/{chain_id}/loyalty/abonement_types/{loyalty_membership_type_id}/archive](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_membership_types_archive.md): Archives or unarchives a membership type. Archived membership types: - Cannot be sold to new clients - Existing active memberships remain functional - Can be unarchived at any time Note: Requires chain-level permissions. ### List certificate types - [GET /v1/chain/{chain_id}/loyalty/certificate_types](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_certificate_types_list.md): Retrieves a list of certificate types at the chain level. Returns all certificate types configured for the chain with optional filtering and pagination. Query Parameters: - title - Filter by certificate type name (partial match) - page - Page number (default: 1) - page_size - Items per page (default: 10, max: 100) Item Type Restrictions: - 0 = All services and products - 1 = Any services (no products) - 2 = Any products (no services) - 3 = Specific services only (no products) - 4 = Specific services + any products Expiration Types: - 0 = No expiration - 1 = Fixed date for all instances - 2 = Fixed period from sale date Expiration Units: - 1 = day - 2 = week - 3 = month - 4 = year ### Create certificate type - [POST /v1/chain/{chain_id}/loyalty/certificate_types](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_certificate_types_create.md): Creates a new certificate type at the chain level. Certificate types define gift certificate templates that can be sold across multiple locations. Item Type Restrictions: - 0 = All services and products - 1 = Any services (no products) - 2 = Any products (no services) - 3 = Specific services only (no products) - 4 = Specific services + any products Expiration Types: - 0 = No expiration - 1 = Fixed date for all instances - 2 = Fixed period from sale date Expiration Units: - 1 = day - 2 = week - 3 = month - 4 = year Balance Edit Types: - 1 = Can be edited - 2 = Cannot be edited Note: After creation, certificate products are automatically created in inventory. ### Get certificate type - [GET /v1/chain/{chain_id}/loyalty/certificate_types/{type_id}](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_certificate_types_get.md): Retrieves a specific certificate type by ID at the chain level. Returns complete certificate type configuration including expiration rules, restrictions, and online sale settings. ### Update certificate type - [PUT /v1/chain/{chain_id}/loyalty/certificate_types/{type_id}](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_certificate_types_update.md): Updates an existing certificate type at the chain level. All fields from creation are required. Use GET first to retrieve current values, then modify needed fields and send complete object. Note: Cannot update certificate types that have already been issued. ### Delete certificate type - [DELETE /v1/chain/{chain_id}/loyalty/certificate_types/{type_id}](https://developer.alteg.io/en/chain-loyalty-programs/chain_loyalty_certificate_types_delete.md): Deletes a certificate type from the chain. Warning: This action cannot be undone. Certificate types that have issued certificates cannot be deleted. ### Create a Chain Promotion - [POST /v1/chain/{chain_id}/loyalty/programs](https://developer.alteg.io/en/chain-loyalty-programs/create_chain_loyalty_program.md) ### Get a Chain Promotion - [GET /v1/chain/{chain_id}/loyalty/programs/{loyalty_program_id}](https://developer.alteg.io/en/chain-loyalty-programs/get_chain_loyalty_program.md) ### Edit Chain Promotion - [PUT /v1/chain/{chain_id}/loyalty/programs/{loyalty_program_id}](https://developer.alteg.io/en/chain-loyalty-programs/update_chain_loyalty_program.md) ### Delete Chain Promotion - [DELETE /v1/chain/{chain_id}/loyalty/programs/{loyalty_program_id}](https://developer.alteg.io/en/chain-loyalty-programs/delete_chain_loyalty_program.md) ### Get a List of Chain Loyalty Transactions - [GET /v1/chain/{chain_id}/loyalty/transactions](https://developer.alteg.io/en/chain-loyalty-programs/get_chain_loyalty_transaction_list.md) ### Get a list of loyalty notification templates - [GET /v1/chain/{chain_id}/loyalty/notification_message_templates/programs](https://developer.alteg.io/en/chain-loyalty-programs/get_chain_loyalty_notification_template_list.md) ## Fiscalization Fiscal integration for tax compliance. Manage fiscal transactions, print fiscal receipts, and configure tax systems. ### Get fiscal transactions - [GET /v1/kkm_transactions/{location_id}](https://developer.alteg.io/en/fiscalization/get_fiscal_transaction_list.md): Filters | Parameter | Description | | ------------- | ------------- | | page | Page number | | editable_length | Number of clients per page | | type | Operation type | | status | Operation status | | start_date | Period start date | | end_date | Period end date | Types of all transactions with location account | Meaning | Description | | ------------- | ------------- | | 0 | Sales operation – Active for documents of type Visit | | 1 | Sale return operation – Active for documents of type Visit | | 2 | Correction operation | | 4 | Shift opening operation – Opens a new POS shift | | 5 | Shift closing operation – Closes the current POS shift | | 9 | Get POS status – Retrieves the current status of the POS device | | 11 | Get POS team status – Retrieves the status of all POS devices connected to the team | | 12 | Correction operation | | 13 | Print X-report – Prints a non-fiscal summary report of the current shift | | 6 | Cash deposit – Registers a cash-in transaction in the POS | | 7 | Cash withdrawal – Registers a cash-out transaction in the POS | Statuses of All POS Operations | Meaning | Description | | ------------- | ------------- | | 0 | Connection error with POS – Unable to establish a connection with the POS device | | 1 | Success – Operation completed successfully | | 2 | Sent for printing – The request has been sent to the POS and is waiting for print completion | | 3 | Runtime error – An error occurred while processing the operation on the POS device | | 4 | Status check error – Failed to retrieve the current status of the POS | | 5 | Waiting for POS readiness – Operation is pending until the POS device becomes ready | Document Types | Meaning | Description | | ------------- | ------------- | | 1 | Sale of products | | 2 | Provision of services | | 3 | Arrival of products | | 4 | Products write-off | | 5 | Transfer of products | | 6 | Inventory | | 7 | Visit | | 8 | Consumables write-off | | 9 | Deposit replenishment | ### Print fiscal receipt - [POST /v1/kkm_transactions/{location_id}/print_document_bill](https://developer.alteg.io/en/fiscalization/print_fiscal_receipt.md): Types of all transactions with location account | Meaning | Description | | ------------- | ------------- | | 0 | Sale operation (active for documents with types "Visit" and "Client account replenishment") | | 1 | Sale return operation (active for documents with types "Visit" and "Client account replenishment") | | 2 | Correction operation | | 4 | Shift opening operation – Opens a new POS shift | | 5 | Shift closing operation – Closes the current POS shift | | 9 | Get POS status – Retrieves the current status of the POS device | | 11 | Get POS team status – Retrieves the status of all POS devices connected to the team | | 12 | Correction operation | | 13 | Print X-report – Prints a non-fiscal summary report of the current shift | | 6 | Cash deposit – Registers a cash-in transaction in the POS | | 7 | Cash withdrawal – Registers a cash-out transaction in the POS | Document Types | Meaning | Description | | ------------- | ------------- | | 1 | Sale of products | | 2 | Provision of services | | 3 | Arrival of products | | 4 | Products write-off | | 5 | Transfer of products | | 6 | Inventory | | 7 | Visit | | 8 | Consumables write-off | | 9 | Client account replenishment | ### List request example - [GET /v1/integration/kkm/references/tax_system/{country_id}](https://developer.alteg.io/en/fiscalization/get_tax_system_list.md): A list of tax systems and VAT available for a country can be obtained by requesting the country ID for which the list is to be obtained. The country ID can be obtained from list of countries. The list is an array of tax systems with a nested VAT array for each tax system. The taxation system has the following structure: | Field | Type | Description | | -----------------| ---------------- | ----------------------- | | title | string | Name of taxation system | | slug | string | Code name for the taxation system | | vats | Array of objects(Vat[]) | List of available VAT for the taxation system | VAT has the following structure: | Field | Type | Description | | -----------------| ---------------- | ----------------------- | | title | string | Title VAT | | slug | string | Code name VAT | ### Example of a request in case of successful fiscalization or in case of an error - [POST /v1/integration/kkm/callback](https://developer.alteg.io/en/fiscalization/handle_fiscalization_callback.md) ### Example of a request for fiscalization of a document - [POST /v1/https://your-api.url](https://developer.alteg.io/en/fiscalization/fiscalize_document.md) ## Utilities Utility endpoints for validation, GDPR, image management, licensing, and tips configuration. ### Retrieve location subscription information - [GET /v1/license/{location_id}](https://developer.alteg.io/en/utilities/get_location_subscription_information.md) ### Phone number format check - [GET /v1/validation/validate_phone/{phone}](https://developer.alteg.io/en/utilities/phone_number_format_check.md): The transferred phone number is checked for compliance with Altegio rules. ### Image upload - [POST /v1/images/{entity}](https://developer.alteg.io/en/utilities/upload_image.md): The response object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | image_binded | boolean | Status of linking images to an entity | | image_group | object | Image group object | ### Deleting images - [DELETE /v1/images/{entity}](https://developer.alteg.io/en/utilities/delete_image.md): The response object has the following fields: | Field | Type | Description | | ------------- | ------------- | ------------- | | success | boolean | Deletion result | ### Get a list of location team members with their tip settings - [GET /v1/tips/{location_id}/settings](https://developer.alteg.io/en/utilities/get_team_member_tip_settings.md) ### Disable Tips for the team member - [POST /v1/tips/{location_id}/settings/{master_tips_settings_id}/disable](https://developer.alteg.io/en/utilities/disable_team_member_tips.md) ### Enable Tips for the team member - [GET /v1/tips/{location_id}/settings/{master_tips_settings_id}/enable](https://developer.alteg.io/en/utilities/enable_team_member_tips.md) ## Marketplace [Integrations in the product knowledge base](https://alteg.io/en/support/knowledge-base/categories/integration-marketplace/) Application marketplace integration for third-party applications. **Integration workflow:** * Partner provides domain name, registration URL, and callback URL * User authorizes and is redirected to partner registration page * Partner redirects back to Altegio after successful registration * Partner confirms service activation via payment callback ### Data About Locations Connected to the Application - [GET /v1/marketplace/application/{application_id}/salons](https://developer.alteg.io/en/marketplace/list_marketplace_app_locations.md): This endpoint retrieves a list of locations that have connected a specific application, along with detailed information about each. ### Get application tariffs - [GET /v1/marketplace/application/{application_id}/tariffs](https://developer.alteg.io/en/marketplace/marketplace_partner_applications_tariffs_list.md): Retrieves list of tariffs for the application. Note: For marketplace partners only. ### Set payment discount for locations - [POST /v1/marketplace/application/add_discount](https://developer.alteg.io/en/marketplace/marketplace_partner_application_add_discount.md): Sets a payment discount for specific locations when they pay through Altegio platform. Note: This endpoint is intended for marketplace partners only. Requires marketplace partner authorization. ### Generate payment link - [GET /v1/marketplace/application/payment_link](https://developer.alteg.io/en/marketplace/marketplace_partner_application_payment_link.md): Generates a payment link for application payment through Altegio platform. Note: For marketplace partners only. ### Update notification channel availability - [POST /v1/marketplace/application/update_channel](https://developer.alteg.io/en/marketplace/marketplace_partner_applications_update_channel.md): Updates available notification channels for the application. Note: Only for Chat Bots and SMS Aggregators category applications. For marketplace partners only. ### Application Status Data for Any Location - [GET /v1/marketplace/salon/{location_id}/application/{application_id}](https://developer.alteg.io/en/marketplace/get_marketplace_integration_status.md): This endpoint is used to retrieve information about the application's installation status in a specific location. ### Application Uninstall - [POST /v1/marketplace/salon/{location_id}/application/{application_id}/uninstall](https://developer.alteg.io/en/marketplace/uninstall_marketplace_app.md): This endpoint is used by the partner service to uninstall the application from a specific location. ### Application Installation for a Location - [POST /v1/marketplace/partner/callback](https://developer.alteg.io/en/marketplace/marketplace_notification_settings_callback.md): The integration settings of the partner service must be sent to this address. Once received, the application will be configured and installed for the corresponding location. ### Redirect URL after user registration with the partner service - [POST /v1/marketplace/partner/callback/redirect](https://developer.alteg.io/en/marketplace/marketplace_notification_settings_redirect_callback.md): After completing registration, the user must be redirected to this URL in the browser, along with any required data needed by the partner service. ### Notify Altegio of Successful Payment - [POST /v1/marketplace/partner/payment](https://developer.alteg.io/en/marketplace/marketplace_notification_payment_callback.md): A webhook notification must be sent to this address to inform Altegio of a successful payment made on the partner service’s side. ### Chargeback Notice - [POST /v1/marketplace/partner/payment/refund/{payment_id}](https://developer.alteg.io/en/marketplace/marketplace_payment_refund_callback.md): Chargeback Notice ### Notify Altegio of Available SMS Sender Names - [POST /v1/marketplace/partner/short_names](https://developer.alteg.io/en/marketplace/set_marketplace_notification_short_names.md): This endpoint is used to send the list of SMS sender names available to the user. The user will be able to choose from any of the provided sender names. ### Webhook from Altegio About Application Events - [POST /v1/marketplace_webhook](https://developer.alteg.io/en/marketplace/marketplace_webhook.md): Note: This is not a callable endpoint. This section describes how Altegio sends webhook notifications when specific events occur in the application-to-location lifecycle. The following event types are currently supported: * uninstall — Sent when the application is disabled on the Altegio side. * freeze — Sent when the integration is frozen due to service expiration. You can configure the webhook URL for receiving these events in your Altegio Developer Account. ## Webhooks Webhook configuration for receiving real-time event notifications from Altegio. ### Get event notification settings - [GET /v1/hooks_settings/{location_id}](https://developer.alteg.io/en/webhooks/get_event_notification_settings.md) ### Change Event Notification Settings - [POST /v1/hooks_settings/{location_id}](https://developer.alteg.io/en/webhooks/update_event_notification_settings.md) ## VoIP Integration VoIP integration for managing phone calls and call history within Altegio. ### VoIP events - [POST /v1/voip/integration](https://developer.alteg.io/en/voip-integration/handle_voip_integration_event.md): #### Enable integration To use the api and activate access to the settings in the user interface, you need to activate the integration by sending the "Enable integration" request. After a successful connection, access to the section with routing settings will be opened in the chain user interface. #### Disable integration To disable the integration, you can use the "Disable integration" method. After the integration is disabled, access to the user interface settings section is closed, the requests "Call notification" and "Call information saving" are not processed. #### Call notification To display notifications about an incoming call, the "Call notification" method is used, the call type ("incoming", "outgoing", "internal") is specified in the parameters, but currently notifications are displayed only for the "incoming" value. Notifications are displayed for users defined based on routing settings. When specifying the "user" and "diversion" parameters at the same time, "user" is the priority when searching for routes. #### Saving call information The information about the call is automatically saved to the chain history and to the history of chain locations in accordance with the call routing settings. ### Get Location's Call List - [GET /v1/voip/integration/calls](https://developer.alteg.io/en/voip-integration/list_voip_calls.md): This endpoint is designed to get a list of calls in a location, taking into account filters and pagination ## Dictionaries Reference data including countries, cities, business types, and industry classifications. ### Get a list of countries - [GET /v1/countries](https://developer.alteg.io/en/dictionaries/get_country_list.md) ### Get a list of cities - [GET /v1/cities](https://developer.alteg.io/en/dictionaries/get_city_list.md) ### Get business types by group - [GET /v1/references/business_groups_with_types](https://developer.alteg.io/en/dictionaries/get_business_types_by_group.md)