API интерфейс используется для того, чтобы интегрировать возможности сервиса ПрофиГид в личный проект клиента. API поддерживает REST структуру и работает по протоколу HTTPS, все ответы приходят в виде JSON. При отправке POST и PUT запросов тело необходимо передавать в виде JSON и в заголовке указывать Content-type: application/json; charset=utf-8.


Основной URL

Все ссылки на запросы к API в данной документации включают обязательный основной URL:

  
    https://api.profi.guide/
  

Авторизация

Процесс авторизации возможен при наличии персонального ключа (токена), которым в дальнейшем должен быть подписан каждый запрос к API. Код ключа (токен) передается в заголовке любого запроса (в "headers") кроме случаев получения самого токена, когда этот код не требуется. Необходимые для получения ключа параметры можно найти в настройках, во вкладке Ключи для интеграции по API.

Для получения ключа отправляется POST запрос по ссылке:

  
    https://api.profi.guide/v1/oauth2/token
  

Параметры запроса:

public_key Ваш публичный ключ
private_key Ваш секретный ключ

Пример ответа:

  
    {
      "access_token": "tf4Si1LydYpTAPyHXUgjig72jlrd5HpIJL5oigmc",
      "token_type": "Bearer",
      "expires_in": 3600
    }
  

Пример ключа:

  
    Authorization: Bearer tf4Si1LydYpTAPyHXUgjig72jlrd5HpIJL5oigmc
  

Обратите внимание, что полученный ключ действителен в течение 1 часа и не требует повторного запроса при каждой операции. По истечении срока действия ключа (1 час) необходимо отправить повторный запрос на получение ключа


Получение списка записей

Для того чтобы получить список записей необходимо отправить GET запрос на URL:

  
    https://api.profi.guide/v1/reservations
  

Опциональные параметры запроса:

limit Сколько позиций будет вынуто. Максимальное значение 50, значение по умолчанию 20.
start Начиная с какой позиции по счету будут получены данные. Значение по умолчанию 0.
start_date Начиная с какой даты получить записи. Формат '%Y-%m-%d'
end_date Заканчивая какой датой получить записи. Формат '%Y-%m-%d'
point_id Идентификатор салона
resource_id Идентификатор сотрудника
client_id Идентификатор клиента
is_finished Получить только завершенные записи
is_created_by_client Получить записи созданные клиентом

