Thought Industries Content API

Learning content and categories

OpenAPI Specification

thought-industries-content-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Thought Industries REST Content API
  description: The Thought Industries REST API v1 provides programmatic access to the Thought Industries B2B learning platform. Enables management of users, courses, enrollments, groups, content, categories, bundles, and reporting. Authentication uses API key via X-API-Key header or apiKey query parameter. Base URL is tenant-scoped per subdomain.
  version: '1.0'
  contact:
    url: https://developer.thoughtindustries.com/
  termsOfService: https://www.thoughtindustries.com/
  license:
    name: Commercial
    url: https://www.thoughtindustries.com/
servers:
- url: https://{subdomain}.thoughtindustries.com/incoming/api/v1
  description: Thought Industries REST API v1 (tenant-scoped)
  variables:
    subdomain:
      default: yourtenant
      description: Your Thought Industries tenant subdomain
security:
- ApiKeyHeader: []
- ApiKeyQuery: []
tags:
- name: Content
  description: Learning content and categories
paths:
  /content:
    get:
      operationId: listContent
      summary: List Content
      description: Returns a paginated list of learning content items.
      tags:
      - Content
      parameters:
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      - name: per_page
        in: query
        schema:
          type: integer
          default: 25
      - name: content_type
        in: query
        schema:
          type: string
        description: Filter by content type.
      responses:
        '200':
          description: List of content items
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentListResponse'
  /categories:
    get:
      operationId: listCategories
      summary: List Categories
      description: Returns all content categories defined in the tenant.
      tags:
      - Content
      responses:
        '200':
          description: List of categories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryListResponse'
components:
  schemas:
    Category:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        parent_id:
          type: string
    ContentListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ContentItem'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    ContentItem:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        content_type:
          type: string
        category_id:
          type: string
        status:
          type: string
        created_at:
          type: string
          format: date-time
    PaginationMeta:
      type: object
      properties:
        total:
          type: integer
        page:
          type: integer
        per_page:
          type: integer
        total_pages:
          type: integer
    CategoryListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Category'
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key passed as X-API-Key request header.
    ApiKeyQuery:
      type: apiKey
      in: query
      name: apiKey
      description: API key passed as apiKey query parameter.
externalDocs:
  description: Thought Industries Developer Portal
  url: https://developer.thoughtindustries.com/