tessl.io SkillInventory API

The SkillInventory API from tessl.io — 24 operation(s) for skillinventory.

OpenAPI Specification

tesslio-skillinventory-api-openapi.yml Raw ↑
openapi: 3.1.1
info:
  title: Tessl Admin Keys SkillInventory API
  version: 1.0.0
  description: Admin-scoped API keys for support tooling.
servers:
- url: https://api.tessl.io
tags:
- name: SkillInventory
paths:
  /v1/workspaces/{workspaceNameOrID}/skill-inventories:
    get:
      tags:
      - SkillInventory
      description: Lists skill inventories claimed by the workspace, ordered by scan recency.
      parameters:
      - schema:
          default: -scannedAt
          anyOf:
          - type: array
            items:
              anyOf:
              - type: string
                enum:
                - scannedAt
              - type: string
                enum:
                - -scannedAt
          - anyOf:
            - type: string
              enum:
              - scannedAt
            - type: string
              enum:
              - -scannedAt
        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:
          anyOf:
          - type: string
            enum:
            - pending
          - type: string
            enum:
            - complete
          - type: string
            enum:
            - failed
        in: query
        name: status
        required: false
      - schema:
          type: string
        in: path
        name: workspaceNameOrID
        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:
                          type: string
                        type:
                          type: string
                          enum:
                          - skill-inventory
                        attributes:
                          type: object
                          required:
                          - githubOrgName
                          - provider
                          - scannedAt
                          - scanCount
                          - totalSkills
                          - totalRepos
                          - analysisStatus
                          - privateIndexingOptedInAt
                          - findingsBreakdown
                          properties:
                            githubOrgName:
                              type: string
                            provider:
                              type: string
                            scannedAt:
                              anyOf:
                              - format: date-time
                                type: string
                              - type: 'null'
                            scanCount:
                              type: number
                            totalSkills:
                              type: number
                            totalRepos:
                              type: number
                            analysisStatus:
                              anyOf:
                              - anyOf:
                                - type: string
                                  enum:
                                  - pending
                                - type: string
                                  enum:
                                  - complete
                                - type: string
                                  enum:
                                  - failed
                              - type: 'null'
                            privateIndexingOptedInAt:
                              anyOf:
                              - format: date-time
                                type: string
                              - type: 'null'
                            findingsBreakdown:
                              type: object
                              required:
                              - critical
                              - high
                              - medium
                              - low
                              properties:
                                critical:
                                  type: number
                                high:
                                  type: number
                                medium:
                                  type: number
                                low:
                                  type: number
        '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:
      - SkillInventory
      description: 'Creates (or returns) the workspace''s skill inventory for a connected SCM provider, deriving the org-equivalent from the workspace''s integration. This is the backend-driven bootstrap for the read-only scan model: after connecting a provider, create the inventory here, opt it into private indexing, then start a scan. Returns 422 (scm_not_connected) when the workspace has no integration for the requested provider. `created` is false when the inventory already existed.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - provider
              properties:
                provider:
                  anyOf:
                  - type: string
                    enum:
                    - github
                  - type: string
                    enum:
                    - gitlab
                  - type: string
                    enum:
                    - bitbucket
      parameters:
      - schema:
          type: string
        in: path
        name: workspaceNameOrID
        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:
                        - skill-inventory
                      attributes:
                        type: object
                        required:
                        - githubOrgName
                        - provider
                        - created
                        properties:
                          githubOrgName:
                            type: string
                          provider:
                            type: string
                          created:
                            type: boolean
        '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
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Unprocessable Entity
                type: object
                required:
                - error
                properties:
                  error:
                    type: object
                    required:
                    - title
                    - status
                    - message
                    properties:
                      title:
                        type: string
                        enum:
                        - Unprocessable Entity
                      status:
                        type: number
                        enum:
                        - 422
                      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/workspaces/{workspaceNameOrID}/skill-inventories/{id}:
    get:
      tags:
      - SkillInventory
      description: Returns the authenticated header row for a workspace-scoped skill inventory.
      parameters:
      - schema:
          type: string
        in: path
        name: workspaceNameOrID
        required: true
      - schema:
          format: uuid
          type: string
        in: path
        name: id
        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:
                - id
                - githubOrgName
                - provider
                - workspaceId
                - totalSkills
                - totalRepos
                - totalUniqueSkills
                - scannedAt
                - scanCount
                - analysisStatus
                - analysisError
                - categoryBreakdown
                - topContributors
                - agentsDistribution
                - crossScanDelta
                - findingsBreakdown
                - skillSeverityBreakdown
                - privateIndexingOptedInAt
                - privateIndexingStatus
                - privateIndexingStartedAt
                - privateIndexingCompletedAt
                - privateIndexingRegisteredCount
                - privateIndexingSkippedCount
                - privateIndexingFailedCount
                - privateIndexingErrorMessage
                - autoScanEnabled
                - nextScheduledScanAt
                properties:
                  id:
                    type: string
                  githubOrgName:
                    type: string
                  provider:
                    type: string
                  workspaceId:
                    format: uuid
                    type: string
                  totalSkills:
                    type: number
                  totalRepos:
                    type: number
                  totalUniqueSkills:
                    anyOf:
                    - type: number
                    - type: 'null'
                  scannedAt:
                    anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  scanCount:
                    type: number
                  analysisStatus:
                    anyOf:
                    - anyOf:
                      - type: string
                        enum:
                        - pending
                      - type: string
                        enum:
                        - complete
                      - type: string
                        enum:
                        - failed
                    - type: 'null'
                  analysisError:
                    anyOf:
                    - type: string
                    - type: 'null'
                  categoryBreakdown:
                    type: object
                    required:
                    - firstParty
                    - thirdParty
                    - unknown
                    properties:
                      firstParty:
                        type: number
                      thirdParty:
                        type: number
                      unknown:
                        type: number
                  topContributors:
                    type: array
                    items:
                      type: object
                      required:
                      - email
                      - count
                      properties:
                        email:
                          type: string
                        count:
                          type: number
                  agentsDistribution:
                    type: array
                    items:
                      type: object
                      required:
                      - agent
                      - count
                      properties:
                        agent:
                          type: string
                        count:
                          type: number
                  crossScanDelta:
                    type: object
                    required:
                    - newFindingsCount
                    - resolvedFindingsCount
                    properties:
                      newFindingsCount:
                        type: number
                      resolvedFindingsCount:
                        type: number
                  findingsBreakdown:
                    type: object
                    required:
                    - critical
                    - high
                    - medium
                    - low
                    properties:
                      critical:
                        type: number
                      high:
                        type: number
                      medium:
                        type: number
                      low:
                        type: number
                  skillSeverityBreakdown:
                    type: object
                    required:
                    - critical
                    - high
                    - medium
                    - low
                    - clean
                    properties:
                      critical:
                        type: number
                      high:
                        type: number
                      medium:
                        type: number
                      low:
                        type: number
                      clean:
                        type: number
                  privateIndexingOptedInAt:
                    anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  privateIndexingStatus:
                    anyOf:
                    - anyOf:
                      - type: string
                        enum:
                        - indexing
                      - type: string
                        enum:
                        - complete
                      - type: string
                        enum:
                        - failed
                    - type: 'null'
                  privateIndexingStartedAt:
                    anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  privateIndexingCompletedAt:
                    anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  privateIndexingRegisteredCount:
                    type: number
                  privateIndexingSkippedCount:
                    type: number
                  privateIndexingFailedCount:
                    type: number
                  privateIndexingErrorMessage:
                    anyOf:
                    - type: string
                    - type: 'null'
                  autoScanEnabled:
                    type: boolean
                  nextScheduledScanAt:
                    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
    delete:
      tags:
      - SkillInventory
      description: 'Deletes a workspace-scoped skill inventory. Requires the `manage_integrations` permission (workspace manager or owner). The delete is a soft delete: the inventory and all its scans become inaccessible, but the org can be re-scanned later. Idempotent — deleting an already-deleted or unknown inventory returns 404.'
      parameters:
      - schema:
          type: string
        in: path
        name: workspaceNameOrID
        required: true
      - schema:
          format: uuid
          type: string
        in: path
        name: id
        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
  /v1/workspaces/{workspaceNameOrID}/skill-inventories/{id}/github-app-status:
    get:
      tags:
      - SkillInventory
      description: Reports whether the workspace's GitHub App installation is present, healthy, and covers the repos of the inventory's org. Preflight check for the private-indexing opt-in.
      parameters:
      - schema:
          type: string
        in: path
        name: workspaceNameOrID
        required: true
      - schema:
          format: uuid
          type: string
        in: path
        name: id
        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:
                        - skill-inventory-github-app-status
                      attributes:
                        type: object
     

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