Пример ответа:

  
    {
      "reservations": [
        {
          "id": 6757,
          "client_id": 6,
          "point_id": 11,
          "resource_id": 31,
          "operator_created_id": 27,
          "operator_finished_id": 27,
          "write_off_id": 188,
          "code": "lTt47Ny",
          "create_date": "2021-03-13T17:25:50.909222+00:00",
          "start_date": "2021-03-13T11:05",
          "end_date": "2021-03-13T13:15",
          "client_note": null,
          "operator_note": "",
          "total_cost": 1246.0,
          "amount_cash": 0.0,
          "amount_card": 1246.0,
          "amount_prepayment": 0.0,
          "client_state": "came",
          "source": "lk",
          "is_created_by_client": false,
          "is_new_client": false,
          "is_finished": true,
          "is_deleted": false,
          "loyalty_accrual_amount": 87.22,
          "loyalty_write_off_amount": 0.0,
          "is_sms_sent": false,
          "is_email_sent": false,
          "kk_receipt_id": "35764073",
          "kk_receipt_url": "https://kassa.komtet.ru/receipts?id=35764073&external_id=6757_1615656359.1934085",
          "date": "2021-03-13",
          "duration": 130,
          "point": {
            "id": 11,
            "city_id": 1109,
            "tube_station_id": 37,
            "vendor_id": 7,
            "name": "Карамель на Новозаводской",
            "overview": "Универсальный салон красоты",
            "address": "ул. Новозаводская, д.11",
            "address_overview": "",
            "latitude": 55.94171018828884,
            "longitude": 37.34734982734676,
            "site": "",
            "contact_phone": "+7(905)753-00-00",
            "contact_email": "test@test.ru",
            "is_deleted": false,
            "review_rating": 0.0,
            "review_wilson_score": 0.0,
            "review_count": 0,
            "is_allow_online_booking": true,
            "is_verified": true,
            "is_on_moderation": false,
            "is_resources_first": false
          },
          "resource": {
            "id": 31,
            "vendor_id": 7,
            "name": "Людмила",
            "phone": "+79277777777",
            "email": "test1@test.com",
            "role": "manager",
            "specialization": "Мастер маникюра",
            "review_rating": 0.0,
            "review_wilson_score": 0.0,
            "review_count": 0,
            "last_login_time": "2021-03-13T17:28:28.140714+00:00",
            "is_show_client_contacts": true,
            "is_deleted": false,
            "is_email_verified": true,
            "photo": {
              "id": "863651de90b625e643f7107b72918caa.jpg",
              "name": "863651de90b625e643f7107b72918caa.jpg",
              "size": false,
              "src": "e2/f8/41/a1/2b/43/4a/a2/b4/33/ce/9b/3a/0d/34/fb/e2f841a12b434aa2b433ce9b3a0d34fb.jpg",
              "thumb_src": "5b/a3/6d/3e/e2/f6/8a/f4/39/8a/8d/87/8e/fe/63/e0/5ba36d3ee2f68af4398a8d878efe63e0.jpg"
            }
          },
          "client": {
            "id": 6,
            "vendor_id": 7,
            "user_id": null,
            "loyalty_level_id": 5,
            "point_id": 10,
            "name": "Виктор Иванов",
            "phone": "+79279999999",
            "email": "test@test.com",
            "birthday": "1986-05-15",
            "is_male": true,
            "note": "Тестовое примечание",
            "reg_date": "2020-03-29T19:16:35.236817+00:00",
            "is_block_sms": false,
            "is_deleted": false,
            "loyalty_balance": 1232.1,
            "deposit_balance": 1400.0
          },
          "reservation_services": [
            {
              "id": 31648,
              "reservation_id": 6757,
              "service_id": 2321,
              "duration": 130,
              "price": 1200.0,
              "quantity": 1.0,
              "discount": 0.0,
              "total": 1200.0,
              "service": {
                "id": 2321,
                "vendor_id": 7,
                "point_id": 11,
                "service_category_id": 427,
                "name": "Креативная стрижка",
                "duration": 130,
                "min_price": 1200,
                "max_price": 1600,
                "vat": "20",
                "description": "",
                "order": 0,
                "is_deleted": false,
                "is_displayed": true
              }
            }
          ],
          "reservation_products": [
            {
              "id": 1563,
              "reservation_id": 6757,
              "product_id": 4996,
              "price": 46.0,
              "quantity": 1.0,
              "discount": 0.0,
              "total": 46.0,
              "is_in_receipt": true,
              "product": {
                "id": 4996,
                "vendor_id": 7,
                "point_id": 11,
                "product_category_id": 279,
                "external_id": null,
                "name": "Разглаживающий кондиционер для волос Brazilian Blowout Anti-Frizz Conditioner",
                "description": "Способствует глубокому увлажнению, прекрасно облегчает расчесывание волос. Кондиционер питает волосы, разглаживает их и придает блеск. Защищает от воздействия вредных факторов и солнца.",
                "measure_name": "порций",
                "barcode": "",
                "manufacturer_code": "",
                "vat": "no",
                "type": "consumable",
                "purchase_price": 40.0,
                "selling_price": 46.0,
                "quantity": -4.0,
                "min_quantity": 0.0,
                "order": 0,
                "is_deleted": false,
                "is_displayed": true
              }
            }
          ]
        }
      ]
    }
  

Получение записи

Для того чтобы получить конкретную запись необходимо отправить GET запрос на URL:

  
    https://api.profi.guide/v1/reservations/:id
  

