事件订阅服务(ESS) API使用标准SAP Concur OAuth2框架通过JSON Web令牌(JWT)进行身份验证和授权。
身份验证是通过使用表示事件订阅者的JWT完成的。可以通过调用客户端凭证使用OAuth2凭据授予类型。由该授权产生的JWT将具有JWT类型
的应用程序
你的应用程序ID
是主题
的令牌。
对于授权,应用程序需要包含范围events.topic.read
以便访问ESS API。这个范围将在客户机凭证授予期间由JWT继承,然后由ESS API检查。
当调用ESS API时,在Post Header中传递JWT:
授权:无记名< JWT >
JWT的客户凭证有效期为60分钟,只能通过客户凭证授予再次获得。
在创建任何订阅之前,需要验证对主题有足够的访问权限。如果该请求返回空响应,则需要与SAP Concur联系人联系,为OAuth2应用程序设置适当的范围。
请求
获得/事件/ v4 /主题
响应
[“public.test”]
要创建订阅,您需要:
.*
(regexp语法),您可以稍后使用它来过滤不需要的事件类型。请求
把/事件/ v4 /订阅/ webhook
{“id”:“my-unique-subscription-id”,“过滤”:“。*”,“主题”:“public.test”,“webHookConfig”:{“端点”:“https://www.concuress.com/sub/my-valid-endpoint”}}
请求参数
的名字 | 类型 | 格式 | 描述 |
---|---|---|---|
Id |
字符串 |
小写字母,数字,”。”和“-” | 您唯一的订阅名称。建议你使用一些不言自明的东西。例如:my-company.my-scenario.env.version |
过滤器 |
字符串 |
正则表达式 | 允许您减少交付事件到某一类型的数量。示例中,设置eventCreated 将只交付此事件类型,其他事件类型将被跳过。设置为”。* "接收主题中的所有事件。 |
主题 |
字符串 |
- | 主题,您订阅的事件流。 |
端点 |
字符串 |
URL | 事件将被交付的端点。 |
响应
{“消息”:"成功保存订阅'my-unique-subscription-id' "}
您总是可以请求订阅的配置。您可能会注意到,订阅包含一些由于安全性原因不能修改的参数,但可以将它们用于故障排除。
applicationId
-确定您的应用程序是该订阅的所有者。companyIds
-允许您的应用程序访问其数据的公司的uuid列表,并描述了连接公司到您的应用程序的过程在这里.请求
得到/事件/ v4 /订阅/ my-unique-subscription-id
响应
[{“id”:“my-unique-subscription-id”,“主题”:“public.test”,“过滤”:“。*”,“webHookConfig”:{“端点”:“https://www.concuress.com/sub/my-valid-endpoint”},“applicationId”:“dabd27f0 - 23 - e7 - 415 d - b5e5 - 19 - a7dbe4fb4d”,“范围”:"",“组织”:[],“companyIds”:[]}]
响应参数
的名字 | 类型 | 格式 | 描述 |
---|---|---|---|
Id |
字符串 |
小写和。- \ d | 你唯一的订阅名。建议你使用一些不言自明的东西。例如:my-company.my-scenario.env.version |
过滤器 |
字符串 |
正则表达式 | 允许您减少交付事件到某一类型的数量。示例中,设置eventCreated 将只交付此事件类型,其他事件类型将被跳过。设置为”。* "接收主题中的所有事件。 |
主题 |
字符串 |
- | 主题,您订阅的事件流。 |
端点 |
字符串 |
URL | 事件将被交付的端点。 |
applicationId |
字符串 |
UUID | 用于生成JWT的伙伴应用程序。应用程序用于建立订阅所有者。 |
companyIds |
列表 | uuid的列表 | 已连接到允许交付事件的合作伙伴应用程序的公司uuid列表。 |
组 |
列表 | - | 为将来的支持场景保留。 |
范围 |
字符串 |
- | 为将来的支持场景保留。 |
如果您碰巧忘记了您的订阅名称/id,您总是可以通过调用以下端点检索所有订阅:
请求
/事件/ v4 /订阅
响应
[{“id”:“my-second-unique-subscription-id”,“主题”:“public.test”,“过滤”:“。*”,“webHookConfig”:{“端点”:“https://www.concuress.com/sub/my-second-valid-endpoint”},“applicationId”:“dabd27f0 - 23 - e7 - 415 d - b5e5 - 19 - a7dbe4fb4d”,“范围”:"",“组织”:[],“companyIds”:[]},{“id”:“my-unique-subscription-id”,“主题”:“public.test”,“过滤”:“。*”,“webHookConfig”:{“端点”:“https://www.concuress.com/sub/my-valid-endpoint”},“applicationId”:“dabd27f0 - 23 - e7 - 415 d - b5e5 - 19 - a7dbe4fb4d”,“范围”:"",“组织”:[],“companyIds”:[]}]
请求
删除/事件/ v4 /订阅/ my-unique-subscription-id
响应
{“消息”:"订阅'my-unique- subscribe -id'标记为删除"}
头
PUT /events/v4/subscriptions/webhook HTTP/1.1 Content-Type: application/json
身体
{"id": "my-unique- subscribe -example", "filter": "。*”、“主题”:“公众。"webHookConfig": {"endpoint": "https://www.concuress.com/sub/my-unique-endpoint"}}
旋度
curl - x将https://www-us.api.concursolutions.com/events/v4/subscriptions/webhook \ \ - h的接受 : */*' \ - H接受编码:gzip压缩\ - H的授权:无记名eyJ0e * * * * * MY-SECRET-JWT-HERE ********' \ - H的cache - control: no - cache \ - H的Concur-Correlationid: something-unique-and-trackable \ - H的连接:维生\ - H - type:application/json' \ -H 'Host: www-us.api.concursolutions.com' \ -H 'cache-control: no-cache' \ -d '{"id": "my-unique- subscribe -example-2", "filter": "。*”、“主题”:“公众。"webHookConfig": {"endpoint": "https://www.concuress.com/sub/my-unique-endpoint"}}'