REST.API — основная информация

АПИ Ветменеджер

ВАЖНО!

PostMan коллекция

Хост может меняться. Перед отправкой запросов в Ветменеджер нужно получить актуальный url-адрес клиники, отправив get запрос по адресу:
https://billing-api.vetmanager.cloud/host/$domain.
Rate Limit для этого API 20 запросов в минуту с одного IP-адреса. Рекомендуем закешировать результат.

Для языков php и python есть библиотеки, используя которые можно получить адрес более удобно.

PHP

https://packagist.org/packages/otis22/vetmanager-url - Получение полного URL по Домену
https://packagist.org/packages/ioncurly/vetmanager-api-gateway - Api Gateway
https://packagist.org/packages/otis22/vetmanager-rest-api - Helper при создании запросов в API


Python
https://pypi.org/project/py-vetmanager-api/  - Получение полного URL по Домену

Простая JS функция для получения URL в браузере

https://gist.github.com/otis22/daf37af3807bd66e55ac5b8937aa99d2 

Активация

Для предоставления доступа к программе необходимо получить ключ доступа в Программа -> Настройки  -> Интеграция с сервисами -> Rest Api.

Будьте внимательны, ключ позволяет осуществлять полный CRUD

REST.API - основная информация

Заголовки

X-REST-API-KEY — обязательный параметр, ключ авторизации

X-REST-TIME-ZONE — необязательный параметр, значение временной зоны, если пусто, то используется временная зона сервера, формат (+/-)HH:MM. 

Обратите внимание, что формат X-REST-TIME-ZONE:(+/-)HH:MM устарел. Вместо него лучше использовать X-REST-TIME-ZONE:Region/City. Например, X-REST-TIME-ZONE:Europe/Minsk.  

Альтернативный способ авторизации для разработчиков сервисов, интегрирующихся с Ветменеджер.

Примеры

Основные Запросы

[GET] https://yoursite.com/rest/api/post/ (returns all posts) [GET] https://yoursite.com/rest/api/post/1 (returns post with PK=1) [POST] https://yoursite.com/rest/api/post/ (create new post) [PUT] https://yoursite.com/rest/api/post/1 (update post with PK=1) [DELETE] https://yoursite.com/rest/api/post/1 (delete post with PK=1)

Фильтрация данных

/api/post/?
limit=2
&offset=1
&sort=[{'property':'title','direction':'ASC'}]
&filter=[{'property':'title', 'value':'some value'},{'property':'comment', 'value':'You need a REST', 'operator':'='}]

Доступные операторы в фильтре:

  1. ‘=’, ‘!=’ | ‘<>’
  2. ‘<‘, ‘<=’, ‘>’, ‘>=’
  3. ‘in’, ‘not in’ ( в значение value необходимо передавать массив )
  4. ‘like’
limit=2&offset=1&filter = [
{"property": "id", "value" : 50, "operator": ">="}
, {"property": "user_id", "value" : [1, 5, 10, 14], "operator": "in"}
, {"property": "state", "value" : ["save", "deleted"], "operator": "not in"}
, {"property": "date", "value" : "2013-01-01", "operator": ">="}
, {"property": "date", "value" : "2013-01-31", "operator": "<="}
, {"property": "type", "value" : 2, "operator": "!="}
]

Примеры из командной строки

GET

#List
curl -i -H "Accept: application/json" -H "X-REST-API-KEY: some_key" https://test.vetmanager.ru/rest/api/sample/

#View

curl -l -H "Accept: application/json" -H "X-REST-API-KEY: some_key" https://test.vetmanager.ru/rest/api/sample/174

1. #CustomAction
2. curl -X GET 'https://example/rest/api/CONTROLLER/CustomAction/?a=1&b=1&...' -H "Accept: application/json" -H 'X-REST-API-KEY: ******'

PUT

#Update
curl -l -H "Accept: application/json" -H "X-REST-API-KEY: some_key" -H "X-HTTP-Method-Override: PUT" -X \
PUT -d '{"id":"174","name":"Five.1 Alive one ever Updated Again","desc":"It really is or should be at an honor","notes":"this is a note"}' \
https://test.vetmanager.ru/rest/api/sample/174

POST

Create
curl -l -H "Accept: application/json" -H "X-REST-API-KEY: some_key" -X \
POST -d '{"id":"175","name":"Six Alive one ever Updated Again","desc":"It really is or should be at an honor","notes":"this is a note"}' \
https://test.vetmanager.ru/rest/api/sample

curl -l -H "Accept: application/json" -H "X-REST-API-KEY: some_key" -X \
POST -d '[{"id":"175","name":"Six Alive one ever Updated Again","desc":"It really is or should be at an honor","notes":"this is a note"}, \
{"id":"176","name":"First.3 one ever Updated Again","desc":"It really is or should be at an honor","notes":"this is a note"}]' \
https://test.vetmanager.ru/rest/api/sample

DELETE

      curl -l -H "Accept: application/json" -H "X-REST-API-KEY: some_key" -H "X-HTTP-Method-Override: DELETE" -X DELETE https://test.vetmanager.ru/rest/api/sample/175


Откуда берется временная зона (TIME_ZONE)?

Временная зона устанавливается в настройках для каждой клиники (Настройки — Настройки клиник).

При редактировании/добавлении записей с датой и временем временная зона берется из настроек клиники и устанавливает время в соответствии с выбранной временной зоной.

Например:

В клинике установлена временная зона (+02:00) Europe/Kiev.

Создаем запись с датой (например, на приём) на 2019-03-05 в 14:40:00.

Дата записи 2019-03-05 14:40:00

Меняем временную зону в настройках клиники с (+02:00) Europe/Kiev на (+03:00) Europe/Moscow.

Смотрим раннее созданную нами запись и видим, что время поменялось на час вперед 2019-03-05 15:40:00.

 

Репозиторий с примерами

Powered by