OpenAPI Specification
openapi: 3.1.1
info:
title: Tessl Admin Keys Orgs API
version: 1.0.0
description: Admin-scoped API keys for support tooling.
servers:
- url: https://api.tessl.io
tags:
- name: Orgs
description: Organizations, members, and invitations.
paths:
/v1/users/{userId}/orgs:
get:
tags:
- Orgs
description: Lists organizations a user is a member of.
parameters:
- schema:
default: name
anyOf:
- type: array
items:
anyOf:
- type: string
enum:
- name
- type: string
enum:
- -name
- anyOf:
- type: string
enum:
- name
- type: string
enum:
- -name
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:
format: uuid
type: string
in: path
name: userId
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
- meta
properties:
id:
format: uuid
type: string
type:
type: string
enum:
- org
attributes:
type: object
required:
- name
- role
- defaultWorkspaceId
- joinedAt
- entitlements
properties:
name:
type: string
role:
anyOf:
- type: string
enum:
- admin
- type: string
enum:
- member
defaultWorkspaceId:
anyOf:
- format: uuid
type: string
- type: 'null'
joinedAt:
format: date-time
type: string
entitlements:
type: object
required:
- modelSelection
- analytics
- policyManagement
- projectManagement
- creditOverage
- auditLogAccess
- customReviewPlugins
- advancedInventoryFindings
properties:
modelSelection:
type: boolean
analytics:
type: boolean
policyManagement:
type: boolean
projectManagement:
type: boolean
creditOverage:
type: boolean
auditLogAccess:
type: boolean
customReviewPlugins:
type: boolean
advancedInventoryFindings:
type: boolean
meta:
type: object
required:
- allowedActions
properties:
allowedActions:
type: array
items:
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
/v1/orgs/{orgId}:
get:
tags:
- Orgs
description: Fetches an organization by id.
parameters:
- schema:
format: uuid
type: string
in: path
name: orgId
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
- meta
properties:
id:
format: uuid
type: string
type:
type: string
enum:
- org
attributes:
type: object
required:
- name
- blockPublicTilePublish
- plan
- entitlements
- trialEndsAt
- createdAt
- updatedAt
properties:
name:
type: string
blockPublicTilePublish:
type: boolean
plan:
type: object
required:
- code
- displayName
properties:
code:
anyOf:
- type: string
enum:
- free
- type: string
enum:
- free-legacy-v1
- type: string
enum:
- team-v1
- type: string
enum:
- business-v1
- type: string
enum:
- enterprise-v1
displayName:
type: string
entitlements:
type: object
required:
- modelSelection
- analytics
- policyManagement
- projectManagement
- creditOverage
- auditLogAccess
- customReviewPlugins
- advancedInventoryFindings
properties:
modelSelection:
type: boolean
analytics:
type: boolean
policyManagement:
type: boolean
projectManagement:
type: boolean
creditOverage:
type: boolean
auditLogAccess:
type: boolean
customReviewPlugins:
type: boolean
advancedInventoryFindings:
type: boolean
trialEndsAt:
anyOf:
- format: date-time
type: string
- type: 'null'
createdAt:
format: date-time
type: string
updatedAt:
format: date-time
type: string
meta:
type: object
required:
- allowedActions
properties:
allowedActions:
type: array
items:
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
patch:
tags:
- Orgs
description: Updates an organization (rename, public-publish toggle).
requestBody:
required: true
content:
application/json:
schema:
additionalProperties: false
minProperties: 1
type: object
properties:
name:
minLength: 4
maxLength: 40
pattern: ^[0-9a-z-]+$
type: string
blockPublicTilePublish:
type: boolean
parameters:
- schema:
format: uuid
type: string
in: path
name: orgId
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:
- org
attributes:
type: object
required:
- name
- blockPublicTilePublish
- createdAt
- updatedAt
properties:
name:
type: string
blockPublicTilePublish:
type: boolean
createdAt:
format: date-time
type: string
updatedAt:
format: date-time
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
/v1/orgs/{orgId}/invitations:
get:
tags:
- Orgs
description: Lists pending invitations for an organization.
parameters:
- schema:
default: -createdAt
anyOf:
- type: array
items:
anyOf:
- type: string
enum:
- createdAt
- type: string
enum:
- -createdAt
- anyOf:
- type: string
enum:
- createdAt
- type: string
enum:
- -createdAt
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:
format: uuid
type: string
in: path
name: orgId
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:
- invitation
attributes:
type: object
required:
- id
- orgId
- email
- role
- state
- inviterUserId
- acceptedByUserId
- acceptedAt
- expiresAt
- createdAt
- updatedAt
- workspaces
properties:
id:
format: uuid
type: string
orgId:
format: uuid
type: string
email:
format: email
type: string
role:
anyOf:
- type: string
enum:
- owner
- type: string
enum:
- manager
- type: string
enum:
- publisher
- type: string
enum:
- member
- type: string
enum:
- consumer
state:
anyOf:
- type: string
enum:
- pending
- type: string
enum:
- accepted
- type: string
enum:
- revoked
- type: string
enum:
- expired
inviterUserId:
anyOf:
- format: uuid
type: string
- type: 'null'
acceptedByUserId:
anyOf:
- format: uuid
type: string
- type: 'null'
acceptedAt:
anyOf:
- format: date-time
type: string
- type: 'null'
expiresAt:
format: date-time
type: string
createdAt:
format: date-time
type: string
updatedAt:
format: date-time
type: string
workspaces:
type: array
items:
type: object
required:
- id
properties:
id:
format: uuid
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
# --- truncated at 32 KB (113 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tesslio/refs/heads/main/openapi/tesslio-orgs-api-openapi.yml