This is the full reference documentation for the Linear agent connector.
Supported entities and actions
The Linear connector supports the following entities and actions.
| Entity | Actions |
|---|
| Issues | List, Get, Create, Update, Context Store Search, Context Store SQL Query, Semantic Search |
| Projects | List, Get, Create, Update, Context Store Search, Context Store SQL Query |
| Teams | List, Get, Context Store Search, Context Store SQL Query |
| Workflow States | List, Context Store Search, Context Store SQL Query |
| Users | List, Get, Context Store Search, Context Store SQL Query |
| Comments | List, Get, Create, Update, Context Store Search, Context Store SQL Query, Semantic Search |
Issues
Issues List
Returns a paginated list of issues via GraphQL with pagination support
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "issues",
"action": "list"
}'
Python SDK
await linear.issues.list()
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "issues",
"action": "list"
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
first | integer | No | Number of items to return (max 250) |
after | string | No | Cursor to start after (for pagination) |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
title | string | |
description | string | any | |
state | object | any | |
priority | number | any | |
assignee | object | any | |
team | object | any | |
project | object | any | |
createdAt | string | |
updatedAt | string | |
| Field Name | Type | Description |
|---|
hasNextPage | boolean | |
endCursor | string | null | |
Issues Get
Get a single issue by ID via GraphQL
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "issues",
"action": "get",
"params": {
"id": "<str>"
}
}'
Python SDK
await linear.issues.get(
id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "issues",
"action": "get",
"params": {
"id": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
id | string | Yes | Issue ID |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
title | string | |
description | string | any | |
state | object | any | |
priority | number | any | |
assignee | object | any | |
team | object | any | |
project | object | any | |
createdAt | string | |
updatedAt | string | |
Issues Create
Create a new issue via GraphQL mutation
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "issues",
"action": "create",
"params": {
"teamId": "<str>",
"title": "<str>",
"description": "<str>",
"stateId": "<str>",
"priority": 0,
"projectId": "<str>"
}
}'
Python SDK
await linear.issues.create(
team_id="<str>",
title="<str>",
description="<str>",
state_id="<str>",
priority=0,
project_id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "issues",
"action": "create",
"params": {
"teamId": "<str>",
"title": "<str>",
"description": "<str>",
"stateId": "<str>",
"priority": 0,
"projectId": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
teamId | string | Yes | The ID of the team to create the issue in |
title | string | Yes | The title of the issue |
description | string | No | The description of the issue (supports markdown) |
stateId | string | No | The ID of the workflow state for the issue |
priority | integer | No | The priority of the issue (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low) |
projectId | string | No | The ID of the project to add the issue to. Get project IDs from the projects list. |
Response Schema
Records
| Field Name | Type | Description |
|---|
success | boolean | |
issue | object | |
issue.id | string | |
issue.title | string | |
issue.description | string | any | |
issue.state | object | any | |
issue.priority | number | any | |
issue.assignee | object | any | |
issue.project | object | any | |
issue.createdAt | string | |
issue.updatedAt | string | |
Issues Update
Update an existing issue via GraphQL mutation. All fields except id are optional for partial updates.
To assign a user, provide assigneeId with the user's ID (get user IDs from the users list).
Omit assigneeId to leave the current assignee unchanged.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "issues",
"action": "update",
"params": {
"id": "<str>",
"title": "<str>",
"description": "<str>",
"stateId": "<str>",
"priority": 0,
"assigneeId": "<str>",
"projectId": "<str>"
}
}'
Python SDK
await linear.issues.update(
id="<str>",
title="<str>",
description="<str>",
state_id="<str>",
priority=0,
assignee_id="<str>",
project_id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "issues",
"action": "update",
"params": {
"id": "<str>",
"title": "<str>",
"description": "<str>",
"stateId": "<str>",
"priority": 0,
"assigneeId": "<str>",
"projectId": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
id | string | Yes | The ID of the issue to update |
title | string | No | The new title of the issue |
description | string | No | The new description of the issue (supports markdown) |
stateId | string | No | The ID of the new workflow state for the issue |
priority | integer | No | The new priority of the issue (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low) |
assigneeId | string | No | The ID of the user to assign to this issue. Get user IDs from the users list. |
projectId | string | No | The ID of the project to add this issue to. Get project IDs from the projects list. |
Response Schema
Records
| Field Name | Type | Description |
|---|
success | boolean | |
issue | object | |
issue.id | string | |
issue.title | string | |
issue.description | string | any | |
issue.state | object | any | |
issue.priority | number | any | |
issue.assignee | object | any | |
issue.project | object | any | |
issue.createdAt | string | |
issue.updatedAt | string | |
Issues Context Store Search
Search and filter issues records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "issues",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"addedToCycleAt": "<str>"
}
}
}
}
}'
Python SDK
await linear.issues.context_store_search(
query={"filter": {"eq": {"addedToCycleAt": "<str>"}}}
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "issues",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"addedToCycleAt": "<str>"}}}
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
query | object | Yes | Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or |
query.filter | object | No | Filter conditions |
query.sort | array | No | Sort conditions |
limit | integer | No | Maximum results to return (default 1000) |
cursor | string | No | Pagination cursor from previous response's meta.cursor |
fields | array | No | Field paths to include in results |
Searchable Fields
| Field Name | Type | Description |
|---|
addedToCycleAt | string | |
addedToProjectAt | string | |
addedToTeamAt | string | |
assignee | object | |
assigneeId | string | |
attachmentIds | array | |
attachments | object | |
branchName | string | |
canceledAt | string | |
completedAt | string | |
createdAt | string | |
creator | object | |
creatorId | string | |
customerTicketCount | number | |
cycle | object | |
cycleId | string | |
description | string | |
descriptionState | string | |
dueDate | string | |
estimate | number | |
id | string | |
identifier | string | |
integrationSourceType | string | |
labelIds | array | |
labels | object | |
milestoneId | string | |
number | number | |
parent | object | |
parentId | string | |
previousIdentifiers | array | |
priority | number | |
priorityLabel | string | |
prioritySortOrder | number | |
project | object | |
projectId | string | |
projectMilestone | object | |
reactionData | array | |
relationIds | array | |
relations | object | |
slaType | string | |
sortOrder | number | |
sourceCommentId | string | |
startedAt | string | |
state | object | |
stateId | string | |
subIssueSortOrder | number | |
subscriberIds | array | |
subscribers | object | |
team | object | |
teamId | string | |
title | string | |
updatedAt | string | |
url | string | |
Response Schema
| Field Name | Type | Description |
|---|
data | array | List of matching records |
meta | object | Pagination metadata |
meta.has_more | boolean | Whether additional pages are available |
meta.cursor | string | null | Cursor for next page of results |
meta.took_ms | number | null | Query execution time in milliseconds |
data[].addedToCycleAt | string | |
data[].addedToProjectAt | string | |
data[].addedToTeamAt | string | |
data[].assignee | object | |
data[].assigneeId | string | |
data[].attachmentIds | array | |
data[].attachments | object | |
data[].branchName | string | |
data[].canceledAt | string | |
data[].completedAt | string | |
data[].createdAt | string | |
data[].creator | object | |
data[].creatorId | string | |
data[].customerTicketCount | number | |
data[].cycle | object | |
data[].cycleId | string | |
data[].description | string | |
data[].descriptionState | string | |
data[].dueDate | string | |
data[].estimate | number | |
data[].id | string | |
data[].identifier | string | |
data[].integrationSourceType | string | |
data[].labelIds | array | |
data[].labels | object | |
data[].milestoneId | string | |
data[].number | number | |
data[].parent | object | |
data[].parentId | string | |
data[].previousIdentifiers | array | |
data[].priority | number | |
data[].priorityLabel | string | |
data[].prioritySortOrder | number | |
data[].project | object | |
data[].projectId | string | |
data[].projectMilestone | object | |
data[].reactionData | array | |
data[].relationIds | array | |
data[].relations | object | |
data[].slaType | string | |
data[].sortOrder | number | |
data[].sourceCommentId | string | |
data[].startedAt | string | |
data[].state | object | |
data[].stateId | string | |
data[].subIssueSortOrder | number | |
data[].subscriberIds | array | |
data[].subscribers | object | |
data[].team | object | |
data[].teamId | string | |
data[].title | string | |
data[].updatedAt | string | |
data[].url | string | |
Issues Context Store SQL Query
Run a SQL query against issues records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.
Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "issues",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Python SDK
await linear.issues.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "issues",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
sql | string | Yes | SQL query to execute against this entity's Context Store data |
limit | integer | No | Maximum results to return |
Response Schema
| Field Name | Type | Description |
|---|
data | array | Projected rows, with dictionary keys matching the selected columns |
meta | object | Query metadata |
meta.has_more | boolean | Whether the result was limited and more rows are available |
meta.cursor | null | SQL query results do not use cursor pagination |
meta.took_ms | number | null | Query execution time in milliseconds |
Issues Semantic Search
Search issues records by meaning rather than by exact or fuzzy field values. Semantic search embeds a natural-language prompt and returns the most similar passages, ranked by relevance. Pass semantic={field, prompt, filter?, context_size?, min_similarity?, dedup?} to context_store_search instead of query. Only available in hosted mode.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "issues",
"action": "context_store_search",
"params": {
"semantic": {"field": "description", "prompt": "<your natural-language query>"}
}
}'
Python SDK
Semantic search is passed through the generic execute method — the typed issues.context_store_search helper only accepts query.
await linear.execute(
"issues",
"context_store_search",
{"semantic": {"field": "description", "prompt": "<your natural-language query>"}},
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "issues",
"action": "context_store_search",
"params": {
"semantic": {"field": "description", "prompt": "<your natural-language query>"}
}
}'
Semantic Parameters
| Parameter Name | Type | Required | Description |
|---|
semantic.field | string | Yes | Field to search semantically. Mutually exclusive with query. |
semantic.prompt | string | Yes | Natural-language query that is embedded and compared against stored passages. |
semantic.filter | object | No | Filter conditions (same shape/operators as query.filter). sort is not supported — results are ranked by similarity. |
semantic.context_size | integer | No | Characters of surrounding context to return per hit, up to the field's configured window. Omit to return the full configured window. |
semantic.min_similarity | number | No | Minimum similarity score in [-1.0, 1.0]. Omit for 0.25; scores below the threshold are discarded before deduplication and top-k selection. Use -1.0 to disable the cutoff. |
semantic.dedup | string | No | max (default) returns the single best-scoring passage per record; none returns multiple passages per record, still ranked by similarity and capped by limit. |
fields | array | No | Field paths to include in results (dot notation for nested fields). Applied to each hit's entity. |
limit | integer | No | Maximum results to return (default 10, maximum 100). |
Semantically Searchable Fields
| Field Name | Max Context (chars) | Description |
|---|
description | 2048 | |
Each result is also enriched with the following related fields (returned only; not filterable): creatorName, assigneeName.
Response Schema
| Field Name | Type | Description |
|---|
data | array | List of matching passages |
data[].entity | object | The matched source record |
data[].entity.id | string | Source record field |
data[].entity.url | string | Source record field |
data[].entity.identifier | string | Source record field |
data[].entity.title | string | Source record field |
data[].entity.creatorId | string | Source record field |
data[].entity.assigneeId | string | Source record field |
data[].entity.createdAt | string | Source record field |
data[].metadata | object | Match metadata |
data[].metadata.score | number | Similarity score |
data[].metadata.context | string | The matched passage text |
data[].metadata.creatorName | string | Enriched from a related entity at read time (returned only; not filterable) |
data[].metadata.assigneeName | string | Enriched from a related entity at read time (returned only; not filterable) |
meta | object | Pagination metadata |
meta.has_more | boolean | Whether additional pages are available |
meta.cursor | string | null | Cursor for next page of results |
meta.took_ms | number | null | Query execution time in milliseconds |
Projects
Projects List
Returns a paginated list of projects via GraphQL with pagination support
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "projects",
"action": "list"
}'
Python SDK
await linear.projects.list()
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "projects",
"action": "list"
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
first | integer | No | Number of items to return (max 250) |
after | string | No | Cursor to start after (for pagination) |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
name | string | |
description | string | any | |
state | string | any | |
startDate | string | any | |
targetDate | string | any | |
lead | object | any | |
createdAt | string | |
updatedAt | string | |
| Field Name | Type | Description |
|---|
hasNextPage | boolean | |
endCursor | string | null | |
Projects Get
Get a single project by ID via GraphQL
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "projects",
"action": "get",
"params": {
"id": "<str>"
}
}'
Python SDK
await linear.projects.get(
id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "projects",
"action": "get",
"params": {
"id": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
id | string | Yes | Project ID |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
name | string | |
description | string | any | |
state | string | any | |
startDate | string | any | |
targetDate | string | any | |
lead | object | any | |
createdAt | string | |
updatedAt | string | |
Projects Create
Create a new project via GraphQL mutation
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "projects",
"action": "create",
"params": {
"name": "<str>",
"teamIds": [],
"description": "<str>",
"state": "<str>",
"startDate": "<str>",
"targetDate": "<str>",
"leadId": "<str>"
}
}'
Python SDK
await linear.projects.create(
name="<str>",
team_ids=[],
description="<str>",
state="<str>",
start_date="<str>",
target_date="<str>",
lead_id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "projects",
"action": "create",
"params": {
"name": "<str>",
"teamIds": [],
"description": "<str>",
"state": "<str>",
"startDate": "<str>",
"targetDate": "<str>",
"leadId": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
name | string | Yes | The name of the project |
teamIds | array<string> | Yes | The IDs of the teams to associate with this project. Get team IDs from the teams list. |
description | string | No | The description of the project (supports markdown) |
state | string | No | The state of the project (backlog, planned, started, paused, completed, canceled) |
startDate | string | No | The planned start date of the project (YYYY-MM-DD format) |
targetDate | string | No | The target completion date of the project (YYYY-MM-DD format) |
leadId | string | No | The ID of the user to set as project lead. Get user IDs from the users list. |
Response Schema
Records
| Field Name | Type | Description |
|---|
success | boolean | |
project | object | |
project.id | string | |
project.name | string | |
project.description | string | any | |
project.state | string | any | |
project.startDate | string | any | |
project.targetDate | string | any | |
project.lead | object | any | |
project.createdAt | string | |
project.updatedAt | string | |
Projects Update
Update an existing project via GraphQL mutation. All fields except id are optional for partial updates.
Use this to rename projects, change descriptions, update dates, or change the project state.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "projects",
"action": "update",
"params": {
"id": "<str>",
"name": "<str>",
"description": "<str>",
"state": "<str>",
"startDate": "<str>",
"targetDate": "<str>",
"leadId": "<str>"
}
}'
Python SDK
await linear.projects.update(
id="<str>",
name="<str>",
description="<str>",
state="<str>",
start_date="<str>",
target_date="<str>",
lead_id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "projects",
"action": "update",
"params": {
"id": "<str>",
"name": "<str>",
"description": "<str>",
"state": "<str>",
"startDate": "<str>",
"targetDate": "<str>",
"leadId": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
id | string | Yes | The ID of the project to update |
name | string | No | The new name of the project |
description | string | No | The new description of the project (supports markdown) |
state | string | No | The new state of the project (backlog, planned, started, paused, completed, canceled) |
startDate | string | No | The new planned start date of the project (YYYY-MM-DD format) |
targetDate | string | No | The new target completion date of the project (YYYY-MM-DD format) |
leadId | string | No | The ID of the user to set as project lead. Get user IDs from the users list. |
Response Schema
Records
| Field Name | Type | Description |
|---|
success | boolean | |
project | object | |
project.id | string | |
project.name | string | |
project.description | string | any | |
project.state | string | any | |
project.startDate | string | any | |
project.targetDate | string | any | |
project.lead | object | any | |
project.createdAt | string | |
project.updatedAt | string | |
Projects Context Store Search
Search and filter projects records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "projects",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"canceledAt": "<str>"
}
}
}
}
}'
Python SDK
await linear.projects.context_store_search(
query={"filter": {"eq": {"canceledAt": "<str>"}}}
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "projects",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"canceledAt": "<str>"}}}
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
query | object | Yes | Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or |
query.filter | object | No | Filter conditions |
query.sort | array | No | Sort conditions |
limit | integer | No | Maximum results to return (default 1000) |
cursor | string | No | Pagination cursor from previous response's meta.cursor |
fields | array | No | Field paths to include in results |
Searchable Fields
| Field Name | Type | Description |
|---|
canceledAt | string | |
color | string | |
completedAt | string | |
completedIssueCountHistory | array | |
completedScopeHistory | array | |
content | string | |
contentState | string | |
convertedFromIssue | object | |
convertedFromIssueId | string | |
createdAt | string | |
creator | object | |
creatorId | string | |
description | string | |
health | string | |
healthUpdatedAt | string | |
icon | string | |
id | string | |
inProgressScopeHistory | array | |
issueCountHistory | array | |
lead | object | |
leadId | string | |
name | string | |
priority | number | |
prioritySortOrder | number | |
progress | number | |
scope | number | |
scopeHistory | array | |
slugId | string | |
sortOrder | number | |
startDate | string | |
startedAt | string | |
status | object | |
statusId | string | |
targetDate | string | |
teamIds | array | |
teams | object | |
updateRemindersDay | string | |
updateRemindersHour | number | |
updatedAt | string | |
url | string | |
Response Schema
| Field Name | Type | Description |
|---|
data | array | List of matching records |
meta | object | Pagination metadata |
meta.has_more | boolean | Whether additional pages are available |
meta.cursor | string | null | Cursor for next page of results |
meta.took_ms | number | null | Query execution time in milliseconds |
data[].canceledAt | string | |
data[].color | string | |
data[].completedAt | string | |
data[].completedIssueCountHistory | array | |
data[].completedScopeHistory | array | |
data[].content | string | |
data[].contentState | string | |
data[].convertedFromIssue | object | |
data[].convertedFromIssueId | string | |
data[].createdAt | string | |
data[].creator | object | |
data[].creatorId | string | |
data[].description | string | |
data[].health | string | |
data[].healthUpdatedAt | string | |
data[].icon | string | |
data[].id | string | |
data[].inProgressScopeHistory | array | |
data[].issueCountHistory | array | |
data[].lead | object | |
data[].leadId | string | |
data[].name | string | |
data[].priority | number | |
data[].prioritySortOrder | number | |
data[].progress | number | |
data[].scope | number | |
data[].scopeHistory | array | |
data[].slugId | string | |
data[].sortOrder | number | |
data[].startDate | string | |
data[].startedAt | string | |
data[].status | object | |
data[].statusId | string | |
data[].targetDate | string | |
data[].teamIds | array | |
data[].teams | object | |
data[].updateRemindersDay | string | |
data[].updateRemindersHour | number | |
data[].updatedAt | string | |
data[].url | string | |
Projects Context Store SQL Query
Run a SQL query against projects records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.
Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "projects",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Python SDK
await linear.projects.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "projects",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
sql | string | Yes | SQL query to execute against this entity's Context Store data |
limit | integer | No | Maximum results to return |
Response Schema
| Field Name | Type | Description |
|---|
data | array | Projected rows, with dictionary keys matching the selected columns |
meta | object | Query metadata |
meta.has_more | boolean | Whether the result was limited and more rows are available |
meta.cursor | null | SQL query results do not use cursor pagination |
meta.took_ms | number | null | Query execution time in milliseconds |
Teams
Teams List
Returns a list of teams via GraphQL with pagination support
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "teams",
"action": "list"
}'
Python SDK
await linear.teams.list()
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "teams",
"action": "list"
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
first | integer | No | Number of items to return (max 250) |
after | string | No | Cursor to start after (for pagination) |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
name | string | |
key | string | |
description | string | any | |
timezone | string | any | |
createdAt | string | |
updatedAt | string | |
| Field Name | Type | Description |
|---|
hasNextPage | boolean | |
endCursor | string | null | |
Teams Get
Get a single team by ID via GraphQL
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "teams",
"action": "get",
"params": {
"id": "<str>"
}
}'
Python SDK
await linear.teams.get(
id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "teams",
"action": "get",
"params": {
"id": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
id | string | Yes | Team ID |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
name | string | |
key | string | |
description | string | any | |
timezone | string | any | |
createdAt | string | |
updatedAt | string | |
Teams Context Store Search
Search and filter teams records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "teams",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"activeCycle": {}
}
}
}
}
}'
Python SDK
await linear.teams.context_store_search(
query={"filter": {"eq": {"activeCycle": {}}}}
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "teams",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"activeCycle": {}}}}
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
query | object | Yes | Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or |
query.filter | object | No | Filter conditions |
query.sort | array | No | Sort conditions |
limit | integer | No | Maximum results to return (default 1000) |
cursor | string | No | Pagination cursor from previous response's meta.cursor |
fields | array | No | Field paths to include in results |
Searchable Fields
| Field Name | Type | Description |
|---|
activeCycle | object | |
activeCycleId | string | |
autoArchivePeriod | number | |
autoClosePeriod | number | |
autoCloseStateId | string | |
color | string | |
createdAt | string | |
cycleCalenderUrl | string | |
cycleCooldownTime | number | |
cycleDuration | number | |
cycleIssueAutoAssignCompleted | boolean | |
cycleIssueAutoAssignStarted | boolean | |
cycleLockToActive | boolean | |
cycleStartDay | number | |
cyclesEnabled | boolean | |
defaultIssueEstimate | number | |
defaultIssueState | object | |
defaultIssueStateId | string | |
groupIssueHistory | boolean | |
icon | string | |
id | string | |
issueCount | number | |
issueEstimationAllowZero | boolean | |
issueEstimationExtended | boolean | |
issueEstimationType | string | |
key | string | |
name | string | |
parentTeamId | string | |
requirePriorityToLeaveTriage | boolean | |
scimManaged | boolean | |
setIssueSortOrderOnStateChange | string | |
timezone | string | |
triageEnabled | boolean | |
triageIssueStateId | string | |
upcomingCycleCount | number | |
updatedAt | string | |
visibility | string | |
Response Schema
| Field Name | Type | Description |
|---|
data | array | List of matching records |
meta | object | Pagination metadata |
meta.has_more | boolean | Whether additional pages are available |
meta.cursor | string | null | Cursor for next page of results |
meta.took_ms | number | null | Query execution time in milliseconds |
data[].activeCycle | object | |
data[].activeCycleId | string | |
data[].autoArchivePeriod | number | |
data[].autoClosePeriod | number | |
data[].autoCloseStateId | string | |
data[].color | string | |
data[].createdAt | string | |
data[].cycleCalenderUrl | string | |
data[].cycleCooldownTime | number | |
data[].cycleDuration | number | |
data[].cycleIssueAutoAssignCompleted | boolean | |
data[].cycleIssueAutoAssignStarted | boolean | |
data[].cycleLockToActive | boolean | |
data[].cycleStartDay | number | |
data[].cyclesEnabled | boolean | |
data[].defaultIssueEstimate | number | |
data[].defaultIssueState | object | |
data[].defaultIssueStateId | string | |
data[].groupIssueHistory | boolean | |
data[].icon | string | |
data[].id | string | |
data[].issueCount | number | |
data[].issueEstimationAllowZero | boolean | |
data[].issueEstimationExtended | boolean | |
data[].issueEstimationType | string | |
data[].key | string | |
data[].name | string | |
data[].parentTeamId | string | |
data[].requirePriorityToLeaveTriage | boolean | |
data[].scimManaged | boolean | |
data[].setIssueSortOrderOnStateChange | string | |
data[].timezone | string | |
data[].triageEnabled | boolean | |
data[].triageIssueStateId | string | |
data[].upcomingCycleCount | number | |
data[].updatedAt | string | |
data[].visibility | string | |
Teams Context Store SQL Query
Run a SQL query against teams records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.
Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "teams",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Python SDK
await linear.teams.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "teams",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
sql | string | Yes | SQL query to execute against this entity's Context Store data |
limit | integer | No | Maximum results to return |
Response Schema
| Field Name | Type | Description |
|---|
data | array | Projected rows, with dictionary keys matching the selected columns |
meta | object | Query metadata |
meta.has_more | boolean | Whether the result was limited and more rows are available |
meta.cursor | null | SQL query results do not use cursor pagination |
meta.took_ms | number | null | Query execution time in milliseconds |
Workflow States
Workflow States List
Returns workflow states for a team via GraphQL, including name and UUID for status transitions
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "workflow_states",
"action": "list"
}'
Python SDK
await linear.workflow_states.list()
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "workflow_states",
"action": "list"
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
first | integer | No | Number of items to return (max 250) |
after | string | No | Cursor to start after (for pagination) |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
name | string | |
type | string | |
position | number | any | |
color | string | any | |
team | object | any | |
createdAt | string | |
updatedAt | string | |
| Field Name | Type | Description |
|---|
hasNextPage | boolean | |
endCursor | string | null | |
Workflow States Context Store Search
Search and filter workflow states records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "workflow_states",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"color": "<str>"
}
}
}
}
}'
Python SDK
await linear.workflow_states.context_store_search(
query={"filter": {"eq": {"color": "<str>"}}}
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "workflow_states",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"color": "<str>"}}}
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
query | object | Yes | Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or |
query.filter | object | No | Filter conditions |
query.sort | array | No | Sort conditions |
limit | integer | No | Maximum results to return (default 1000) |
cursor | string | No | Pagination cursor from previous response's meta.cursor |
fields | array | No | Field paths to include in results |
Searchable Fields
| Field Name | Type | Description |
|---|
color | string | |
createdAt | string | |
description | string | |
id | string | |
inheritedFromId | string | |
name | string | |
position | number | |
team | object | |
teamId | string | |
type | string | |
updatedAt | string | |
Response Schema
| Field Name | Type | Description |
|---|
data | array | List of matching records |
meta | object | Pagination metadata |
meta.has_more | boolean | Whether additional pages are available |
meta.cursor | string | null | Cursor for next page of results |
meta.took_ms | number | null | Query execution time in milliseconds |
data[].color | string | |
data[].createdAt | string | |
data[].description | string | |
data[].id | string | |
data[].inheritedFromId | string | |
data[].name | string | |
data[].position | number | |
data[].team | object | |
data[].teamId | string | |
data[].type | string | |
data[].updatedAt | string | |
Workflow States Context Store SQL Query
Run a SQL query against workflow states records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.
Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "workflow_states",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Python SDK
await linear.workflow_states.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "workflow_states",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
sql | string | Yes | SQL query to execute against this entity's Context Store data |
limit | integer | No | Maximum results to return |
Response Schema
| Field Name | Type | Description |
|---|
data | array | Projected rows, with dictionary keys matching the selected columns |
meta | object | Query metadata |
meta.has_more | boolean | Whether the result was limited and more rows are available |
meta.cursor | null | SQL query results do not use cursor pagination |
meta.took_ms | number | null | Query execution time in milliseconds |
Users
Users List
Returns a paginated list of users in the organization via GraphQL
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "users",
"action": "list"
}'
Python SDK
await linear.users.list()
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "users",
"action": "list"
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
first | integer | No | Number of items to return (max 250) |
after | string | No | Cursor to start after (for pagination) |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
name | string | |
email | string | |
displayName | string | any | |
active | boolean | |
admin | boolean | |
createdAt | string | |
updatedAt | string | |
| Field Name | Type | Description |
|---|
hasNextPage | boolean | |
endCursor | string | null | |
Users Get
Get a single user by ID via GraphQL
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "users",
"action": "get",
"params": {
"id": "<str>"
}
}'
Python SDK
await linear.users.get(
id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "users",
"action": "get",
"params": {
"id": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
id | string | Yes | User ID |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
name | string | |
email | string | |
displayName | string | any | |
active | boolean | |
admin | boolean | |
createdAt | string | |
updatedAt | string | |
Users Context Store Search
Search and filter users records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "users",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"active": true
}
}
}
}
}'
Python SDK
await linear.users.context_store_search(
query={"filter": {"eq": {"active": True}}}
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "users",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"active": True}}}
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
query | object | Yes | Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or |
query.filter | object | No | Filter conditions |
query.sort | array | No | Sort conditions |
limit | integer | No | Maximum results to return (default 1000) |
cursor | string | No | Pagination cursor from previous response's meta.cursor |
fields | array | No | Field paths to include in results |
Searchable Fields
| Field Name | Type | Description |
|---|
active | boolean | |
admin | boolean | |
avatarBackgroundColor | string | |
avatarUrl | string | |
createdAt | string | |
createdIssueCount | number | |
displayName | string | |
email | string | |
guest | boolean | |
id | string | |
initials | string | |
isMe | boolean | |
lastSeen | string | |
name | string | |
teamIds | array | |
teams | object | |
timezone | string | |
updatedAt | string | |
url | string | |
Response Schema
| Field Name | Type | Description |
|---|
data | array | List of matching records |
meta | object | Pagination metadata |
meta.has_more | boolean | Whether additional pages are available |
meta.cursor | string | null | Cursor for next page of results |
meta.took_ms | number | null | Query execution time in milliseconds |
data[].active | boolean | |
data[].admin | boolean | |
data[].avatarBackgroundColor | string | |
data[].avatarUrl | string | |
data[].createdAt | string | |
data[].createdIssueCount | number | |
data[].displayName | string | |
data[].email | string | |
data[].guest | boolean | |
data[].id | string | |
data[].initials | string | |
data[].isMe | boolean | |
data[].lastSeen | string | |
data[].name | string | |
data[].teamIds | array | |
data[].teams | object | |
data[].timezone | string | |
data[].updatedAt | string | |
data[].url | string | |
Users Context Store SQL Query
Run a SQL query against users records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.
Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "users",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Python SDK
await linear.users.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "users",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
sql | string | Yes | SQL query to execute against this entity's Context Store data |
limit | integer | No | Maximum results to return |
Response Schema
| Field Name | Type | Description |
|---|
data | array | Projected rows, with dictionary keys matching the selected columns |
meta | object | Query metadata |
meta.has_more | boolean | Whether the result was limited and more rows are available |
meta.cursor | null | SQL query results do not use cursor pagination |
meta.took_ms | number | null | Query execution time in milliseconds |
Returns a paginated list of comments for an issue via GraphQL
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "comments",
"action": "list",
"params": {
"issueId": "<str>"
}
}'
Python SDK
await linear.comments.list(
issue_id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "comments",
"action": "list",
"params": {
"issueId": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
issueId | string | Yes | Issue ID to get comments for |
first | integer | No | Number of items to return (max 250) |
after | string | No | Cursor to start after (for pagination) |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
body | string | |
user | object | any | |
issue | object | any | |
createdAt | string | |
updatedAt | string | |
| Field Name | Type | Description |
|---|
hasNextPage | boolean | |
endCursor | string | null | |
Get a single comment by ID via GraphQL
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "comments",
"action": "get",
"params": {
"id": "<str>"
}
}'
Python SDK
await linear.comments.get(
id="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "comments",
"action": "get",
"params": {
"id": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
id | string | Yes | Comment ID |
Response Schema
Records
| Field Name | Type | Description |
|---|
id | string | |
body | string | |
user | object | any | |
issue | object | any | |
createdAt | string | |
updatedAt | string | |
Create a new comment on an issue via GraphQL mutation
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "comments",
"action": "create",
"params": {
"issueId": "<str>",
"body": "<str>"
}
}'
Python SDK
await linear.comments.create(
issue_id="<str>",
body="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "comments",
"action": "create",
"params": {
"issueId": "<str>",
"body": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
issueId | string | Yes | The ID of the issue to add the comment to |
body | string | Yes | The comment content in markdown |
Response Schema
Records
| Field Name | Type | Description |
|---|
success | boolean | |
comment | object | |
comment.id | string | |
comment.body | string | |
comment.user | object | any | |
comment.issue | object | any | |
comment.createdAt | string | |
comment.updatedAt | string | |
Update an existing comment via GraphQL mutation
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "comments",
"action": "update",
"params": {
"id": "<str>",
"body": "<str>"
}
}'
Python SDK
await linear.comments.update(
id="<str>",
body="<str>"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "comments",
"action": "update",
"params": {
"id": "<str>",
"body": "<str>"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
id | string | Yes | The ID of the comment to update |
body | string | Yes | The new comment content in markdown |
Response Schema
Records
| Field Name | Type | Description |
|---|
success | boolean | |
comment | object | |
comment.id | string | |
comment.body | string | |
comment.user | object | any | |
comment.issue | object | any | |
comment.createdAt | string | |
comment.updatedAt | string | |
Search and filter comments records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "comments",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"body": "<str>"
}
}
}
}
}'
Python SDK
await linear.comments.context_store_search(
query={"filter": {"eq": {"body": "<str>"}}}
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "comments",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"body": "<str>"}}}
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
query | object | Yes | Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or |
query.filter | object | No | Filter conditions |
query.sort | array | No | Sort conditions |
limit | integer | No | Maximum results to return (default 1000) |
cursor | string | No | Pagination cursor from previous response's meta.cursor |
fields | array | No | Field paths to include in results |
Searchable Fields
| Field Name | Type | Description |
|---|
body | string | |
bodyData | string | |
createdAt | string | |
editedAt | string | |
id | string | |
issue | object | |
issueId | string | |
parent | object | |
parentCommentId | string | |
resolvingCommentId | string | |
resolvingUserId | string | |
updatedAt | string | |
url | string | |
user | object | |
userId | string | |
Response Schema
| Field Name | Type | Description |
|---|
data | array | List of matching records |
meta | object | Pagination metadata |
meta.has_more | boolean | Whether additional pages are available |
meta.cursor | string | null | Cursor for next page of results |
meta.took_ms | number | null | Query execution time in milliseconds |
data[].body | string | |
data[].bodyData | string | |
data[].createdAt | string | |
data[].editedAt | string | |
data[].id | string | |
data[].issue | object | |
data[].issueId | string | |
data[].parent | object | |
data[].parentCommentId | string | |
data[].resolvingCommentId | string | |
data[].resolvingUserId | string | |
data[].updatedAt | string | |
data[].url | string | |
data[].user | object | |
data[].userId | string | |
Run a SQL query against comments records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.
Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "comments",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Python SDK
await linear.comments.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "comments",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'
Parameters
| Parameter Name | Type | Required | Description |
|---|
sql | string | Yes | SQL query to execute against this entity's Context Store data |
limit | integer | No | Maximum results to return |
Response Schema
| Field Name | Type | Description |
|---|
data | array | Projected rows, with dictionary keys matching the selected columns |
meta | object | Query metadata |
meta.has_more | boolean | Whether the result was limited and more rows are available |
meta.cursor | null | SQL query results do not use cursor pagination |
meta.took_ms | number | null | Query execution time in milliseconds |
Search comments records by meaning rather than by exact or fuzzy field values. Semantic search embeds a natural-language prompt and returns the most similar passages, ranked by relevance. Pass semantic={field, prompt, filter?, context_size?, min_similarity?, dedup?} to context_store_search instead of query. Only available in hosted mode.
CLI
airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "linear",
"entity": "comments",
"action": "context_store_search",
"params": {
"semantic": {"field": "body", "prompt": "<your natural-language query>"}
}
}'
Python SDK
Semantic search is passed through the generic execute method — the typed comments.context_store_search helper only accepts query.
await linear.execute(
"comments",
"context_store_search",
{"semantic": {"field": "body", "prompt": "<your natural-language query>"}},
)
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "comments",
"action": "context_store_search",
"params": {
"semantic": {"field": "body", "prompt": "<your natural-language query>"}
}
}'
Semantic Parameters
| Parameter Name | Type | Required | Description |
|---|
semantic.field | string | Yes | Field to search semantically. Mutually exclusive with query. |
semantic.prompt | string | Yes | Natural-language query that is embedded and compared against stored passages. |
semantic.filter | object | No | Filter conditions (same shape/operators as query.filter). sort is not supported — results are ranked by similarity. |
semantic.context_size | integer | No | Characters of surrounding context to return per hit, up to the field's configured window. Omit to return the full configured window. |
semantic.min_similarity | number | No | Minimum similarity score in [-1.0, 1.0]. Omit for 0.25; scores below the threshold are discarded before deduplication and top-k selection. Use -1.0 to disable the cutoff. |
semantic.dedup | string | No | max (default) returns the single best-scoring passage per record; none returns multiple passages per record, still ranked by similarity and capped by limit. |
fields | array | No | Field paths to include in results (dot notation for nested fields). Applied to each hit's entity. |
limit | integer | No | Maximum results to return (default 10, maximum 100). |
Semantically Searchable Fields
| Field Name | Max Context (chars) | Description |
|---|
body | 2048 | |
Each result is also enriched with the following related fields (returned only; not filterable): authorName.
Response Schema
| Field Name | Type | Description |
|---|
data | array | List of matching passages |
data[].entity | object | The matched source record |
data[].entity.id | string | Source record field |
data[].entity.url | string | Source record field |
data[].entity.issueId | string | Source record field |
data[].entity.userId | string | Source record field |
data[].entity.createdAt | string | Source record field |
data[].metadata | object | Match metadata |
data[].metadata.score | number | Similarity score |
data[].metadata.context | string | The matched passage text |
data[].metadata.authorName | string | Enriched from a related entity at read time (returned only; not filterable) |
meta | object | Pagination metadata |
meta.has_more | boolean | Whether additional pages are available |
meta.cursor | string | null | Cursor for next page of results |
meta.took_ms | number | null | Query execution time in milliseconds |