ВАЖНО!
Хост может меняться. Перед отправкой запросов в Ветменеджер нужно получить актуальный 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
Заголовки
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':'='}]
Доступные операторы в фильтре:
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.