Skip to content

evotor/evotor-publisher-java-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Апи для публикатора

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

Аутентификация выполняется через oauth: Resource Owner Password http://oauthbible.com/#oauth-2-two-legged

curl -X POST "https://${client_id}:${client_secret}@oauth.evotor.ru/oauth/token?username=${publisher_email}&password=${publisher_password}&grant_type=password"

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

{
"access_token":"eyJhbGci...",
"token_type":"bearer",
"refresh_token":"eyJhbGci...",
"expires_in":1799,
"scope": "push-notification:write event:read app:read"
}

Также допустимо использование персональных токенов разработчика, которые являются частным случаем oauth.

Замечания

  1. Срок жизни токена может быть изменен на стороне сервера

Events Api

Все прикладные события, помимо уведомления через webhook'и, доступны через rest апи. Более того, использование Event streaming позволяет отказаться от webhook'ов.

Получение за заданный интервал времени

 curl -X GET  -H 'Authorization: bearer {OAUTH_TOKEN}' -H 'Accept: application/vnd.evotor.v2+json' https://dev.evotor.ru/apps/{application_id}/events?since={timestamp}&until={until}&types={optional_event_types}'

Поле since не является обязательным. Дата, с которой получить последующие события - UNIX timestamp. Полу until не является обязательным. По-умолчанию равна now() Поле types не является обязательным. Фильтр для типов забытий - конкатенация названий типов через запятую. По-умолчанию возвращаются все события заданного приложения.

Запрос возвращает первую страницу. Пример ответа:

{
"items": [
{
            "id": "d8f8ad3e-4d3a-4064-9fc0-a81f49098f02", 
            "payload": {
            "_comment": "<payload body>"
            }, 
            "timestamp": "2018-03-26T16:59:11.048+0000", 
            "type": "document",
            "action": "created"
        },
],
"paging": {
  "next_cursor": "<cursor string value>"
}
}

Для получения последующих страниц требуется указать значение курсора:

 curl -X GET  -H 'Authorization: bearer {OAUTH_TOKEN}' https://dev.evotor.ru/apps/{application_id}/events?cursor={cursor string value}'

Пустой объект paging означает достижение последней страницы

Event streaming

 curl -X GET  -H 'Authorization: bearer {OAUTH_TOKEN}' -H 'Accept: application/stream+json' https://dev.evotor.ru/apps/{application_id}/events?since={timestamp}'

При указании Accept_Type равным application/stream+json будет использоваться https://en.wikipedia.org/wiki/JSON_streaming с разделителем '\n'. Содержимое каждого отдельного события не отличается от описанных выше. С целью поддержания постоянного соединения, каждые 30 секунд сервер отправляет техническое событие вида:

{
  "id":"139ab11a-d917-4ad9-b36e-5049f7393aad",
  "type": "system",
  "action": "ping"
}

Поддерживаемые типы

  • document
  • store
  • employee
  • device

Push notifications

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

curl -X POST 'https://dev.evotor.ru/apps/{application_id}/push-notifications' -d '{"devices":["device-guid-1", "device-guid-2"],"payload":{"magic_field":123456,"magicString":"STR"}, "active_till": {timestamp}}' -H 'Content-Type:application/json' -H "Authorization: bearer {OAUTH_TOKEN}"

Обязательное поле devices является списком идентификаторов устройств, которым будет отправлен пуш. Опциональное поле active_till указывает дату, до которой пуш считается активным. Если при достижении указанной даты, пуш не будет принят устройством, то пуш становится неактивным. По-умолчанию равно now() + 2 days Обязательное поле payload - сообщение, которое будет передано устройствам.

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

{
  "id": "<task identifier>",
  "status": "task status: [ACCEPTED, RUNNING, FAILED, COMPLETED]", 
  "details": [
    {
      "device_id": "device-guid-1",
      "status": "delivery status: [ACCEPTED, DELIVERED, EXPIRED, REJECTED]"
    },
    {
      "device_id": "device-guid-2",
      "status": "delivery status: [ACCEPTED, DELIVERED, EXPIRED, REJECTED]"
    }
  ]
}

Допустимые статусы:

  • ACCEPTED - принято
  • DELIVERED - доставлено
  • EXPIRED - достигнуто active_till
  • REJECTED - отклонена сервером
  • UNKNOWN - (по-умолчанию) неизвестная ошибка

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

curl -X GET 'https://dev.evotor.ru/apps/{application_id}/push-notifications/{task identifier}' -H 'Accept: application/vnd.evotor.v2+json' -H "Authorization: bearer {OAUTH_TOKEN}"

About

Java sdk for publisher cloud api

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages