Threads
Assignment
GraphQL
- Introduction
- Authentication
- Schema
- Customers
- Companies
- Tenants
- Threads
- Tiers
- Events
- Labels
- Messaging
- Pagination
- Error handling
- Error codes
- API Explorer
- Typescript SDK
Reference
- Customer cards
- Webhooks
- Request signing
- mTLS
- UI Components
- Attachments
Threads
Assignment
Threads can be assigned to users or machine users. The latter is useful if you want a bot to handle or are building a complex automation of some kind.
Assigning a thread
To assign threads you need an API key with the following permissions:
thread:assign
thread:read
import { PlainClient } from '@team-plain/typescript-sdk';
const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
const res = await client.assignThread({
threadId: 'th_01H8H46YPB2S4MAJM382FG9423',
userId: 'u_01FSVKMHFDHJ3H5XFM20EMCBQN',
// You could instead assign to a machine user by doing:
// machineUserId: 'XXX'
});
if (res.error) {
console.error(res.error);
} else {
console.log(`Thread assigned (${res.data.id})`);
}
Where res.data
is the full thread:
{
"__typename": "Thread",
"id": "th_01H8H46YPB2S4MAJM382FG9423",
"externalId": null,
"customer": {
"id": "c_01H8H46Y7N69VTSF4WXCJTVATZ"
},
"status": "TODO",
"statusChangedAt": {
"__typename": "DateTime",
"iso8601": "2023-08-23T11:59:22.315Z",
"unixTimestamp": "1692791962315"
},
"title": "Support request",
"previewText": "Hello can you please...",
"priority": 2,
"labels": [],
"assignedAt": {
"__typename": "DateTime",
"iso8601": "2023-10-05T13:12:12.050Z",
"unixTimestamp": "1696511532050"
},
"assignedTo": {
"__typename": "User",
"id": "u_01FSVKMHFDHJ3H5XFM20EMCBQN",
"fullName": "Matt Vagni",
"publicName": "Matt",
"email": "matt@plain.com",
"updatedAt": {
"__typename": "DateTime",
"iso8601": "2023-05-16T12:36:52.266Z",
"unixTimestamp": "1684240612266"
}
},
"createdAt": {
"__typename": "DateTime",
"iso8601": "2023-08-23T11:59:22.315Z",
"unixTimestamp": "1692791962315"
},
"createdBy": {
"__typename": "MachineUserActor",
"machineUserId": "mu_01H0J96X3KJ3C2S2W9T5S3CC1R"
},
"updatedAt": {
"__typename": "DateTime",
"iso8601": "2023-10-05T13:12:12.050Z",
"unixTimestamp": "1696511532050"
},
"updatedBy": {
"__typename": "MachineUserActor",
"machineUserId": "mu_01HBZM0TZAKAZPJ47NX7X7XMDY"
}
}
import { PlainClient } from '@team-plain/typescript-sdk';
const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
const res = await client.assignThread({
threadId: 'th_01H8H46YPB2S4MAJM382FG9423',
userId: 'u_01FSVKMHFDHJ3H5XFM20EMCBQN',
// You could instead assign to a machine user by doing:
// machineUserId: 'XXX'
});
if (res.error) {
console.error(res.error);
} else {
console.log(`Thread assigned (${res.data.id})`);
}
Where res.data
is the full thread:
{
"__typename": "Thread",
"id": "th_01H8H46YPB2S4MAJM382FG9423",
"externalId": null,
"customer": {
"id": "c_01H8H46Y7N69VTSF4WXCJTVATZ"
},
"status": "TODO",
"statusChangedAt": {
"__typename": "DateTime",
"iso8601": "2023-08-23T11:59:22.315Z",
"unixTimestamp": "1692791962315"
},
"title": "Support request",
"previewText": "Hello can you please...",
"priority": 2,
"labels": [],
"assignedAt": {
"__typename": "DateTime",
"iso8601": "2023-10-05T13:12:12.050Z",
"unixTimestamp": "1696511532050"
},
"assignedTo": {
"__typename": "User",
"id": "u_01FSVKMHFDHJ3H5XFM20EMCBQN",
"fullName": "Matt Vagni",
"publicName": "Matt",
"email": "matt@plain.com",
"updatedAt": {
"__typename": "DateTime",
"iso8601": "2023-05-16T12:36:52.266Z",
"unixTimestamp": "1684240612266"
}
},
"createdAt": {
"__typename": "DateTime",
"iso8601": "2023-08-23T11:59:22.315Z",
"unixTimestamp": "1692791962315"
},
"createdBy": {
"__typename": "MachineUserActor",
"machineUserId": "mu_01H0J96X3KJ3C2S2W9T5S3CC1R"
},
"updatedAt": {
"__typename": "DateTime",
"iso8601": "2023-10-05T13:12:12.050Z",
"unixTimestamp": "1696511532050"
},
"updatedBy": {
"__typename": "MachineUserActor",
"machineUserId": "mu_01HBZM0TZAKAZPJ47NX7X7XMDY"
}
}
Mutation
mutation assignThread($input: AssignThreadInput!) {
assignThread(input: $input) {
thread {
id
status
}
error {
message
type
code
fields {
field
message
type
}
}
}
}
Variables
{
"input": {
"threadId": "th_01H8H46YPB2S4MAJM382FG9423",
"userId": "u_01FSVKMHFDHJ3H5XFM20EMCBQN"
// You could instead assign to a machine user by doing:
// machineUserId: 'XXX'
}
}
Unassigning threads
To unassign threads you need an API key with the following permissions:
thread:unassign
thread:read
import { PlainClient } from '@team-plain/typescript-sdk';
const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
const res = await client.unassignThread({
threadId: 'th_01H8H46YPB2S4MAJM382FG9423',
});
if (res.error) {
console.error(res.error);
} else {
console.log(`Thread unassigned (${res.data.id})`);
}
Where res.data
is the full thread like with assignment.
import { PlainClient } from '@team-plain/typescript-sdk';
const client = new PlainClient({ apiKey: 'plainApiKey_xxx' });
const res = await client.unassignThread({
threadId: 'th_01H8H46YPB2S4MAJM382FG9423',
});
if (res.error) {
console.error(res.error);
} else {
console.log(`Thread unassigned (${res.data.id})`);
}
Where res.data
is the full thread like with assignment.
Mutation
mutation unassignThread($input: UnassignThreadInput!) {
unassignThread(input: $input) {
thread {
id
status
}
}
}
Variables
{
"input": {
"threadId": "th_01H8H46YPB2S4MAJM382FG9423"
}
}
Was this page helpful?
On this page