Пример ответа:

  
    {
      "reservation": {
        "id": 6757,
        "client_id": 6,
        "point_id": 11,
        "resource_id": 31,
        "operator_created_id": 27,
        "operator_finished_id": 27,
        "write_off_id": 188,
        "code": "lTt47Ny",
        "create_date": "2021-03-13T17:25:50.909222+00:00",
        "start_date": "2021-03-13T11:05",
        "end_date": "2021-03-13T13:15",
        "client_note": null,
        "operator_note": "",
        "total_cost": 1246.0,
        "amount_cash": 0.0,
        "amount_card": 1246.0,
        "amount_prepayment": 0.0,
        "client_state": "came",
        "source": "lk",
        "is_created_by_client": false,
        "is_new_client": false,
        "is_finished": true,
        "is_deleted": false,
        "loyalty_accrual_amount": 87.22,
        "loyalty_write_off_amount": 0.0,
        "is_sms_sent": false,
        "is_email_sent": false,
        "kk_receipt_id": "35764073",
        "kk_receipt_url": "https://kassa.komtet.ru/receipts?id=35764073&external_id=6757_1615656359.1934085",
        "date": "2021-03-13",
        "duration": 130,
        "resource": {
          "id": 31,
          "vendor_id": 7,
          "name": "Людмила",
          "phone": "+79277777777",
          "email": "test1@test.com",
          "role": "manager",
          "specialization": "Мастер маникюра",
          "review_rating": 0.0,
          "review_wilson_score": 0.0,
          "review_count": 0,
          "last_login_time": "2021-03-13T17:28:28.140714+00:00",
          "is_show_client_contacts": true,
          "is_deleted": false,
          "is_email_verified": true,
          "photo": {
            "id": "863651de90b625e643f7107b72918caa.jpg",
            "name": "863651de90b625e643f7107b72918caa.jpg",
            "size": false,
            "src": "e2/f8/41/a1/2b/43/4a/a2/b4/33/ce/9b/3a/0d/34/fb/e2f841a12b434aa2b433ce9b3a0d34fb.jpg",
            "thumb_src": "5b/a3/6d/3e/e2/f6/8a/f4/39/8a/8d/87/8e/fe/63/e0/5ba36d3ee2f68af4398a8d878efe63e0.jpg"
          }
        },
        "client": {
          "id": 6,
          "vendor_id": 7,
          "user_id": null,
          "loyalty_level_id": 5,
          "point_id": 10,
          "name": "Виктор Иванов",
          "phone": "+79279999999",
          "email": "test@test.com",
          "birthday": "1986-05-15",
          "is_male": true,
          "note": "Тестовое примечание",
          "reg_date": "2020-03-29T19:16:35.236817+00:00",
          "is_block_sms": false,
          "is_deleted": false,
          "loyalty_balance": 1232.1,
          "deposit_balance": 1400.0
        },
        "reservation_services": [
          {
            "id": 31648,
            "reservation_id": 6757,
            "service_id": 2321,
            "duration": 130,
            "price": 1200.0,
            "quantity": 1.0,
            "discount": 0.0,
            "total": 1200.0,
            "service": {
              "id": 2321,
              "vendor_id": 7,
              "point_id": 11,
              "service_category_id": 427,
              "name": "Креативная стрижка",
              "duration": 130,
              "min_price": 1200,
              "max_price": 1600,
              "vat": "20",
              "description": "",
              "order": 0,
              "is_deleted": false,
              "is_displayed": true
            }
          }
        ],
        "reservation_products": [
          {
            "id": 1563,
            "reservation_id": 6757,
            "product_id": 4996,
            "price": 46.0,
            "quantity": 1.0,
            "discount": 0.0,
            "total": 46.0,
            "is_in_receipt": true,
            "product": {
              "id": 4996,
              "vendor_id": 7,
              "point_id": 11,
              "product_category_id": 279,
              "external_id": null,
              "name": "Разглаживающий кондиционер для волос Brazilian Blowout Anti-Frizz Conditioner",
              "description": "Способствует глубокому увлажнению, прекрасно облегчает расчесывание волос. Кондиционер питает волосы, разглаживает их и придает блеск. Защищает от воздействия вредных факторов и солнца.",
              "measure_name": "порций",
              "barcode": "",
              "manufacturer_code": "",
              "vat": "no",
              "type": "consumable",
              "purchase_price": 40.0,
              "selling_price": 46.0,
              "quantity": -4.0,
              "min_quantity": 0.0,
              "order": 0,
              "is_deleted": false,
              "is_displayed": true
            }
          }
        ]
      }
    }
  

Получение списка клиентов

Для того чтобы получить список клиентов необходимо отправить GET запрос на URL:

  
    https://api.profi.guide/v1/clients
  

Опциональные параметры запроса:

limit Сколько позиций будет вынуто. Максимальное значение 50, значение по умолчанию 20.
start Начиная с какой позиции по счету будут получены данные. Значение по умолчанию 0.
name Строка для поиска по имени
phone Строка для поиска по телефону

Пример ответа:

  
    {
      "clients": [
        {
          "id": 1,
          "vendor_id": 7,
          "user_id": null,
          "loyalty_level_id": 6,
          "point_id": 10,
          "name": "Владислав Самойлов",
          "phone": "+79279999999",
          "email": "test@test.com",
          "birthday": "2020-03-25",
          "is_male": true,
          "note": "",
          "reg_date": "2020-03-29T19:10:00.486797+00:00",
          "is_block_sms": false,
          "is_deleted": false,
          "loyalty_balance": 501.385,
          "deposit_balance": 500.0,
          "loyalty_level": {
            "id": 6,
            "loyalty_system_id": 7,
            "title": "Золотой",
            "threshold": 10000,
            "accrual_bonus_rate": 10,
            "is_active": true,
            "is_deleted": false,
            "is_public": true
          }
        }
      ]
    }
  

Получение клиента

Для того чтобы получить конкретного клиента необходимо отправить GET запрос на URL:

  
    https://api.profi.guide/v1/clients/:id
  

Пример ответа:

  
    {
      "client": {
        "id": 1,
        "vendor_id": 7,
        "user_id": null,
        "loyalty_level_id": 6,
        "point_id": 10,
        "name": "Владислав Самойлов",
        "phone": "+79279999999",
        "email": "test@test.com",
        "birthday": "2020-03-25",
        "is_male": true,
        "note": "",
        "reg_date": "2020-03-29T19:10:00.486797+00:00",
        "is_block_sms": false,
        "is_deleted": false,
        "loyalty_balance": 501.385,
        "deposit_balance": 500.0
      }
    }
  

Если для интеграции вам потребуются дополнительные методы, напишите нами, мы рассмотрим возможность расширения API.