tessl.io Integrations API
Third-party integrations (GitHub, GitLab, etc).
Third-party integrations (GitHub, GitLab, etc).
openapi: 3.1.1
info:
title: Tessl Admin Keys Integrations API
version: 1.0.0
description: Admin-scoped API keys for support tooling.
servers:
- url: https://api.tessl.io
tags:
- name: Integrations
description: Third-party integrations (GitHub, GitLab, etc).
paths:
/experimental/workspaces/{workspaceId}/integrations:
get:
tags:
- Integrations
description: Lists integrations (GitHub, GitLab, Linear) configured for a workspace.
parameters:
- schema:
default: -updatedAt
anyOf:
- type: array
items:
anyOf:
- type: string
enum:
- updatedAt
- type: string
enum:
- -updatedAt
- anyOf:
- type: string
enum:
- updatedAt
- type: string
enum:
- -updatedAt
in: query
name: sort
required: false
- schema:
minimum: 1
maximum: 100
default: 100
type: number
in: query
name: page[size]
required: false
- schema:
type: string
in: query
name: page[after]
required: false
- schema:
type: string
in: query
name: page[before]
required: false
- schema:
type: string
in: path
name: workspaceId
required: true
- schema:
type: string
example: Bearer <token>
in: header
name: Authorization
required: false
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
required:
- links
- meta
- data
properties:
links:
type: object
required:
- self
- next
- prev
properties:
self:
format: uri
type: string
next:
anyOf:
- format: uri
type: string
- type: 'null'
prev:
anyOf:
- format: uri
type: string
- type: 'null'
meta:
type: object
required:
- count
properties:
count:
type: number
data:
type: array
items:
type: object
required:
- id
- type
- attributes
properties:
id:
format: uuid
type: string
type:
type: string
enum:
- integration
attributes:
anyOf:
- type: object
required:
- type
- installedBy
- connectionData
- metadata
- createdAt
- updatedAt
properties:
type:
type: string
enum:
- github-app
installedBy:
format: uuid
type: string
connectionData:
type: object
required:
- installationId
- installationTarget
properties:
installationId:
type: number
installationTarget:
type: string
metadata:
type: object
required:
- installedByGitHubUser
- installedIntoAccountName
- installedIntoAccountType
properties:
installedByGitHubUser:
type: number
installedIntoAccountName:
type: string
installedIntoAccountType:
anyOf:
- type: string
enum:
- organization
- type: string
enum:
- user
- type: string
enum:
- enterprise
createdAt:
type: string
updatedAt:
type: string
- type: object
required:
- type
- installedBy
- connectionData
- metadata
- createdAt
- updatedAt
properties:
type:
type: string
enum:
- github-app-agent
installedBy:
format: uuid
type: string
connectionData:
type: object
required:
- installationId
- installationTarget
properties:
installationId:
type: number
installationTarget:
type: string
metadata:
type: object
required:
- installedByGitHubUser
- installedIntoAccountName
- installedIntoAccountType
properties:
installedByGitHubUser:
type: number
installedIntoAccountName:
type: string
installedIntoAccountType:
anyOf:
- type: string
enum:
- organization
- type: string
enum:
- user
- type: string
enum:
- enterprise
createdAt:
type: string
updatedAt:
type: string
- type: object
required:
- type
- installedBy
- connectionData
- metadata
- createdAt
- updatedAt
properties:
type:
type: string
enum:
- gitlab-token
installedBy:
format: uuid
type: string
connectionData:
anyOf:
- type: object
required:
- scopeType
- host
- groupPath
- secretId
properties:
scopeType:
type: string
enum:
- group
host:
type: string
groupPath:
type: string
secretId:
type: string
- type: object
required:
- scopeType
- host
- projectPath
- secretId
properties:
scopeType:
type: string
enum:
- project
host:
type: string
projectPath:
type: string
secretId:
type: string
metadata:
type: object
properties: {}
createdAt:
type: string
updatedAt:
type: string
- type: object
required:
- type
- installedBy
- connectionData
- metadata
- createdAt
- updatedAt
properties:
type:
type: string
enum:
- linear
installedBy:
format: uuid
type: string
connectionData:
type: object
required:
- linearOrganizationId
- agentAppUserId
properties:
linearOrganizationId:
type: string
agentAppUserId:
type: string
targetRepo:
type: string
taskDelegation:
additionalProperties: false
type: object
required:
- entrypoint
properties:
entrypoint:
additionalProperties: false
type: object
required:
- plugin
- skill
properties:
plugin:
type: string
skill:
type: string
delegationStateName:
type: string
environmentName:
minLength: 1
type: string
scope:
type: string
reconnectRequired:
type: boolean
metadata:
type: object
properties:
linearOrganizationName:
type: string
createdAt:
type: string
updatedAt:
type: string
- type: object
required:
- type
- installedBy
- connectionData
- metadata
- createdAt
- updatedAt
properties:
type:
type: string
enum:
- bitbucket-cloud-oauth
installedBy:
format: uuid
type: string
connectionData:
type: object
required:
- workspaceSlug
- accountId
properties:
workspaceSlug:
type: string
accountId:
type: string
scope:
type: string
reconnectRequired:
type: boolean
metadata:
type: object
properties:
workspaceName:
type: string
installedByDisplayName:
type: string
createdAt:
type: string
updatedAt:
type: string
- type: object
required:
- type
- installedBy
- connectionData
- metadata
- createdAt
- updatedAt
properties:
type:
type: string
enum:
- mockhub
installedBy:
format: uuid
type: string
connectionData:
type: object
required:
- seed
- org
- config
properties:
seed:
type: number
org:
type: string
config:
type: object
required:
- repoCount
- skillRepoFraction
- minSkillsPerRepo
- maxSkillsPerRepo
- manifestCount
- minSkillSentences
- maxSkillSentences
- duplicateClusterFraction
properties:
repoCount:
type: number
skillRepoFraction:
type: number
minSkillsPerRepo:
type: number
maxSkillsPerRepo:
type: number
manifestCount:
type: number
minSkillSentences:
type: number
maxSkillSentences:
type: number
duplicateClusterFraction:
type: number
metadata:
type: object
properties: {}
createdAt:
type: string
updatedAt:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
description: Unauthorized
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Unauthorized
status:
type: number
enum:
- 401
message:
type: string
'403':
description: Forbidden
content:
application/json:
schema:
description: Forbidden
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Forbidden
status:
type: number
enum:
- 403
message:
type: string
'404':
description: Not Found
content:
application/json:
schema:
description: Not Found
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Not Found
status:
type: number
enum:
- 404
message:
type: string
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Internal Server Error
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Internal Server Error
status:
type: number
enum:
- 500
message:
type: string
/experimental/workspaces/{workspaceId}/integrations/{integrationId}:
delete:
tags:
- Integrations
description: Removes an integration from a workspace.
parameters:
- schema:
type: string
in: path
name: workspaceId
required: true
- schema:
type: string
in: path
name: integrationId
required: true
- schema:
type: string
example: Bearer <token>
in: header
name: Authorization
required: false
responses:
'204':
description: Default Response
'401':
description: Unauthorized
content:
application/json:
schema:
description: Unauthorized
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Unauthorized
status:
type: number
enum:
- 401
message:
type: string
'403':
description: Forbidden
content:
application/json:
schema:
description: Forbidden
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Forbidden
status:
type: number
enum:
- 403
message:
type: string
'404':
description: Not Found
content:
application/json:
schema:
description: Not Found
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Not Found
status:
type: number
enum:
- 404
message:
type: string
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Internal Server Error
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Internal Server Error
status:
type: number
enum:
- 500
message:
type: string
patch:
tags:
- Integrations
description: Updates the connectionData on a Linear integration. `targetRepo` and `taskDelegation` are independently editable; pass `null` to clear either. Writing `taskDelegation` requires the `linear-task-mirroring` feature flag.
requestBody:
required: true
content:
application/json:
schema:
additionalProperties: false
minProperties: 1
type: object
properties:
targetRepo:
anyOf:
- minLength: 1
type: string
- type: 'null'
taskDelegation:
anyOf:
- additionalProperties: false
type: object
required:
- entrypoint
properties:
entrypoint:
additionalProperties: false
type: object
required:
- plugin
- skill
properties:
plugin:
type: string
skill:
type: string
delegationStateName:
type: string
environmentName:
minLength: 1
type: string
- type: 'null'
parameters:
- schema:
format: uuid
type: string
in: path
name: workspaceId
required: true
- schema:
format: uuid
type: string
in: path
name: integrationId
required: true
- schema:
type: string
example: Bearer <token>
in: header
name: Authorization
required: false
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
required:
- links
- data
properties:
links:
type: object
required:
- self
properties:
self:
format: uri
type: string
data:
type: object
required:
- id
- type
- attributes
properties:
id:
format: uuid
type: string
type:
type: string
enum:
- integration
attributes:
type: object
required:
- type
- installedBy
- connectionData
- metadata
- createdAt
- updatedAt
properties:
type:
type: string
enum:
- linear
installedBy:
format: uuid
type: string
connectionData:
type: object
required:
- linearOrganizationId
- agentAppUserId
properties:
linearOrganizationId:
type: string
agentAppUserId:
type: string
targetRepo:
type: string
taskDelegation:
additionalProperties: false
type: object
required:
- entrypoint
properties:
entrypoint:
additionalProperties: false
type: object
required:
- plugin
- skill
properties:
plugin:
type: string
skill:
type: string
delegationStateName:
type: string
environmentName:
minLength: 1
type: string
scope:
type: string
reconnectRequired:
type: boolean
metadata:
type: object
properties:
linearOrganizationName:
type: string
createdAt:
type: string
updatedAt:
type: string
'400':
description: Bad Request
content:
application/json:
schema:
description: Bad Request
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Bad Request
status:
type: number
enum:
- 400
message:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
description: Unauthorized
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
# --- truncated at 32 KB (126 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tesslio/refs/heads/main/openapi/tesslio-integrations-api-openapi.yml