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

Архитектура

WorkPoint реализует OData v4 API. В большинстве случаев любая сущность управляется стандартными запросами (POST, PUT, DELETE, GET, PATCH). Поддерживается язык запросов OData (http://www.odata.org/getting-started/basic-tutorial/#queryData). Для отдельных сущностей доступны специализированные действия и функции.
Полное описание метаданных – https://workpoint-app.com/odata/$metadata.

Аутентификация

Аутентификации реализуется по протоколу OAuth 2.0. Для получения Access Token и Refresh Token необходимо вызвать конечную точку:

[POST] https://passport.workpoint-app.com/connect/token client_id=external& scope=wp_api offline_access& grant_type=password& username=***& password=****

В ответ передаются два ключа. Время жизни: Access Token — 1 час, Refresh Token — 15 дней.

Хранение логина и пароля настоятельно не рекомендуется — необходимо получить Refresh Token и использовать его для получения Access Token. Для обновления Access Token необходимо вызвать конечную точку:

[POST] https://passport.workpoint-app.com/connect/token client_id=external& scope=wp_api offline_access& grant_type=refresh_token& refresh_token=***

При каждом обновлении Access Token обновляется и Refresh Token, что обеспечивает более высокий уровень безопасности.

Для применения Access Token добавьте его в заголовок Authorization в виде строки:

Bearer ***

Примеры

Пример создания пользователя:

[POST] http://workpoint-app.com/odata/Users  

Body: 
{      
   Name: "Иван Иванов",      
   Email: "ivanov@domail.ru",      
   SupervisorId: "bcd753cc-0b80-57ae-a471-6ff7f06010e1",      
   DepartmentId: "9468cd5c-ea04-4adb-a1d7-94b6b910ab2e" 
}

Пример добавления набора прав для пользователя:

[POST] http://workpoint-app.com/odata/UserPermissionSets  
Body: 
{      
   UserId: "bcd753cc-0b80-57ae-a471-6ff7f06010e1",
   PermissionSetId: "9468cd5c-ea04-4adb-a1d7-94b6b910ab2e"
}

Пример «закрытия» пользователя:

[PATCH] http://workpoint-app.com/odata/Users(bcd753cc-0b80-57ae-a471-6ff7f06010e1)  

Body: 
{      
   IsActive: false 
}

Пример отправки письма с ссылкой на установку пароля:

[POST] http://workpoint-app.com/odata/Users(bcd753cc-0b80-57ae-a471-6ff7f06010e1)/BT.RestorePassword  

Body: 
{ }

Пример запроса пользователей для подразделения:

[GET]  workpoint-app.com/odata/Users?
 $select=Code,Name&
 $filter=DepartmentId eq 9468cd5c-ea04-4adb-a1d7-94b6b910ab2e& 
 $expand=Supervisor($select=Name)  

Response: 
[
  {      
      "Code": "020",
      "Name": "Руслан Магомедов",
      "Supervisor": null
  },
  {
      "Code": "001",
      "Name": "Иван Агафонов",
      "Supervisor":{
           "Name": "Руслан Магомедов"
      } 
  }
]