Integrations
Slack and Teams binding fields for a solo talent.
Base URL https://api.klockwork.org. Send the agency key and X-Klockwork-Talent (or talentId). The call acts as that active talent. /api/public/solo/public returns 404.
Connecting Slack or Teams still starts in the signed-in app. These calls read and update a connection that already exists.
List Slack connections
GET /api/public/solo/integrations/slack
Response 200: SlackConnections
| Field | Type | Required |
|---|---|---|
installs | array of object | yes |
bindings | array of object | yes |
installs items:
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
clerkUserId | string, min 1 | yes |
teamId | string, min 1 | yes |
teamName | string or null | yes |
botUserId | string or null | yes |
slackUserId | string or null | yes |
connectedAt | string or null | yes |
createdAt | string or null | yes |
updatedAt | string or null | yes |
bindings items:
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
installId | string (uuid) | yes |
clerkUserId | string, min 1 | yes |
channelId | string, min 1 | yes |
channelName | string or null | yes |
defaultClientId | string (uuid) or null | yes |
messageCheckIn | string, min 1, max 200 | yes |
messageCheckOut | string, min 1, max 200 | yes |
messageBreak | string, min 1, max 200 | yes |
enabled | boolean | yes |
createdAt | string or null | yes |
updatedAt | string or null | yes |
teamId | string or null | no |
teamName | string or null | no |
defaultClientName | string or null | no |
List Slack channels
GET /api/public/solo/integrations/slack/channels
Query installId selects the Slack install.
Response 200: { channels: Channel[] }
| Field | Type | Required |
|---|---|---|
id | string, min 1 | yes |
name | string, min 1 | yes |
Create a Slack binding
POST /api/public/solo/integrations/slack
Request body:
| Field | Type | Required |
|---|---|---|
installId | string (uuid) | yes |
channelId | string, min 1 | yes |
channelName | string, min 1, max 200 or null | yes |
defaultClientId | string (uuid) | yes |
messageCheckIn | string, min 1, max 200 | yes |
messageCheckOut | string, min 1, max 200 | yes |
messageBreak | string, min 1, max 200 | yes |
enabled | boolean | no |
Response 200: { binding: Binding }
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
installId | string (uuid) | yes |
clerkUserId | string, min 1 | yes |
channelId | string, min 1 | yes |
channelName | string or null | yes |
defaultClientId | string (uuid) or null | yes |
messageCheckIn | string, min 1, max 200 | yes |
messageCheckOut | string, min 1, max 200 | yes |
messageBreak | string, min 1, max 200 | yes |
enabled | boolean | yes |
createdAt | string or null | yes |
updatedAt | string or null | yes |
teamId | string or null | no |
teamName | string or null | no |
defaultClientName | string or null | no |
Update a Slack binding
PATCH /api/public/solo/integrations/slack/bindings/{id}
Request body:
| Field | Type | Required |
|---|---|---|
channelId | string, min 1 | no |
channelName | string, min 1, max 200 or null | no |
defaultClientId | string (uuid) or null | no |
messageCheckIn | string, min 1, max 200 | no |
messageCheckOut | string, min 1, max 200 | no |
messageBreak | string, min 1, max 200 | no |
enabled | boolean | no |
Response 200: { binding: Binding }
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
installId | string (uuid) | yes |
clerkUserId | string, min 1 | yes |
channelId | string, min 1 | yes |
channelName | string or null | yes |
defaultClientId | string (uuid) or null | yes |
messageCheckIn | string, min 1, max 200 | yes |
messageCheckOut | string, min 1, max 200 | yes |
messageBreak | string, min 1, max 200 | yes |
enabled | boolean | yes |
createdAt | string or null | yes |
updatedAt | string or null | yes |
teamId | string or null | no |
teamName | string or null | no |
defaultClientName | string or null | no |
Delete a Slack binding
DELETE /api/public/solo/integrations/slack/bindings/{id}
Response 200: { ok: true }
Disconnect a Slack install
DELETE /api/public/solo/integrations/slack/installs/{id}
Response 200: { ok: true }
Start a Slack test
POST /api/public/solo/integrations/slack/bindings/{id}/test
No request body.
Response 200: { test: Test }
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
bindingId | string (uuid) | yes |
channelId | string, min 1 | yes |
status | "pending" or "received" or "failed" | yes |
error | string or null | yes |
createdAt | string or null | yes |
receivedAt | string or null | yes |
Get a Slack test
GET /api/public/solo/integrations/slack/bindings/{id}/test/{testId}
Response 200: { test: Test }
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
bindingId | string (uuid) | yes |
channelId | string, min 1 | yes |
status | "pending" or "received" or "failed" | yes |
error | string or null | yes |
createdAt | string or null | yes |
receivedAt | string or null | yes |
List Teams connections
GET /api/public/solo/integrations/teams
Response 200: TeamsConnections
| Field | Type | Required |
|---|---|---|
installs | array of object | yes |
bindings | array of object | yes |
installs items:
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
clerkUserId | string, min 1 | yes |
tenantId | string, min 1 | yes |
accountName | string or null | yes |
microsoftUserId | string or null | yes |
connectedAt | string or null | yes |
createdAt | string or null | yes |
updatedAt | string or null | yes |
bindings items:
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
installId | string (uuid) | yes |
clerkUserId | string, min 1 | yes |
teamId | string, min 1 | yes |
teamName | string or null | yes |
channelId | string, min 1 | yes |
channelName | string or null | yes |
defaultClientId | string (uuid) or null | yes |
messageCheckIn | string, min 1, max 200 | yes |
messageCheckOut | string, min 1, max 200 | yes |
messageBreak | string, min 1, max 200 | yes |
enabled | boolean | yes |
createdAt | string or null | yes |
updatedAt | string or null | yes |
accountName | string or null | no |
defaultClientName | string or null | no |
List Teams channels
GET /api/public/solo/integrations/teams/channels
Query installId selects the Teams install.
Response 200: { channels: Channel[] }
| Field | Type | Required |
|---|---|---|
id | string, min 1 | yes |
name | string, min 1 | yes |
teamId | string, min 1 | yes |
teamName | string, min 1 | yes |
Create a Teams binding
POST /api/public/solo/integrations/teams
Request body:
| Field | Type | Required |
|---|---|---|
installId | string (uuid) | yes |
teamId | string, min 1 | yes |
teamName | string, min 1, max 200 or null | yes |
channelId | string, min 1 | yes |
channelName | string, min 1, max 200 or null | yes |
defaultClientId | string (uuid) | yes |
messageCheckIn | string, min 1, max 200 | yes |
messageCheckOut | string, min 1, max 200 | yes |
messageBreak | string, min 1, max 200 | yes |
enabled | boolean | no |
Response 200: { binding: Binding }
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
installId | string (uuid) | yes |
clerkUserId | string, min 1 | yes |
teamId | string, min 1 | yes |
teamName | string or null | yes |
channelId | string, min 1 | yes |
channelName | string or null | yes |
defaultClientId | string (uuid) or null | yes |
messageCheckIn | string, min 1, max 200 | yes |
messageCheckOut | string, min 1, max 200 | yes |
messageBreak | string, min 1, max 200 | yes |
enabled | boolean | yes |
createdAt | string or null | yes |
updatedAt | string or null | yes |
accountName | string or null | no |
defaultClientName | string or null | no |
Update a Teams binding
PATCH /api/public/solo/integrations/teams/bindings/{id}
Request body:
| Field | Type | Required |
|---|---|---|
teamId | string, min 1 | no |
teamName | string, min 1, max 200 or null | no |
channelId | string, min 1 | no |
channelName | string, min 1, max 200 or null | no |
defaultClientId | string (uuid) or null | no |
messageCheckIn | string, min 1, max 200 | no |
messageCheckOut | string, min 1, max 200 | no |
messageBreak | string, min 1, max 200 | no |
enabled | boolean | no |
Response 200: { binding: Binding }
| Field | Type | Required |
|---|---|---|
id | string (uuid) | yes |
installId | string (uuid) | yes |
clerkUserId | string, min 1 | yes |
teamId | string, min 1 | yes |
teamName | string or null | yes |
channelId | string, min 1 | yes |
channelName | string or null | yes |
defaultClientId | string (uuid) or null | yes |
messageCheckIn | string, min 1, max 200 | yes |
messageCheckOut | string, min 1, max 200 | yes |
messageBreak | string, min 1, max 200 | yes |
enabled | boolean | yes |
createdAt | string or null | yes |
updatedAt | string or null | yes |
accountName | string or null | no |
defaultClientName | string or null | no |
Delete a Teams binding
DELETE /api/public/solo/integrations/teams/bindings/{id}
Response 200: { ok: true }
Disconnect a Teams install
DELETE /api/public/solo/integrations/teams/installs/{id}
Response 200: { ok: true }
