Zendesk is a multi-tenant OAuth connector keyed by the customer subdomain. The customer enters it at connect time; it rides the signed state to the callback, is re-validated, and is stored on the connector settings to build the API host. List staff (agents and admins) via GET /api/v2/users.json with cursor pagination, mapping role, active/suspended, and 2FA status; end-users are excluded. The subdomain is validated as a single DNS label at every trust boundary to close the SSRF vector, and the data client keeps the SSRF-protected transport. Zendesk OAuth across customer subdomains requires a Zendesk-approved global OAuth client; the connector goes live once those credentials are supplied via bootstrap. Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
83 lines
2.4 KiB
YAML
83 lines
2.4 KiB
YAML
---
|
|
version: 2
|
|
interactions:
|
|
- id: 0
|
|
request:
|
|
proto: HTTP/1.1
|
|
proto_major: 1
|
|
proto_minor: 1
|
|
content_length: 0
|
|
transfer_encoding: []
|
|
trailer: {}
|
|
host: acme.zendesk.com
|
|
remote_addr: ""
|
|
request_uri: ""
|
|
body: ""
|
|
form:
|
|
page[size]:
|
|
- "100"
|
|
role[]:
|
|
- agent
|
|
- admin
|
|
headers:
|
|
Accept:
|
|
- application/json
|
|
url: https://acme.zendesk.com/api/v2/users.json?page%5Bsize%5D=100&role%5B%5D=agent&role%5B%5D=admin
|
|
method: GET
|
|
response:
|
|
proto: HTTP/2.0
|
|
proto_major: 2
|
|
proto_minor: 0
|
|
transfer_encoding: []
|
|
trailer: {}
|
|
content_length: -1
|
|
uncompressed: true
|
|
body: |
|
|
{
|
|
"users": [
|
|
{
|
|
"id": 12345,
|
|
"email": "alice@example.com",
|
|
"name": "Alice Example",
|
|
"role": "admin",
|
|
"suspended": false,
|
|
"active": true,
|
|
"two_factor_auth_enabled": true,
|
|
"last_login_at": "2025-06-01T10:00:00Z",
|
|
"created_at": "2025-01-02T03:04:05Z"
|
|
},
|
|
{
|
|
"id": 67890,
|
|
"email": "bob@example.com",
|
|
"name": "Bob Example",
|
|
"role": "agent",
|
|
"suspended": false,
|
|
"active": true,
|
|
"two_factor_auth_enabled": false,
|
|
"last_login_at": null,
|
|
"created_at": "2025-02-01T00:00:00Z"
|
|
},
|
|
{
|
|
"id": 99999,
|
|
"email": "carol@example.com",
|
|
"name": "Carol Customer",
|
|
"role": "end-user",
|
|
"suspended": false,
|
|
"active": true,
|
|
"two_factor_auth_enabled": false,
|
|
"last_login_at": null,
|
|
"created_at": "2025-03-01T00:00:00Z"
|
|
}
|
|
],
|
|
"meta": {
|
|
"has_more": false,
|
|
"after_cursor": null
|
|
}
|
|
}
|
|
headers:
|
|
Content-Type:
|
|
- application/json
|
|
status: 200 OK
|
|
code: 200
|
|
duration: 1ms
|