360Learning Paths API

The Paths API from 360Learning β€” 18 operation(s) for paths.

OpenAPI Specification

360learning-paths-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bulk Authentication Paths API
  description: ''
  version: 1.0.0
  contact: {}
servers:
- url: https://app.360learning.com
  description: Production EU
- url: https://app.us.360learning.com
  description: Production US
tags:
- name: Paths
paths:
  /api/v2/paths/sessions:
    get:
      description: '> πŸ”‘

        >

        > Required OAuth scope: `paths:read`.


        > πŸ“–

        >

        > This endpoint is paginated with a page size of 500 path sessions. For more information, see the [Pagination guide](doc:pagination).


        Lists all path sessions in your platform. This endpoint does not return path session translations. To retrieve translations, use the [Retrieve a path session](/reference/v2pathsgetpathsessioncontroller_getpathsession) endpoint or the [List all sessions in a path](/reference/v2pathsgetpathsessionscontroller_getpathsessions) endpoint.'
      operationId: v2.paths.GetAllPathSessionsController_getAllPathSessions
      parameters:
      - name: 360-api-version
        in: header
        description: The version of the API.
        required: true
        schema:
          type: string
          enum:
          - v2.0
      - name: createdAt
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **createdAt** property with LHS bracket notation.


          Expected value format is a date (YYYY-MM-DDThh:mm:ss.sssZ). The milliseconds are always set to 0.'
        schema:
          properties:
            lt:
              type: string
              format: date-time
              description: Filter on dates lower than the given one
              example: '2020-01-01T10:30:26.000Z'
            gte:
              type: string
              format: date-time
              description: Filter on dates greater than or equal the given one
              example: '2020-01-01T10:30:26.000Z'
      - name: modifiedAt
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **modifiedAt** property with LHS bracket notation.


          Expected value format is a date (YYYY-MM-DDThh:mm:ss.sssZ). The milliseconds are always set to 0.'
        schema:
          properties:
            lt:
              type: string
              format: date-time
              description: Filter on dates lower than the given one
              example: '2020-01-01T10:30:26.000Z'
            gte:
              type: string
              format: date-time
              description: Filter on dates greater than or equal the given one
              example: '2020-01-01T10:30:26.000Z'
      - name: startDate
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **startDate** property with LHS bracket notation.


          Expected value format is a date (YYYY-MM-DDThh:mm:ss.sssZ). The milliseconds are always set to 0.'
        schema:
          properties:
            lt:
              type: string
              format: date-time
              description: Filter on dates lower than the given one
              example: '2020-01-01T10:30:26.000Z'
            gte:
              type: string
              format: date-time
              description: Filter on dates greater than or equal the given one
              example: '2020-01-01T10:30:26.000Z'
      - name: endDate
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **endDate** property with LHS bracket notation.


          Expected value format is a date (YYYY-MM-DDThh:mm:ss.sssZ). The milliseconds are always set to 0.'
        schema:
          properties:
            lt:
              type: string
              format: date-time
              description: Filter on dates lower than the given one
              example: '2020-01-01T10:30:26.000Z'
            gte:
              type: string
              format: date-time
              description: Filter on dates greater than or equal the given one
              example: '2020-01-01T10:30:26.000Z'
      - name: sessionId
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **sessionId** property with LHS bracket notation.


          Expected value format is a valid ID (24 digits or letters).'
        schema:
          properties:
            eq:
              type: string
              format: ObjectId
              pattern: ^[a-fA-F0-9]{24}$
              description: Filter on values equal to the given one
              example: 507f1f77bcf86cd799439011
            ne:
              type: string
              format: ObjectId
              pattern: ^[a-fA-F0-9]{24}$
              description: Filter on values not equal to the given one
              example: 507f1f77bcf86cd799439011
            in:
              type: array
              description: Filter on values including the given ones
              items:
                type: string
                format: ObjectId
                pattern: ^[a-fA-F0-9]{24}$
                example: 507f1f77bcf86cd799439011
            nin:
              type: array
              description: Filter on values excluding the given ones
              items:
                type: string
                format: ObjectId
                pattern: ^[a-fA-F0-9]{24}$
                example: 507f1f77bcf86cd799439011
      - name: pathId
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **pathId** property with LHS bracket notation.


          Expected value format is a valid ID (24 digits or letters).'
        schema:
          properties:
            eq:
              type: string
              format: ObjectId
              pattern: ^[a-fA-F0-9]{24}$
              description: Filter on values equal to the given one
              example: 507f1f77bcf86cd799439011
            ne:
              type: string
              format: ObjectId
              pattern: ^[a-fA-F0-9]{24}$
              description: Filter on values not equal to the given one
              example: 507f1f77bcf86cd799439011
            in:
              type: array
              description: Filter on values including the given ones
              items:
                type: string
                format: ObjectId
                pattern: ^[a-fA-F0-9]{24}$
                example: 507f1f77bcf86cd799439011
            nin:
              type: array
              description: Filter on values excluding the given ones
              items:
                type: string
                format: ObjectId
                pattern: ^[a-fA-F0-9]{24}$
                example: 507f1f77bcf86cd799439011
      responses:
        '200':
          description: Returns one page of 500 path sessions.
          headers:
            Link:
              schema:
                type: string
              description: 'URL (between `<` `>`) to fetch the immediate next page of results. For more information, see our [Pagination guide](doc:pagination).


                ⚠️ Only included if there is another page of results.'
              example: <my/resource/url>; rel="next"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PathSessionWithoutTranslationsDTO'
        '401':
          description: The given access token is either missing, invalid, has expired, or has been revoked.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - invalid_token
                required:
                - error
        '403':
          description: The given access token does not have the required OAuth scope to execute the request.
          content:
            application/json:
              schema:
                title: Invalid Scope
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                        - invalid_scope
                      message:
                        type: string
                        example: A human-readable message to help with debugging.
                    required:
                    - code
                    - message
                required:
                - error
        '429':
          description: 'The client has sent too many requests in a short amount of time. '
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - tooManyRequests
                required:
                - error
      security:
      - oauth2: []
      summary: List all sessions
      tags:
      - Paths
  /api/v2/paths/stats:
    get:
      description: '> πŸ”‘

        >

        > Required OAuth scope: `pathStats:read`.


        > πŸ“–

        >

        > This endpoint is paginated with a page size of 2,000 path user statistics. For more information, see the [Pagination guide](doc:pagination).


        Lists all user statistics for paths in the platform.'
      operationId: v2.paths.GetPathStatsController_getPathStats
      parameters:
      - name: 360-api-version
        in: header
        description: The version of the API.
        required: true
        schema:
          type: string
          enum:
          - v2.0
      - name: status
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **status** property with LHS bracket notation.


          Expected value format is a string (`archived`, `published`).'
        schema:
          properties:
            eq:
              type: string
              description: Filter on values equal to the given one
              example: archived
              enum:
              - archived
              - published
      - name: completedAt
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **completedAt** property with LHS bracket notation.


          Expected value format is a date (YYYY-MM-DDThh:mm:ss.sssZ). The milliseconds are always set to 0.'
        schema:
          properties:
            lt:
              type: string
              format: date-time
              description: Filter on dates lower than the given one
              example: '2020-01-01T10:30:26.000Z'
            gte:
              type: string
              format: date-time
              description: Filter on dates greater than or equal the given one
              example: '2020-01-01T10:30:26.000Z'
      - name: pathId
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **pathId** property with LHS bracket notation.


          Expected value format is a valid ID (24 digits or letters).'
        schema:
          properties:
            eq:
              type: string
              format: ObjectId
              pattern: ^[a-fA-F0-9]{24}$
              description: Filter on values equal to the given one
              example: 507f1f77bcf86cd799439011
            ne:
              type: string
              format: ObjectId
              pattern: ^[a-fA-F0-9]{24}$
              description: Filter on values not equal to the given one
              example: 507f1f77bcf86cd799439011
            in:
              type: array
              description: Filter on values including the given ones
              items:
                type: string
                format: ObjectId
                pattern: ^[a-fA-F0-9]{24}$
                example: 507f1f77bcf86cd799439011
            nin:
              type: array
              description: Filter on values excluding the given ones
              items:
                type: string
                format: ObjectId
                pattern: ^[a-fA-F0-9]{24}$
                example: 507f1f77bcf86cd799439011
      - name: userId
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **userId** property with LHS bracket notation.


          Expected value format is a valid ID (24 digits or letters).'
        schema:
          properties:
            eq:
              type: string
              format: ObjectId
              pattern: ^[a-fA-F0-9]{24}$
              description: Filter on values equal to the given one
              example: 507f1f77bcf86cd799439011
            ne:
              type: string
              format: ObjectId
              pattern: ^[a-fA-F0-9]{24}$
              description: Filter on values not equal to the given one
              example: 507f1f77bcf86cd799439011
            in:
              type: array
              description: Filter on values including the given ones
              items:
                type: string
                format: ObjectId
                pattern: ^[a-fA-F0-9]{24}$
                example: 507f1f77bcf86cd799439011
            nin:
              type: array
              description: Filter on values excluding the given ones
              items:
                type: string
                format: ObjectId
                pattern: ^[a-fA-F0-9]{24}$
                example: 507f1f77bcf86cd799439011
      responses:
        '200':
          description: Returns one page of 2000 path user statistics.
          headers:
            Link:
              schema:
                type: string
              description: 'URL (between `<` `>`) to fetch the immediate next page of results. For more information, see our [Pagination guide](doc:pagination).


                ⚠️ Only included if there is another page of results.'
              example: <my/resource/url>; rel="next"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PathSessionUserStatDTO'
        '401':
          description: The given access token is either missing, invalid, has expired, or has been revoked.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - invalid_token
                required:
                - error
        '403':
          description: The given access token does not have the required OAuth scope to execute the request.
          content:
            application/json:
              schema:
                title: Invalid Scope
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                        - invalid_scope
                      message:
                        type: string
                        example: A human-readable message to help with debugging.
                    required:
                    - code
                    - message
                required:
                - error
        '429':
          description: 'The client has sent too many requests in a short amount of time. '
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - tooManyRequests
                required:
                - error
      security:
      - oauth2: []
      summary: List all user statistics for all paths
      tags:
      - Paths
  /api/v2/paths/add-tokens:
    post:
      description: '> πŸ”‘

        >

        > Required OAuth scope: `tokens:write`.


        Add tokens to a specific group for a given path.'
      operationId: v2.paths.AddTokensController_addTokens
      parameters:
      - name: 360-api-version
        in: header
        description: The version of the API.
        required: true
        schema:
          type: string
          enum:
          - v2.0
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddTokensBody'
      responses:
        '204':
          description: Add tokens.
        '401':
          description: The given access token is either missing, invalid, has expired, or has been revoked.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - invalid_token
                required:
                - error
        '403':
          description: The given access token does not have the required OAuth scope to execute the request.
          content:
            application/json:
              schema:
                title: Invalid Scope
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                        - invalid_scope
                      message:
                        type: string
                        example: A human-readable message to help with debugging.
                    required:
                    - code
                    - message
                required:
                - error
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                oneOf:
                - description: The given `pathId` does not correspond to any existing path.
                  title: Path Not Found
                  type: object
                  properties:
                    error:
                      type: object
                      properties:
                        code:
                          type: string
                          enum:
                          - pathNotFound
                        message:
                          type: string
                          example: A human-readable message to help with debugging.
                      required:
                      - code
                      - message
                  required:
                  - error
                - description: The given `groupId` does not correspond to any existing group.
                  title: Group Not Found
                  type: object
                  properties:
                    error:
                      type: object
                      properties:
                        code:
                          type: string
                          enum:
                          - groupNotFound
                        message:
                          type: string
                          example: A human-readable message to help with debugging.
                      required:
                      - code
                      - message
                  required:
                  - error
                - description: The given user does not correspond to any existing and non-deleted user.
                  title: User Not Found
                  type: object
                  properties:
                    error:
                      type: object
                      properties:
                        code:
                          type: string
                          enum:
                          - userNotFound
                        message:
                          type: string
                          example: A human-readable message to help with debugging.
                      required:
                      - code
                      - message
                  required:
                  - error
        '429':
          description: 'The client has sent too many requests in a short amount of time. '
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - tooManyRequests
                required:
                - error
      security:
      - oauth2: []
      summary: Add tokens
      tags:
      - Paths
  /api/v2/paths/{pathId}/archive:
    put:
      description: '> πŸ”‘

        >

        > Required OAuth scope: `paths:write`.


        Archives or restores a path.'
      operationId: v2.paths.ArchiveOrUnarchivePathController_archiveOrUnarchivePath
      parameters:
      - name: 360-api-version
        in: header
        description: The version of the API.
        required: true
        schema:
          type: string
          enum:
          - v2.0
      - name: pathId
        required: true
        in: path
        description: The unique ID of the path.
        schema:
          format: ObjectId
          pattern: ^[a-fA-F0-9]{24}$
          example: 507f1f77bcf86cd799439011
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ArchivePathBody'
      responses:
        '200':
          description: Returns the updated path.
        '400':
          description: The given path has running sessions.
          content:
            application/json:
              schema:
                title: Path Has Running Sessions
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                        - pathHasRunningSessions
                      message:
                        type: string
                        example: A human-readable message to help with debugging.
                    required:
                    - code
                    - message
                required:
                - error
        '401':
          description: The given access token is either missing, invalid, has expired, or has been revoked.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - invalid_token
                required:
                - error
        '403':
          description: The given access token does not have the required OAuth scope to execute the request.
          content:
            application/json:
              schema:
                title: Invalid Scope
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                        - invalid_scope
                      message:
                        type: string
                        example: A human-readable message to help with debugging.
                    required:
                    - code
                    - message
                required:
                - error
        '404':
          description: The given `pathId` does not correspond to any existing path.
          content:
            application/json:
              schema:
                title: Path Not Found
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                        - pathNotFound
                      message:
                        type: string
                        example: A human-readable message to help with debugging.
                    required:
                    - code
                    - message
                required:
                - error
        '429':
          description: 'The client has sent too many requests in a short amount of time. '
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - tooManyRequests
                required:
                - error
      security:
      - oauth2: []
      summary: Archive or restore a path
      tags:
      - Paths
  /api/v2/paths:
    post:
      description: '> πŸ”‘

        >

        > Required OAuth scope: `paths:write`.


        Creates a new path in the platform.'
      operationId: v2.paths.CreatePathController_createPath
      parameters:
      - name: 360-api-version
        in: header
        description: The version of the API.
        required: true
        schema:
          type: string
          enum:
          - v2.0
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/InputPathDTO'
      responses:
        '201':
          description: Returns the information about the created path.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PathDTO'
        '400':
          description: The server cannot or will not process the request due to something that is perceived to be a client error.
          content:
            application/json:
              schema:
                oneOf:
                - description: The main author is present in the co-authors list.
                  title: Main Author As Co Author
                  type: object
                  properties:
                    error:
                      type: object
                      properties:
                        code:
                          type: string
                          enum:
                          - mainAuthorAsCoAuthor
                        message:
                          type: string
                          example: A human-readable message to help with debugging.
                      required:
                      - code
                      - message
                  required:
                  - error
                - description: The given media ID does not correspond to any existing image media.
                  title: Media Not Found
                  type: object
                  properties:
                    error:
                      type: object
                      properties:
                        code:
                          type: string
                          enum:
                          - mediaNotFound
                        message:
                          type: string
                          example: A human-readable message to help with debugging.
                      required:
                      - code
                      - message
                  required:
                  - error
        '401':
          description: The given access token is either missing, invalid, has expired, or has been revoked.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - invalid_token
                required:
                - error
        '403':
          description: The given access token does not have the required OAuth scope to execute the request.
          content:
            application/json:
              schema:
                title: Invalid Scope
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                        - invalid_scope
                      message:
                        type: string
                        example: A human-readable message to help with debugging.
                    required:
                    - code
                    - message
                required:
                - error
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                oneOf:
                - description: The given `groupId` does not correspond to any existing group.
                  title: Group Not Found
                  type: object
                  properties:
                    error:
                      type: object
                      properties:
                        code:
                          type: string
                          enum:
                          - groupNotFound
                        message:
                          type: string
                          example: A human-readable message to help with debugging.
                      required:
                      - code
                      - message
                  required:
                  - error
                - description: At least one of the given users does not correspond to any existing and non-deleted user.
                  title: Users Not Found
                  type: object
                  properties:
                    error:
                      type: object
                      properties:
                        code:
                          type: string
                          enum:
                          - usersNotFound
                        message:
                          type: string
                          example: A human-readable message to help with debugging.
                      required:
                      - code
                      - message
                  required:
                  - error
                - description: The given `certificateId` does not correspond to any existing certificate outline.
                  title: Certificate Outline Not Found
                  type: object
                  properties:
                    error:
                      type: object
                      properties:
                        code:
                          type: string
                          enum:
                          - certificateOutlineNotFound
                        message:
                          type: string
                          example: A human-readable message to help with debugging.
                      required:
                      - code
                      - message
                  required:
                  - error
        '429':
          description: 'The client has sent too many requests in a short amount of time. '
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                    - tooManyRequests
                required:
                - error
      security:
      - oauth2: []
      summary: Create a path
      tags:
      - Paths
    get:
      description: '> πŸ”‘

        >

        > Required OAuth scope: `paths:read`.


        > πŸ“–

        >

        > This endpoint is paginated with a page size of 200 paths. For more information, see the [Pagination guide](doc:pagination).


        Lists all paths in your platform.'
      operationId: v2.paths.GetPathsController_getPaths
      parameters:
      - name: 360-api-version
        in: header
        description: The version of the API.
        required: true
        schema:
          type: string
          enum:
          - v2.0
      - name: createdAt
        required: false
        in: query
        style: deepObject
        explode: true
        description: 'Filter on **createdAt** property with LHS bracket notation.

# --- truncated at 32 KB (287 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/360learning/refs/heads/main/openapi/360learning-paths-api-openapi.yml