tessl.io Users API

User accounts and identity.

OpenAPI Specification

tesslio-users-api-openapi.yml Raw ↑
openapi: 3.1.1
info:
  title: Tessl Admin Keys Users API
  version: 1.0.0
  description: Admin-scoped API keys for support tooling.
servers:
- url: https://api.tessl.io
tags:
- name: Users
  description: User accounts and identity.
paths:
  /v1/users:
    get:
      tags:
      - Users
      description: Lists users with username filter and sorting.
      parameters:
      - schema:
          default: username
          anyOf:
          - type: array
            items:
              anyOf:
              - type: string
                enum:
                - username
              - type: string
                enum:
                - -username
              - type: string
                enum:
                - createdAt
              - type: string
                enum:
                - -createdAt
          - anyOf:
            - type: string
              enum:
              - username
            - type: string
              enum:
              - -username
            - 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:
          type: string
        in: query
        name: filter[username]
        required: false
      - schema:
          type: string
        in: query
        name: filter[username][eq]
        required: false
      - schema:
          type: string
        in: query
        name: filter[username][ne]
        required: false
      - schema:
          type: string
        in: query
        name: filter[username][gt]
        required: false
      - schema:
          type: string
        in: query
        name: filter[username][gte]
        required: false
      - schema:
          type: string
        in: query
        name: filter[username][lt]
        required: false
      - schema:
          type: string
        in: query
        name: filter[username][lte]
        required: false
      - schema:
          type: string
        in: query
        name: filter[username][like]
        required: false
      - 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:
                          - user
                        attributes:
                          type: object
                          required:
                          - username
                          - createdAt
                          properties:
                            username:
                              type: string
                            createdAt:
                              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
    post:
      tags:
      - Users
      description: Creates the authenticated user record from their auth-provider claims.
      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:
                        - user
                      attributes:
                        type: object
                        required:
                        - username
                        - firstName
                        - lastName
                        - profilePictureUrl
                        - createdAt
                        - updatedAt
                        properties:
                          username:
                            type: string
                          firstName:
                            anyOf:
                            - type: string
                            - type: 'null'
                          lastName:
                            anyOf:
                            - type: string
                            - type: 'null'
                          profilePictureUrl:
                            anyOf:
                            - type: string
                            - type: 'null'
                          createdAt:
                            format: date-time
                            type: string
                          updatedAt:
                            format: date-time
                            type: string
        '201':
          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:
                        - user
                      attributes:
                        type: object
                        required:
                        - username
                        - firstName
                        - lastName
                        - profilePictureUrl
                        - createdAt
                        - updatedAt
                        properties:
                          username:
                            type: string
                          firstName:
                            anyOf:
                            - type: string
                            - type: 'null'
                          lastName:
                            anyOf:
                            - type: string
                            - type: 'null'
                          profilePictureUrl:
                            anyOf:
                            - type: string
                            - type: 'null'
                          createdAt:
                            format: date-time
                            type: string
                          updatedAt:
                            format: date-time
                            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/users/me:
    get:
      tags:
      - Users
      description: Returns the authenticated user's profile and feature flags.
      parameters:
      - 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:
                        - user
                      attributes:
                        type: object
                        required:
                        - username
                        - firstName
                        - lastName
                        - role
                        - useCase
                        - featureFlags
                        - email
                        - emailVerified
                        - profilePictureUrl
                        - defaultOrgId
                        - createdAt
                        - updatedAt
                        - onboardingCompletedAt
                        properties:
                          username:
                            type: string
                          firstName:
                            anyOf:
                            - type: string
                            - type: 'null'
                          lastName:
                            anyOf:
                            - type: string
                            - type: 'null'
                          role:
                            anyOf:
                            - type: string
                            - type: 'null'
                          useCase:
                            anyOf:
                            - anyOf:
                              - type: string
                                enum:
                                - work
                              - type: string
                                enum:
                                - personal
                            - type: 'null'
                          featureFlags:
                            type: object
                            additionalProperties:
                              anyOf:
                              - type: string
                              - type: boolean
                          email:
                            format: email
                            type: string
                          emailVerified:
                            type: boolean
                          profilePictureUrl:
                            anyOf:
                            - type: string
                            - type: 'null'
                          defaultOrgId:
                            anyOf:
                            - format: uuid
                              type: string
                            - type: 'null'
                          createdAt:
                            format: date-time
                            type: string
                          updatedAt:
                            format: date-time
                            type: string
                          onboardingCompletedAt:
                            anyOf:
                            - format: date-time
                              type: string
                            - type: 'null'
        '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/users/me/invitations:
    get:
      tags:
      - Users
      description: 'Lists invitations the authenticated user should consider during signup: valid pending invitations and recently revoked recoverable invitations discovered by exact or alias-stripped email match. Used to prompt the user to accept an invite before a personal org is created.'
      parameters:
      - 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
                          - orgName
                          - email
                          - role
                          - expiresAt
                          - createdAt
                          - workspaces
                          properties:
                            id:
                              format: uuid
                              type: string
                            orgId:
                              format: uuid
                              type: string
                            orgName:
                              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
                            expiresAt:
                              format: date-time
                              type: string
                            createdAt:
                              format: date-time
                              type: string
                            workspaces:
                              type: array
                              items:
                                type: object
                                required:
                                - id
                                - name
                                properties:
                                  id:
                                    format: uuid
                                    type: string
                                  name:
                                    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/users/me/invitations/{invitationId}/accept:
    post:
      tags:
      - Users
      description: Explicitly accepts a pending invitation addressed to the authenticated user, joining them to the invited organization and workspaces.
      parameters:
      - schema:
          format: uuid
          type: string
        in: path
        name: invitationId
        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:
                        - invitation
                      attributes:
                        type: object
                        required:
                        - id
                        - orgId
                        - orgName
                        - email
                        - role
                        - expiresAt
                        - createdAt
                        - workspaces
                        properties:
                          id:
                            format: uuid
                            type: string
                          orgId:
                            format: uuid
                            type: string
                          orgName:
                            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
                          expiresAt:
                            format: date-time
                            type: string
                          createdAt:
                            format: date-time
                            type: string
                          workspaces:
                            type: array
                            items:
                              type: object
                              required:
                              - id
                              - name
                              properties:
                                id:
                                  format: uuid
             

# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tesslio/refs/heads/main/openapi/tesslio-users-api-openapi.yml