Sinatra Docs
API ReferenceTickets

Delegate an issue

Hands Sinatra an existing Linear or GitHub issue as you, as if you'd assigned it to Sinatra yourself, and returns 202 with {"ok": true}.

The task then runs on the issue. Its conversation is there, not under Read the conversation, and it appears in List tasks once Sinatra picks it up.

The rules match delegating from the dashboard. Sinatra reads a Linear issue as your linked Linear account, so you can only delegate issues you can see. Closed issues, pull requests and issues assigned to someone else are refused. If the workspace's queue is full, the request is refused before the issue is touched.

A refusal returns an error code and a reason that says what to fix, for example {"error": "linear_identity_unlinked", "reason": "Link your Linear identity in Settings first."}.

POST/v1/workspaces/{workspaceId}/tickets/delegate
AuthorizationBearer <token>

A personal access token, which starts with sntr_. Create one on the dashboard's CLI & API page (https://app.sinatra.dev/tokens). It acts as you in every workspace you belong to, with your role in each, and expires after at most 365 days. The CLI's browser sign-in sends an OAuth access token here instead.

In: header

Path Parameters

workspaceIdstring

The workspace's id, from GET /v1/me.

A Linear issue to delegate, by its identifier or id.

sourcestring

linear to delegate a Linear issue.

idstring

The issue's identifier, such as ENG-123, or its id.

Length1 <= length

A GitHub issue to delegate, by its repository and number.

sourcestring

github to delegate a GitHub issue.

repostring

owner/name of a repository enabled in the workspace.

Length1 <= length
numberinteger

The issue's number in that repository.

Range0 < value

Response Body

curl -X POST "https://api.sinatra.dev/v1/workspaces/string/tickets/delegate" \  -H "Content-Type: application/json" \  -d '{    "source": "linear",    "id": "string"  }'
{
  "ok": true
}
{
  "error": "string",
  "reason": "string",
  "requestId": "string",
  "refusal": "string",
  "billingUrl": "string",
  "settingsUrl": "string",
  "plan": "string",
  "running": 0,
  "queued": 0,
  "taskId": "string",
  "messageId": "string"
}
{
  "error": "string",
  "reason": "string",
  "requestId": "string",
  "refusal": "string",
  "billingUrl": "string",
  "settingsUrl": "string",
  "plan": "string",
  "running": 0,
  "queued": 0,
  "taskId": "string",
  "messageId": "string"
}
{
  "error": "string",
  "reason": "string",
  "requestId": "string",
  "refusal": "string",
  "billingUrl": "string",
  "settingsUrl": "string",
  "plan": "string",
  "running": 0,
  "queued": 0,
  "taskId": "string",
  "messageId": "string"
}
{
  "error": "string",
  "reason": "string",
  "requestId": "string",
  "refusal": "string",
  "billingUrl": "string",
  "settingsUrl": "string",
  "plan": "string",
  "running": 0,
  "queued": 0,
  "taskId": "string",
  "messageId": "string"
}
{
  "error": "string",
  "reason": "string",
  "requestId": "string",
  "refusal": "string",
  "billingUrl": "string",
  "settingsUrl": "string",
  "plan": "string",
  "running": 0,
  "queued": 0,
  "taskId": "string",
  "messageId": "string"
}
{
  "error": "string",
  "reason": "string",
  "requestId": "string",
  "refusal": "string",
  "billingUrl": "string",
  "settingsUrl": "string",
  "plan": "string",
  "running": 0,
  "queued": 0,
  "taskId": "string",
  "messageId": "string"
}
{
  "error": "string",
  "reason": "string",
  "requestId": "string",
  "refusal": "string",
  "billingUrl": "string",
  "settingsUrl": "string",
  "plan": "string",
  "running": 0,
  "queued": 0,
  "taskId": "string",
  "messageId": "string"
}
{
  "error": "string",
  "reason": "string",
  "requestId": "string",
  "refusal": "string",
  "billingUrl": "string",
  "settingsUrl": "string",
  "plan": "string",
  "running": 0,
  "queued": 0,
  "taskId": "string",
  "messageId": "string"
}