Общие сведения
Надежность и безопасность
Общие концепции
Начало работы
Учёт времени
Управление проектами
Управление ресурсами
Управление финансами
Управление биллингом
Управление затратами
Аналитика
Типы виджетов
Общие отчёты и шаблоны
Использование отчётов
Настройка отчёта
Пользовательские настройки отчёта
Вычисляемые поля
Выражения вычисляемых полей
Использование панелей мониторинга
Публикация панелей
Фильтры источников данных
Группировка данных в отчете
Группировка и суммирование данных источника
Типы отчётов
Настройка и администрирование
Типовой порядок настройки системы
API
История изменений
On-premises

Общие сведения об API

Обновлено: 26.12.2023

Назначение

API Timetta может использоваться при создании сторонних интеграции для манипулирования данными абонента в обход веб-интерфейса Timetta.

Использование

Архитектура

Timetta реализует OData v4 API доступный на конечной точке https://api.timetta.com/odata
Метаданные API в виде XML доступны по адресу https://api.timetta.com/odata/$metadata

Примечание

Спецификация OData доступна на официальном сайте — https://www.odata.org. Если вы не знакомы с этим протоколом, то рекомендуем до разработки интеграции освоить, как минимум, базовые понятия — https://www.odata.org/getting-started/understand-odata-in-6-steps.

Для аутентификации используется отдельный OAuth 2.0 сервис доступный по адресу https://auth.timetta.com. Подробнее — Аутентификация.

В большинстве случаев любая сущность управляется стандартными методами (POST, GET, PUT, PATCH, DELETE). Поддерживается язык запросов OData. Для отдельных сущностей доступны специализированные действия и функции.

Важно

Timetta — развиваемая система. Версионирования API нет. Мы прилагаем все усилия для недопущения критических изменений, если таковые есть — предупреждаем минимум за 14 дней, но при разработке интеграций необходимо быть готовым поддерживать её актуальность.

Поля навигации

Сущности могут содержать поля навигации. Например, сущность User содержит навигационное свойство Department. Такое поле всегда идет в паре с ключом, в данном случае departmentId.

Примечание

В описании сущностей мы опускаем упоминание о наличии ключа навигации.

Поля навигации можно «раскрывать» при запросе, используя параметр expand:

[GET] https://api.timetta.com/odata/Users(a5e16802-23d9-48be-99bb-02d9e34c7409)?
$select=name,departmentId&$expand=department($select=name)

Response: 
{
   "name": "Иван Агафонов",
   "departmentId": "9468cd5c-ea04-4adb-a1d7-94b6b910ab2e"
   "department": 
   {
      "name": "Департамент корпоративного аудита 02"
   }
}

Для обновления полей навигации необходимо использовать их ключи, например:

[PATCH] https://api.timetta.com/odata/Users(a5e16802-23d9-48be-99bb-02d9e34c7409)  

Payload: 
{   
   "departmentId": "9468cd5c-ea04-4adb-a1d7-94b6b910ab2e"   
}

Обработка ответа

В случае успешного выполнения операции возвращается ответ с HTTP кодом 200-204.

В случае ошибки аутентификации (чаще всего ввиду не переданного/истекшего Bearer token) возвращается ответ с HTTP кодом 401.

В случае ошибки доступа к сущности из-за отсутствия прав (см. статью Как работают права доступа) может вернуться ответ с HTTP кодом 403-404.

В случае ошибки в бизнес-логике возвращается ответ с HTTP кодом 500 и телом в формате:

{
    "error": {
        "code": "error code",
        "message": "error description",        
        "details": {}
    }
}

Тестирование и отладка

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

Примеры использования API

Примечание

Примеры запросов доступны на узле https://postman.timetta.com.

Для изучения и отладки запросов скопируйте коллекцию в свой аккаунт Postman.

  • Для отладки потребуется действующий пользователь.
  • В настройках коллекции введите значение для переменных user_email и user_password.
  • Все запросы требуют авторизации через токен доступа. Для получения токена доступа выполните запрос Get Access Token. Запрос использует учетные данные пользователя из настроенных переменных, получает access_token, и записывает его в переменную access_token. Далее этот токен используется во всех прочих запросах.
  • Время жизни access_token — 1 час. Далее необходимо выполнить запрос Get Access Token повторно.

Содержание

Назначение Использование Архитектура Поля навигации Обработка ответа Тестирование и отладка Примеры использования API
Ничего не найдено

Перейти на русскую версию?