openapi: 3.0.0
info:
  contact:
    email: ol3@mheducation.com
    name: OL Team 3 (OL-PI)
    url: https://mheducation.com
  description: OpenAPI documentation for the Learning Experience BFF API.
  termsOfService: https://mheducation.com
  title: Learning Experience BFF API
  version: 4.56.9
  license:
    name: McGraw Hill
    url: https://mheducation.com
servers:
  - description: dev
    url: https://learning-experience-bff.dev.lms.nonprod.mheducation.com
  - description: qastg
    url: https://learning-experience-bff.qastg.lms.nonprod.mheducation.com
  - description: qalv
    url: https://learning-experience-bff.qalv.lms.nonprod.mheducation.com
  - description: prod
    url: https://learning-experience-bff.lms.prod.mheducation.com
tags:
  - name: health
    description: Health Check / Status Endpoints
  - name: search
    description: Search endpoints
  - name: teacher
    description: Instructor-only endpoints
  - name: teacher support
    description: Teacher Support Endpoints
  - name: course
    description: Course Endpoints
  - name: layout
    description: Layout Endpoints
  - name: standards
    description: Standards Hierarchy Endpoints
  - name: assets
    description: Assets endpoints
  - name: overview
    description: Lesson Overview Endpoints
  - name: calendar
    description: Calendar/Schedule Events Endpoints
  - name: lesson plan
    description: Lesson Plan Endpoints
  - name: assignments
    description: Assignments endpoints
  - name: benchmarks
    description: Benchmarks endpoints
  - name: lesson presentation
    description: Lesson Presentation Endpoints
  - name: teacher assistant
    description: Teacher Assistant Endpoints
  - name: banks
    description: ABS Related Endpoints
  - name: parent
    description: Parent Endpoints
paths:
  /version:
    get:
      description: Display version info.
      operationId: versionInfo
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VersionInfo'
          description: Version Info
      summary: Version info.
      tags:
        - health
  /healthz:
    head:
      description: |-
        Display health check result without returning a body. Used by health checks in Kubernetes.

        Alternate paths: `/health`, `/v1/healthcheck`, `/live`, `/ready`
      operationId: healthCheckHead
      responses:
        '200':
          description: Successful health check
        '500':
          description: Failed health check
        '503':
          description: Shutdown in progress
      summary: Quick health check
      tags:
        - health
    get:
      description: Display health check result
      operationId: healthCheck
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthResponse'
          description: Health JSON
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthResponse'
          description: Shutdown in progress
      summary: Health check.
      tags:
        - health
  /v1/student/search:
    post:
      description: Search for assets visible to students using content search
      operationId: studentSearch
      parameters:
        - $ref: '#/components/parameters/LocaleStates'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponseV2'
          description: Search results response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input path parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Student Search
      tags:
        - search
  /v1/teacher-support/{course-uuid}/publishes/{publish-uuid}/lessons/{lesson-xid}:
    parameters:
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/PublishUuid'
      - $ref: '#/components/parameters/LessonXId'
    get:
      deprecated: true
      x-sunset: '2024-07-31'
      description: Deprecated, Endpoint Responses now included in LessonOverviewRoute MOON-4726 - Gets Teacher Support data from LEA using `course-uuid`, `publish-uuid`, and `lesson-xid`
      operationId: getTeacherSupport
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TeacherSupportResponse'
          description: Teacher Support Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input path parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets Teacher Support data from LEA
      tags:
        - teacher support
  /v1/lesson-overview:
    post:
      description: Returns the Lesson Overview
      operationId: postLessonOverview
      parameters:
        - $ref: '#/components/parameters/LocaleStates'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LessonOverviewRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LessonOverviewResponseV2'
          description: Lesson Overview
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets Lesson Overview with Layouts, blades and content, planning information, and asset filters
      tags:
        - overview
  /v1/parent/folder-overview:
    post:
      description: Returns the Lesson Overview for parent users. This endpoint skips section-dependent and lessonPlan-dependent steps, returning only student-facing information.
      operationId: postParentLessonOverview
      parameters:
        - $ref: '#/components/parameters/LocaleStates'
        - $ref: '#/components/parameters/ExcludedTypes'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParentLessonOverviewRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParentLessonOverviewResponse'
          description: Parent Lesson Overview
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403Forbidden'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets Lesson Overview for parent users without section or lesson plan dependencies
      tags:
        - overview
        - parent
  /v1/sections/{section-xid}/courses/{course-uuid}/publishes/{publish-uuid}/structure:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/PublishUuid'
      - $ref: '#/components/parameters/Blades'
      - $ref: '#/components/parameters/LocaleStates'
      - $ref: '#/components/parameters/FilterReview'
      - $ref: '#/components/parameters/ResourceLibraryMetadata'
      - $ref: '#/components/parameters/VariantId'
      - $ref: '#/components/parameters/IfNoneMatch'
    get:
      description: Gets Course Table of Contents structure
      operationId: getCourseTOC
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CourseResponse'
          description: Course Table of Contents Response
        '304':
          description: Not Modified - the provided If-None-Match ETag matched the current course structure, so no body is returned.
          headers:
            ETag:
              description: Strong entity tag matching the client's If-None-Match value.
              schema:
                type: string
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets Course Table of Contents structure
      tags:
        - course
  /v1/parent/courses/{course-uuid}/structure:
    parameters:
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/Blades'
      - $ref: '#/components/parameters/LocaleStates'
      - $ref: '#/components/parameters/FilterReview'
    get:
      description: Gets Course Table of Contents structure for parent users without section-dependent information. This endpoint skips section-dependent calls such as GetAdoptionsOfClass which are not relevant to the parent experience.
      operationId: getParentCourseTOC
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CourseResponse'
          description: Course Table of Contents Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403Forbidden'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets Course Table of Contents structure for parent users
      tags:
        - course
        - parent
  /v1/parent/courses/{course-uuid}/portal:
    parameters:
      - $ref: '#/components/parameters/CourseUuid'
    get:
      description: Gets parent portal authorization URL data for parent users without section-dependent context.
      operationId: getParentPortal
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CourseDistributionBankUrlResponse'
          description: Parent Portal Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403Forbidden'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets parent portal data
      tags:
        - parent
  /v1/courses/{course-uuid}/publishes/{publish-uuid}/layouts/{layout-uuid}:
    parameters:
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/PublishUuid'
      - $ref: '#/components/parameters/LayoutUuid'
    get:
      deprecated: true
      x-sunset: '2024-07-31'
      description: Deprecated, Endpoint Responses now included in LessonOverviewRoute MOON-4726 - Gets the Lesson Overview Layout Structure and Assets
      operationId: getLessonOverviewLayout
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LayoutResponse'
          description: Lesson Overview Layout Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets Layout data
      tags:
        - layout
  /v1/teacher/organizations/{org-xid}/courses/{course-uuid}/publishes/{publish-uuid}/standards-hierarchy:
    parameters:
      - $ref: '#/components/parameters/OrgXId'
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/PublishUuid'
    get:
      description: Gets Course Standards Hierarchy
      operationId: getCourseStandards
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardsResponse'
          description: Standards Hierarchy Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets Course Standards Hierarchy
      tags:
        - standards
  /v1/sections/{section-xid}/courses/{course-uuid}/publishes/{publish-uuid}/assets:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/PublishUuid'
      - $ref: '#/components/parameters/LocaleStates'
    post:
      description: Fetch bulk assets
      operationId: getBulkAssets
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssetsRequest'
      responses:
        '200':
          description: Array of Assets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkAssetsResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Fetch bulk assets
      tags:
        - assets
  /v1/sections/{section-xid}/courses/{course-uuid}/publishes/{publish-uuid}/lessons/{container-uuid}/presentation:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/PublishUuid'
      - $ref: '#/components/parameters/ContainerUuid'
      - $ref: '#/components/parameters/LocaleStates'
    put:
      description: PUT the user presentation order for a lesson
      operationId: putLessonPresentation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LessonPresentationRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LessonPresentationResponse'
          description: Update presentation response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Updates the user presentation order for a given record
      tags:
        - lesson presentation
  /v1/sections/{section-xid}/assets/assign:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
    put:
      description: Creates assignment associated with an asset. Returns updated behavior, filters and tags data for the asset and lesson.
      operationId: putAssignAsset
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignAssetRequest'
      responses:
        '200':
          description: Updated filters, tags and behaviors data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignAssetResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Creates assignment associated with an asset. Returns updated behavior, filters and tags data for the asset and lesson.
      tags:
        - assets
        - assignments
  /v1/sections/{section-xid}/assets/abs-signed-url:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
    post:
      description: Retrieve a map of signed URLs for accessing a list of assets within a section
      operationId: getAssetSignedUrlBatch
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetSignedUrlBatchRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                description: A map of signed URLs keyed by a non-LARS asset XID.
                additionalProperties:
                  $ref: '#/components/schemas/AbsSignedURL'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
      summary: |
        Get a map of signed asset URLs from ABS based on the section XID and a list of non-LARS asset
        XIDs.

        Like the single asset signed URL endpoint, this endpoint should only be used for asset types
        that won't benefit from the ABS cookies normally used to authenticate requests.

        It also responds with the authorization URL and the ABS asset URL. This can be used to set
        cookies on the client side. Open Learning should already have these cookies set, so do not
        use it for that purpose.

        NOTE: This is for asset XIDs of the type "asset" and service "content.assets.deliver". LARs
        assets will not work here. A single improper asset XID will result in an error response, with
        no signed URLs returned.
      tags:
        - assets
  /v1/sections/{section-xid}/assets/{asset-xid}/abs-signed-url:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/AssetXid'
    get:
      description: Retrieve a signed URL for accessing an asset within a section
      operationId: getAssetSignedUrl
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AbsSignedURL'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
      summary: |
        Get a signed asset URL from ABS based on the section XID and non-LARS asset XID.

        This endpoint should only be used for asset types that won't benefit from the ABS cookies
        normally used to authenticate requests. This includes asset types that open in iframes, etc.
        When in doubt check the asset type to see if it really requires a signed URL.
        This operation is expensive and should be avoided if it's not strictly necessary.

        It also responds with the authorization URL and the ABS asset URL. This can be used to set
        cookies on the client side. Open Learning should already have these cookies set, so do not
        use it for that purpose.

        NOTE: This is for asset XIDs of the type "asset" and service "content.assets.deliver". LARs
        assets will not work here.
      tags:
        - assets
  /v1/sections/{section-xid}/lessons/{lesson-plan-xid}/schedule:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/LessonPlanXid'
    post:
      description: Creates a calendar event for a lesson and returns updated lesson overview data
      operationId: postScheduleLesson
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleLessonRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleLessonResponse'
          description: Updated lesson overview data
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Invalid input parameters
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse Json
      security:
        - userJWT: []
      summary: Creates an event associated with the lesson and then returns the updated behavior and tags data for the lesson.
      tags:
        - calendar
        - overview
  /v1/sections/{section-xid}/lesson-plan:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
    get:
      description: Get a Lesson Plan which includes all the global data related to the class.
      operationId: getLessonPlan
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LessonPlanResponse'
          description: Lesson Overview Layout Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Lesson Plan not found
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Get a Lesson Plan.
      tags:
        - lesson plan
  /v1/sections/{section-xid}/structure-variants:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
    get:
      description: Returns all the structure variants for the lesson plan.
      operationId: getLessonPlanStructureVariants
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructureVariantResponse'
          description: Structure Variant Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Returns all the structure variants for the lesson plan.
      tags:
        - lesson plan
  /v1/sections/{section-xid}/structure-variant:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
    patch:
      description: Save the structure variant for a section's lesson plan.
      operationId: patchLessonPlanStructureVariant
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StructureVariantRequest'
      responses:
        '204':
          description: Successfully updated
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '404':
          $ref: '#/components/responses/ErrorResponse404'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Save the structure variant for a section's lesson plan.
      tags:
        - lesson plan
  /v1/sections/{section-xid}/lessons/{lesson-xid}/resync:
    parameters:
      - $ref: '#/components/parameters/LessonXId'
      - $ref: '#/components/parameters/SectionXid'
    post:
      description: Resync user-added assets for a specific lesson/folder in the lesson plan associated with a course
      operationId: resyncLesson
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LessonSyncResponse'
          description: Lesson Overview Layout Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Resync lesson user-added resources.
      tags:
        - lesson plan
  /v1/sections/{section-xid}/courses/{user-course-id}/assets/{asset-uuid}/visibility:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/UserCourseId'
      - $ref: '#/components/parameters/AssetUuid'
    patch:
      deprecated: true
      description: Toggles asset visibility to students and in presentation. Returns updated behavior, filters and tags data for the asset and lesson.
      operationId: patchAssetVisibility
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetVisibilityRequest'
      responses:
        '200':
          description: Updated filters, tags and behaviors data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetVisibilityResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Toggles asset visibility to students and in presentation. Returns updated behavior, filters and tags data for the asset.
      tags:
        - assets
        - lesson plan
  /v1/sections/{section-xid}/courses/{course-uuid}/publishes/{publish-uuid}/assets/{asset-uuid}:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/AssetUuid'
      - $ref: '#/components/parameters/PublishUuid'
    get:
      deprecated: true
      description: Returns all the asset relevant data (meta-data, etc.).
      operationId: getAssetData
      responses:
        '200':
          description: Get all the relevant data for the assets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FullAssetRecordResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Returns all the asset relevant data (meta-data, etc.).
      tags:
        - assets
  /v1/sections/{section-xid}/restore:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
    post:
      description: Adds a lesson plan to the restore queue.
      operationId: restoreLessonPlan
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LessonPlanRestoreResponse'
          description: Lesson Plan Restore response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Adds a lesson plan to the restore queue.
      tags:
        - lesson plan
    get:
      description: Retrieves the status of a lesson plan restore operation.
      operationId: getLessonPlanRestoreStatus
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LessonPlanRestoreResponse'
          description: Lesson Plan Restore Status response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Retrieves the status of a lesson plan restore operation.
      tags:
        - lesson plan
  /v1/lessons/{container-uuid}/assets/{asset-uuid}:
    parameters:
      - $ref: '#/components/parameters/ContainerUuid'
      - $ref: '#/components/parameters/AssetUuid'
    delete:
      description: Deletes a user added asset
      operationId: deleteUserAddedAsset
      responses:
        '204':
          description: Asset successfully deleted
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Deletes a user added asset
      tags:
        - assets
        - lesson plan
  /v1/lesson-plans/{lesson-plan-uuid}/lessons/{container-uuid}/asset:
    parameters:
      - $ref: '#/components/parameters/LessonPlanUuid'
      - $ref: '#/components/parameters/ContainerUuid'
    post:
      deprecated: true
      description: Creates a user added asset
      operationId: postUserAddedAsset
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserAddedAssetRequest'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAddedAssetResponse'
          description: Asset successfully added
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Creates a user added asset
      tags:
        - assets
        - lesson plan
  /v1/lesson-plans/{lesson-plan-uuid}/lessons/{container-uuid}/presentation-sync:
    parameters:
      - $ref: '#/components/parameters/LessonPlanUuid'
      - $ref: '#/components/parameters/ContainerUuid'
    patch:
      description: Sync lesson presentation from the source lesson plan.
      operationId: patchPresentationSync
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PresentationSyncRequest'
      responses:
        '200':
          description: Presentation sync result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PresentationSyncResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Sync lesson presentation from the source lesson plan.
      tags:
        - lesson presentation
  /v1/preview/courses/{course-uuid}/asset/{asset-uuid}:
    parameters:
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/AssetUuid'
    post:
      description: Determines if the logged-in user has the necessary permissions to view an asset based on their role, licensing information and the asset attributes.
      operationId: postAssetPreview
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetPreviewResponse'
          description: The user can access the asset.
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse404'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Determines if the logged-in user has the necessary permissions to view an asset based on their role, licensing information and the asset attributes.
      tags:
        - assets
  /v1/organizations/{org-xid}/courses/{course-uuid}/benchmarks/hierarchy:
    parameters:
      - $ref: '#/components/parameters/OrgXId'
      - $ref: '#/components/parameters/CourseUuid'
    get:
      description: Gets Course Benchmarks Hierarchy
      operationId: getCourseBenchmarkHierarchy
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BenchmarkHierarchyResponse'
          description: Standards Hierarchy Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets Course Standards Hierarchy
      tags:
        - benchmarks
  /v1/organizations/{org-xid}/courses/{course-uuid}/benchmarks:
    parameters:
      - $ref: '#/components/parameters/OrgXId'
      - $ref: '#/components/parameters/CourseUuid'
    get:
      description: Gets a set of org-specific benchmarks related to the given course.
      operationId: getCourseBenchmarks
      parameters:
        - $ref: '#/components/parameters/BenchmarkAuthorityId'
        - $ref: '#/components/parameters/BenchmarkDocumentId'
        - $ref: '#/components/parameters/BenchmarkSubjectId'
        - $ref: '#/components/parameters/BenchmarkCourseId'
        - $ref: '#/components/parameters/BenchmarkCode'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BenchmarksResponse'
          description: Standards Hierarchy Response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Gets Course Benchmark list
      tags:
        - benchmarks
  /v1/lesson-plans/{section-xid}/dist-bank-auth-urls:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/DistBank'
    get:
      summary: Get ABS authorization URL(s) for a lesson plan's distribution bank(s)
      description: Returns one or more ABS authorization URLs for the given lesson plan's distribution banks.
      operationId: getBankAuthorizationUrl
      tags:
        - banks
      responses:
        '200':
          description: ABS authorization URL(s)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAuthorizationUrlResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '404':
          description: Bank not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: ErrorResponse JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
  /v1/teacher-assistant/session:
    get:
      description: Retrieves the latest teacher assistant session
      operationId: getLatestTeacherAssistantSession
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - in: query
          name: section_id
          required: false
          schema:
            type: string
          description: Section ID to filter teacher assistant sessions
          example: section-123
      responses:
        '200':
          $ref: '#/components/responses/TeacherAssistantSessionResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '500':
          description: ErrorResponse JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
      summary: Get latest teacher assistant session
      tags:
        - teacher assistant
    post:
      description: Creates a new teacher assistant session and returns session information
      operationId: createTeacherAssistantSession
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeacherAssistantSessionRequest'
            example:
              messages: []
              context:
                - type: course
                  course: 089b11b6-5625-4d86-a752-c61b5b07476a
                - type: section
                  section: urn:com.mheducation.openlearning:enterprise.roster:qastg.us-east-1:section:55ab22c0-d3f2-11ef-9c47-6b0f1e807b43
                - type: org_xid
                  org_xid: urn:com.mheducation.openlearning:enterprise.identity.organization:qastg.global:organization:45560beb-31ff-4b1c-9ee6-ec7571363f0e
      responses:
        '201':
          $ref: '#/components/responses/TeacherAssistantCreateSessionResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '500':
          description: ErrorResponse JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
      summary: Create a new teacher assistant session
      tags:
        - teacher assistant
  /v1/teacher-assistant/session/{sessionId}/details:
    get:
      description: Retrieves a teacher assistant session by session id
      operationId: getTeacherAssistantSessionById
      parameters:
        - name: sessionId
          in: path
          required: true
          description: The session id to retrieve
          schema:
            type: string
            example: 9469ca49-0dc5-485c-a3f8-cfbebd84f55e
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          $ref: '#/components/responses/TeacherAssistantSessionResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '404':
          description: Session not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: ErrorResponse JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
      summary: Get teacher assistant session by id
      tags:
        - teacher assistant
  /v1/teacher-assistant/session/{sessionId}/message/user:
    post:
      description: Sends a user message to a teacher assistant session
      operationId: sendUserMessageToTeacherAssistantSession
      parameters:
        - name: sessionId
          in: path
          required: true
          description: The session id to send the message to
          schema:
            type: string
            example: abc-123-def
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeacherAssistantSessionRequest'
            example:
              messages:
                - type: text
                  text: How did my class perform on the latest assignment?
              context:
                - type: section
                  section: urn:com.mheducation.openlearning:enterprise.roster:qastg.us-east-1:section:55ab22c0-d3f2-11ef-9c47-6b0f1e807b43
                - type: course
                  course: 089b11b6-5625-4d86-a752-c61b5b07476a
                - type: org_xid
                  org_xid: urn:com.mheducation.openlearning:enterprise.identity.organization:qastg.global:organization:45560beb-31ff-4b1c-9ee6-ec7571363f0e
              learners: []
      responses:
        '200':
          $ref: '#/components/responses/TeacherAssistantSessionResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '404':
          description: Session not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: ErrorResponse JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
      summary: Send user message to teacher assistant session
      tags:
        - teacher assistant
  /v1/teacher-assistant/session/{sessionId}/feedback:
    post:
      description: Sends the user feedback to teacher assistant
      operationId: sendUserFeedbackToTeacherAssistant
      parameters:
        - name: sessionId
          in: path
          required: true
          description: The session id to send the message to
          schema:
            type: string
            example: abc-123-def
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeacherAssistantSessionRequest'
      responses:
        '200':
          $ref: '#/components/responses/TeacherAssistantFeedbackResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '404':
          description: Session not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: ErrorResponse JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
      summary: Send user message to teacher assistant session
      tags:
        - teacher assistant
  /v2/courses/{course-uuid}/publishes/{publish-uuid}/sections/{section-xid}/assets/{asset-xid}/schedule:
    parameters:
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/PublishUuid'
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/AssetXid'
    post:
      summary: Creates a calendar event associated with an asset. Returns updated behavior, filters and tags data for the asset and lesson.
      description: |
        The v2 version of this endpoint introduces additional path parameters, `course-uuid` and `publish-uuid`, to ensure that the correct context is provided for scheduling an asset. This change enables the API to accurately manage student visibility for scheduled assets.
      operationId: postScheduleAssetV2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleAssetRequest'
      responses:
        '200':
          description: Updated filters, tags and behaviors data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleAssetResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      tags:
        - assets
        - calendar
  /v2/lesson-plans/{lesson-plan-uuid}/lessons/{container-uuid}/asset:
    parameters:
      - $ref: '#/components/parameters/LessonPlanUuid'
      - $ref: '#/components/parameters/ContainerUuid'
    post:
      description: Creates a user added asset
      operationId: postUserAddedAssetV2
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserAddedAssetRequest'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetV2'
          description: Asset successfully added
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Creates a user added asset
      tags:
        - assets
        - lesson plan
  /v2/sections/{section-xid}/courses/{course-uuid}/publishes/{publish-uuid}/assets/{asset-uuid}:
    parameters:
      - $ref: '#/components/parameters/SectionXid'
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/AssetUuid'
      - $ref: '#/components/parameters/PublishUuid'
    get:
      description: Returns all the asset relevant data (meta-data, etc.).
      operationId: getAssetDataV2
      responses:
        '200':
          description: Get all the relevant data for the assets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetV2'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '404':
          $ref: '#/components/responses/ErrorResponse404'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Returns all the asset relevant data (meta-data, etc.).
      tags:
        - assets
  /v2/courses/{course-uuid}/assets/{asset-uuid}:
    parameters:
      - $ref: '#/components/parameters/CourseUuid'
      - $ref: '#/components/parameters/AssetUuid'
    get:
      description: Returns all the asset relevant data without needing section XID.
      operationId: getAssetDataV2NoSection
      responses:
        '200':
          description: Get all the relevant data for the assets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetV2'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '404':
          $ref: '#/components/responses/ErrorResponse404'
        '422':
          description: Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Returns all the asset relevant data without a section XID.
      tags:
        - assets
  /v2/parent/search:
    post:
      description: Search for assets available to parent users
      operationId: parentSearch
      parameters:
        - $ref: '#/components/parameters/LocaleStates'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParentSearchRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponseV2'
          description: Search results response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403Forbidden'
        '422':
          description: Invalid request body or query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Parent search
      tags:
        - parent
  /v2/teacher/search:
    post:
      description: Search for assets using content search
      operationId: teacherSearchV2
      parameters:
        - $ref: '#/components/parameters/LocaleStates'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponseV2'
          description: Search results response
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid input path parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ErrorResponse JSON
      security:
        - userJWT: []
      summary: Teacher search
      tags:
        - search
  /v2/teacher/search/standards:
    post:
      description: Get aggregated standards for the current pagination of search results
      operationId: teacherSearchStandards
      parameters:
        - $ref: '#/components/parameters/LocaleStates'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchStandardsResponse'
          description: Aggregated standards for the current pagination of search results
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '422':
          description: Invalid request body or query parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
      tags:
        - search
  /v2/teacher/search/grouped:
    post:
      description: Search for assets grouped by a metadata field using CSA terms aggregation with top_hits.
      operationId: teacherGroupedSearch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupedSearchRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupedSearchResponse'
          description: Grouped search results response
        '400':
          description: Invalid request - unsupported groupBy field, hitsPerGroup exceeds 25, or maxGroups exceeds 50
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: CSA returned an error or timeout
      security:
        - userJWT: []
      summary: Teacher grouped asset search
      tags:
        - search
  /v2/teacher-assistant/session/{sessionId}/message/user:
    post:
      description: Sends a user message to a teacher assistant session using the v2 API
      operationId: sendUserMessageToTeacherAssistantSessionV2
      parameters:
        - name: sessionId
          in: path
          required: true
          description: The session id to send the message to
          schema:
            type: string
            example: abc-123-def
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeacherAssistantSessionRequest'
            example:
              messages:
                - type: text
                  text: How did my class perform on the latest assignment?
              context:
                - type: section
                  section: urn:com.mheducation.openlearning:enterprise.roster:qastg.us-east-1:section:55ab22c0-d3f2-11ef-9c47-6b0f1e807b43
                - type: course
                  course: 089b11b6-5625-4d86-a752-c61b5b07476a
                - type: org_xid
                  org_xid: urn:com.mheducation.openlearning:enterprise.identity.organization:qastg.global:organization:45560beb-31ff-4b1c-9ee6-ec7571363f0e
              learners: []
      responses:
        '200':
          $ref: '#/components/responses/TeacherAssistantSessionResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '404':
          description: Session not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: ErrorResponse JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - userJWT: []
      summary: Send user message to teacher assistant session (v2)
      tags:
        - teacher assistant
components:
  securitySchemes:
    userJWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Authorization for a user.  Must be in the form 'Bearer <JWT>' where <JWT> is the Json Web Token obtained from the Token and Session Service (TaSS) or IDM
  schemas:
    VersionInfo:
      properties:
        buildTime:
          type: string
          format: date-time
          x-go-type: string
        version:
          type: string
      type: object
      required:
        - buildTime
        - version
    HealthInfo:
      properties:
        message:
          type: string
        status:
          type: string
      type: object
    HealthResponse:
      allOf:
        - $ref: '#/components/schemas/HealthInfo'
      type: object
    Error:
      type: object
      properties:
        code:
          type: integer
          description: HTTP Status Code
        details:
          items:
            type: string
          type: array
        error:
          type: string
          description: Error summary
        friendlyErrorCode:
          type: string
          enum:
            - BFF-403-001
            - BFF-404-001
            - BFF-422-001
            - BFF-500-000
            - BFF-500-001
            - LEA-403-001
            - LEA-404-001
            - LEA-422-001
            - LEA-500-000
            - LEA-500-001
          description: |
            Friendly Error codes:
             * `BFF-403-001` - access denied
             * `BFF-404-001` - resource not found
             * `BFF-422-001` - invalid request error
             * `BFF-500-000` - handler execution internal server error
             * `BFF-500-001` - service execution returned an error
             * `LEA-403-000` - access denied
             * `LEA-404-000` - resource not found
             * `LEA-422-000` - invalid request error
             * `LEA-500-000` - handler execution internal server error
             * `LEA-500-001` - service execution returned an error
        associatedTraceIds:
          items:
            type: string
          type: array
          description: List of associated trace ids that can be used for troubleshooting
      required:
        - code
        - details
        - error
        - associatedTraceIds
    ErrorResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/Error'
    RequestAssetFilter:
      description: This represents an asset filter for lesson view filters and other place that we want to filter existing results without sending another request.
      type: object
      properties:
        key:
          description: The name of the filter as a string.
          type: string
      required:
        - key
    RequestSearchFacetFilters:
      type: array
      items:
        $ref: '#/components/schemas/RequestAssetFilter'
    StandardsRequestAssetFilter:
      description: This represents a standards asset filter for lesson view filters and other place that we want to filter existing results without sending another request.
      type: object
      properties:
        id:
          description: The id of the Standards Hierarchy object.
          type: string
        nodeType:
          description: The nodeType from the Standards Hierarchy object.
          type: string
          enum:
            - authority
            - benchmark
            - course
            - document
            - subject
          x-enum-varnames:
            - StandardsRequestAssetFilterNodeTypeAuthority
            - StandardsRequestAssetFilterNodeTypeBenchmark
            - StandardsRequestAssetFilterNodeTypeCourse
            - StandardsRequestAssetFilterNodeTypeDocument
            - StandardsRequestAssetFilterNodeTypeSubject
        name:
          description: (Optional). The name of the authority as a string. This is only required with "authority" nodeType.
          type: string
      required:
        - id
        - nodeType
    StandardsRequestSearchFacetFilters:
      type: array
      items:
        $ref: '#/components/schemas/StandardsRequestAssetFilter'
    LiteracyFilter:
      description: Literacy Filter object to filter by literacy reads and multi-level text
      type: object
      properties:
        literacyReadsFilter:
          type: boolean
        learnerXid:
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        grade:
          type: string
          enum:
            - '5'
            - '4'
            - '3'
            - '2'
            - '1'
            - K
      required:
        - literacyReadsFilter
        - learnerXid
        - grade
    RequestSearchFacet:
      description: The criteria used by the user to filter the search results.
      type: object
      properties:
        languages:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        instructionalTypes:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        lexileLevels:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        standards:
          $ref: '#/components/schemas/StandardsRequestSearchFacetFilters'
        resourceTypes:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        parentContentGroupsXIds:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        literacyFilter:
          $ref: '#/components/schemas/LiteracyFilter'
        literacyReadsOnly:
          type: boolean
          description: When true, restrict results to assets tagged as Literacy Reads (i.e. that have a literacyReads metadata field). Used by the 6-12 student library to exclude non-Literacy-Reads content such as CERES. Unlike literacyFilter, this does not apply lexile/multi-level-text personalization.
        gradeMin:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        gradeMax:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        teacherCompetency:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        delivery:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        professionalLearningTopic:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
        mediaType:
          $ref: '#/components/schemas/RequestSearchFacetFilters'
      required:
        - languages
        - instructionalTypes
        - lexileLevels
        - standards
        - resourceTypes
        - parentContentGroupsXIds
    SortBy:
      description: Sort criteria for ordering search results.
      type: object
      properties:
        key:
          description: The field to sort by.
          type: string
          enum:
            - title
        order:
          description: The sort direction.
          type: string
          enum:
            - asc
            - desc
      required:
        - key
        - order
    SearchInputs:
      type: object
      description: The filtering inputs for a lesson plan search.
      properties:
        containerId:
          description: |
            This represents the id of the base container (i.e. lesson-plan/courseware) or the id of a sub container (i.e. lesson/container).
            Optional: Use this OR parentXId to define search scope. Cannot be used together with parentXId.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        parentXId:
          description: |
            Filter assets by their parent content group XID.
            Optional: Use this OR containerId to define search scope. Cannot be used together with containerId.
            When provided, searches for all assets whose parentContentGroupXid matches this value.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        publishId:
          description: This is the publishId associated with the lesson-plan/courseware.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        facets:
          $ref: '#/components/schemas/RequestSearchFacet'
        query:
          type: string
          description: Text query to search for in asset metadata (title, description, etc.)
        nextPageStart:
          description: The asset start index of the next pagination page based on the number of results. This is a zero based index.
          type: integer
          minimum: 0
        deduplicateAssets:
          description: |
            Indicates whether duplicate assets should be removed from the search results.
            Intended for student-facing use cases requiring a unique list of assets, not for teacher search where duplicate references are expected.
            Only applies when `containerId` is used to define the search scope; has no effect when `parentXId` is used.
          type: boolean
          default: false
        sortBy:
          $ref: '#/components/schemas/SortBy'
      required:
        - publishId
    SearchRequest:
      type: object
      properties:
        lessonPlanXId:
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        sectionXId:
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        searchInputs:
          $ref: '#/components/schemas/SearchInputs'
      required:
        - lessonPlanXId
        - sectionXId
        - searchInputs
      example:
        lessonPlanXId: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:c2702eee-37c7-498a-8474-dd93116526d4.8d89b1f7-098a-43cf-bf87-c19ab9be5b1e
        sectionXId: urn:com.mheducation.openlearning:enterprise.roster:qastg.us-east-1:section:c12d4770-da12-11ed-b6bd-0b74aaab924a
        searchInputs:
          containerId: c2702eee-37c7-498a-8474-dd93116526d4
          publishId: f8b21212-3665-4951-bd8c-6ab5ff3171ff
          query: science
          facets:
            languages:
              - key: English, United States
              - key: Spanish, Mexico
              - key: Spanish, Spain
            instructionalTypes:
              - key: Answer Key
              - key: Case Study
              - key: Graph, Chart, Table
            lexileLevels:
              - key: 1010L_1185L
              - key: 1080L_1335L
            standards:
              - id: F85D16B4-1A11-11EB-BB5B-0E20088BB29A
                nodeType: benchmark
            resourceTypes:
              - key: Assessment
              - key: Audio
            parentContentGroupsXIds: []
    AssetMetadataProperty:
      type: object
      description: This object represents a metadata property for an asset.
      properties:
        metadataSourceKey:
          description: Identifies which metadata property this object represents.
          type: string
          enum:
            - gradeMin
            - gradeMax
            - mediaType
            - teacherCompetency
            - professionalLearningTopic
            - delivery
        desc:
          description: The description of the metadata property.
          type: string
        title:
          description: The title of the metadata property.
          type: string
        values:
          description: Metadata property values.
          type: array
          items:
            oneOf:
              - type: string
              - type: number
              - type: boolean
    AssetMetadataProperties:
      type: object
      description: This object represents the metadata properties for an asset.
      properties:
        gradeMin:
          $ref: '#/components/schemas/AssetMetadataProperty'
        gradeMax:
          $ref: '#/components/schemas/AssetMetadataProperty'
        mediaType:
          $ref: '#/components/schemas/AssetMetadataProperty'
        teacherCompetency:
          $ref: '#/components/schemas/AssetMetadataProperty'
        professionalLearningTopic:
          $ref: '#/components/schemas/AssetMetadataProperty'
        delivery:
          $ref: '#/components/schemas/AssetMetadataProperty'
      additionalProperties: false
    AssetThumbnailImageSourceUrl:
      type: object
      description: This represents the thumbnail of an asset with both the url and altText.
      nullable: true
      properties:
        url:
          type: string
        altText:
          type: string
      required:
        - url
        - altText
    AssetTag:
      description: This represents the tag on an asset card.
      type: object
      properties:
        key:
          type: string
    KnownAssetTag:
      description: This represents the tag on an asset card with known values.
      type: object
      properties:
        key:
          type: string
          enum:
            - Visible to Students
            - Teacher Only
            - Local Content
    AssignmentsDataV2:
      type: object
      properties:
        Due:
          description: Indicates the due date of the assignment.
          type: integer
        AssignmentXID:
          description: The represents the unique identifier for an assignment.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
      required:
        - Due
        - AssignmentXID
    AssignmentsBehaviorDataV2:
      type: object
      properties:
        canAssign:
          description: This property determines if an asset has the ability to be assigned.
          type: boolean
        canUnassign:
          description: Indicates whether an asset can be unassigned.
          type: boolean
        canPerform:
          description: This property determines if a user can perform the assignment (teachers no, students yes).
          type: boolean
        outcomeType:
          type: string
          description: The outcome type is mostly a mapping of asset type for an assignment.
          enum:
            - a2
            - assessment
            - clo
            - lti
            - manual
            - smartbook
            - smartbook_new_avalon
            - student_work
            - ceres_ungraded
        isSubmissionRequired:
          type: boolean
          description: True if asset requires student submission
        totalPointsPossible:
          type: integer
          description: The total points possible for the assignments.
        assignmentsData:
          description: The property contains the data of the assignments created from the asset.
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/AssignmentsDataV2'
      required:
        - canAssign
        - canUnassign
        - canPerform
        - outcomeType
        - isSubmissionRequired
    CalendarBehaviorData:
      type: object
      properties:
        canSchedule:
          description: This property determines if an asset has the ability to be scheduled on the calendar.
          type: boolean
        hasCalendarEvent:
          description: Indicates whether an asset is currently scheduled on the calendar.
          type: boolean
        startDate:
          description: The start date of an asset's calendar event. This field is required if 'hasCalendarEvent' is true.
          type: string
        endDate:
          description: The end date of an asset's calendar event. This field is required if 'hasCalendarEvent' is true.
          type: string
      required:
        - canSchedule
        - hasCalendarEvent
    DownloadLinkBehaviorData:
      type: object
      properties:
        url:
          description: Download Link for an Asset
          type: string
      required:
        - url
    LocaleBehaviorData:
      type: object
      properties:
        displayLocales:
          type: array
          items:
            type: string
          description: List of locales that should display asset
      required:
        - displayLocales
    EngagementMode:
      description: Intended participation model for students interacting with a resource.
      type: string
      enum:
        - Independent
        - Focus Group
        - Large Group
        - Small Group
        - Whole Class
    LiteracyReads:
      description: Text type/mode used in New Lit courses.
      type: string
      enum:
        - Central Text
        - Companion Text
        - Decodable Text
        - Directed Read
        - Read Aloud
        - Video
    MultiLevelTexts:
      description: Differentiated texts used in New Lit courses.
      type: string
      enum:
        - Concept Knowledge
        - Focus Group
        - Prior Knowledge
        - Skills Practice
    LexileLevels:
      description: controlled vocab (ranges)
      type: string
      enum:
        - 1010L - 1185L
        - 1050L - 1260L
        - 1080L - 1335L
        - 1185L - 1385L
        - 1386L - 2000L
        - 190L - 530L
        - 420L - 650L
        - 520L - 820L
        - 740L - 940L
        - 830L - 1010L
        - 925L - 1070L
        - 970L - 1120L
        - Below 190
    PedagogicalBehaviorData:
      type: object
      properties:
        isPrintable:
          description: whether an asset is printable or not
          type: boolean
        engagementMode:
          type: array
          items:
            $ref: '#/components/schemas/EngagementMode'
        literacyReads:
          $ref: '#/components/schemas/LiteracyReads'
        multiLevelTexts:
          $ref: '#/components/schemas/MultiLevelTexts'
        lexileLevels:
          type: array
          items:
            $ref: '#/components/schemas/LexileLevels'
      required:
        - isPrintable
        - engagementMode
        - lexileLevels
    NotesBehaviorData:
      type: object
      properties:
        instructorNotes:
          description: Html text with notes directed at instructors using the course.
          type: string
      required:
        - instructorNotes
    PresentationBehaviorData:
      type: object
      properties:
        addedToPresentation:
          description: Indicates whether an asset is currently added to a presentation.
          type: boolean
        presentationSequence:
          description: The sequence number of the asset in the presentation, 0-indexed. A value of -1 indicates that no presentation record exists for the lesson and the presentationSequence is not yet defined.
          type: integer
      required:
        - addedToPresentation
        - presentationSequence
    RubricBehaviorData:
      type: object
      description: |
        If the asset is of resourceType 'rubric', the properties of this object apply to the asset itself. For any other resourceType, the properties of this object apply to the rubric associated with the asset.
      properties:
        larsAssetXid:
          description: The LARS asset Xid with parameters to launch this rubric.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        rubricXid:
          description: The Xid identifying this particular rubric.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        title:
          description: Title of the rubric
          type: string
      required:
        - larsAssetXid
        - rubricXid
        - title
      example:
        larsAssetXid: urn:com.mheducation.openlearning:integration.internal.lars:qastg.us-east-1:lars_asset:ab923ab3-a559-483a-a67c-b9cbfb8292fc
        rubricXid: urn:com.mheducation.openlearning:lms.rubric.author:qastg.us-east-1:rubric_author:ca6010fd-72eb-48b5-8556-6157f2e3bdd2
        title: 'Chapter 1: The World Before Modern Times'
    VisibilityBehaviorData:
      type: object
      properties:
        isVisibleToStudents:
          description: The property that determines if an asset is visible to students or not.
          type: boolean
        isEducatorOnly:
          description: The property indicates if an asset is for Teachers Only.
          type: boolean
        canToggleVisibility:
          description: This property indicates if an asset has the ability to toggle student visibility.
          type: boolean
      required:
        - isVisibleToStudents
        - isEducatorOnly
        - canToggleVisibility
    AssetBehaviorV2:
      type: object
      properties:
        behaviorType:
          type: string
          enum:
            - assignments
            - calendar
            - downloadLink
            - locale
            - notes
            - pedagogical
            - presentation
            - rubric
            - visibility
        behaviorData:
          oneOf:
            - $ref: '#/components/schemas/AssignmentsBehaviorDataV2'
            - $ref: '#/components/schemas/CalendarBehaviorData'
            - $ref: '#/components/schemas/DownloadLinkBehaviorData'
            - $ref: '#/components/schemas/LocaleBehaviorData'
            - $ref: '#/components/schemas/PedagogicalBehaviorData'
            - $ref: '#/components/schemas/NotesBehaviorData'
            - $ref: '#/components/schemas/PresentationBehaviorData'
            - $ref: '#/components/schemas/RubricBehaviorData'
            - $ref: '#/components/schemas/VisibilityBehaviorData'
    AssetFilter:
      description: This represents an asset filter for lesson view filters and other place that we want to filter existing results without sending another request.
      type: object
      properties:
        key:
          description: The name of the filter as a string.
          type: string
        count:
          description: The number of assets with this filter (i.e. the value of `key`).
          type: integer
      required:
        - key
        - count
    AssetFilterStandards:
      description: This represents an asset filter for the standards part of the lesson view filters and other place that we want to filter existing results without sending another request.
      type: object
      properties:
        code:
          description: The Code of the Standard as a string.
          type: string
        description:
          description: The description of the Standard.
          type: string
        count:
          description: The number of assets with this filter (i.e. the value of `key`).
          type: integer
      required:
        - code
        - description
        - count
    AbsSignedURL:
      type: object
      description: |
        Signed URL for accessing the asset outside an Open Learning context. Should only be included when
        explicitly needed. Signing URLs is an expensive operation and should only happen when necessary.
        It should not be done in requests such as lesson overview.
      properties:
        assetURL:
          description: The unsigned URL for accessing the asset.
          type: string
          format: uri
        signedURL:
          description: The signed URL for accessing the asset directly.
          type: string
          format: uri
        authURL:
          description: The signed URL for setting the cookies required for accessing the asset authorized by cookies.
          type: string
          format: uri
        signedExpiresAt:
          description: The date and time at which the signed URL expires.
          type: string
          format: date-time
        authExpiresAt:
          description: The date and time at which the authorization URL expires.
          type: string
          format: date-time
      required:
        - assetURL
        - signedURL
        - authURL
        - signedExpiresAt
        - authExpiresAt
    TrackData:
      type: object
      description: Object that represents the track data from abs. Only returned with video type assets.
      properties:
        src:
          type: string
          x-go-name: Source
        kind:
          type: string
        label:
          type: string
        srclang:
          type: string
          x-go-name: SourceLanguage
      required:
        - src
        - kind
        - label
        - srclang
    AssetV2:
      type: object
      description: This object represents an asset for the various places that we use asset cards (e.g. search, lesson filters, etc.)
      properties:
        id:
          description: The uuid of the asset.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        xid:
          description: The xid of the asset.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        larsXid:
          description: The LARS xid of the asset.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        sourceAssetXid:
          description: The source xid for the asset from the authoring S3 bucket.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        sourceAssetId:
          description: The source id for the asset from the authoring S3 bucket.
          type: string
          x-go-type: '*string'
          x-go-type-skip-optional-pointer: true
        metadataProperties:
          $ref: '#/components/schemas/AssetMetadataProperties'
        parentId:
          description: The UUID of the parent container for the asset.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        title:
          description: This is the tile associated with the asset card.
          type: string
        description:
          description: This can be HTML associate with the asset.
          type: string
        resourceType:
          description: The source resource type of the asset.
          type: string
        type:
          description: The type of the asset determines what sort of component it is associated with.
          type: string
          enum:
            - launchable
            - text
            - image
            - embeddedInstructionalSupport
        thumbnailImage:
          $ref: '#/components/schemas/AssetThumbnailImageSourceUrl'
        tags:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/AssetTag'
              - $ref: '#/components/schemas/KnownAssetTag'
        behaviors:
          type: array
          items:
            $ref: '#/components/schemas/AssetBehaviorV2'
        filters:
          type: array
          items:
            $ref: '#/components/schemas/AssetFilter'
        standards:
          description: standard filters array for a given asset
          type: array
          items:
            $ref: '#/components/schemas/AssetFilterStandards'
        content:
          type: string
          nullable: true
        lang:
          description: The ISO language code of the asset title. This can be null if the language information is not available.
          type: string
          nullable: true
          enum:
            - en-US
            - en-GB
            - es-419
            - es-ES
            - fr
            - de
            - it
            - ko
            - pt-BR
            - vi
            - ar
            - ar-EG
            - ar-SA
            - ar-QA
            - zh-CN
            - zh-TW
        sequence:
          description: The sequence of an asset relative to its sibling assets (in the same row/sub-section)
          type: integer
        rowSequence:
          description: The sequence of the row/sub-section that the asset is contained in.
          type: integer
        isUserAdded:
          type: boolean
          description: This flag indicates whether the asset was added by a user (e.g. teacher) of Open Learning.
        parentXid:
          description: The xid of the parent container.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        location:
          description: Location of the asset relative to the parent container
          type: string
        isAdditionalResource:
          description: This flag indicates whether the asset location is in additional resources folder
          type: boolean
        hideInLesson:
          type: boolean
          description: this flag indicates whether the asset is hidden in a lesson
        hideInSearch:
          type: boolean
          description: this flag indicates whether the asset is hidden for search
        assetBankURL:
          description: adds an optional URL to the Asset Banking Service asset bank location for the asset
          type: string
        launchCategory:
          description: type of launchable asset
          type: string
          enum:
            - AUDIO
            - BASIC
            - IMAGE
            - INTERACTIVE
            - DOCREADER
            - OFFICEONLINE
            - VIDEO
            - WEBLINK
            - DOWNLOAD
            - REDIRECT
        absSignedUrl:
          $ref: '#/components/schemas/AbsSignedURL'
        assetRef:
          description: External reference identifier for the asset, provided by the source system.
          type: string
        trackData:
          type: array
          items:
            $ref: '#/components/schemas/TrackData'
        isLaunchable:
          description: |
            This flag indicates whether the asset is launchable. Some assets are launchable (e.g. Asset Banking Service assets, LARS assets, URL assets) and some assets are not (e.g. text assets).
          type: boolean
        launchType:
          description: |
            If the asset should be launchable, see isLaunchable, then this property indicates the type of launch for the asset, e.g. "Asset Banking Service asset", "LARS asset", "URL asset" to help the consumer determine how to handle the asset.
          type: string
          enum:
            - ABS
            - LARS
            - URL
      required:
        - id
        - title
        - description
        - resourceType
        - type
        - thumbnailImage
        - tags
        - behaviors
        - content
        - isUserAdded
        - isAdditionalResource
        - hideInLesson
        - hideInSearch
        - isLaunchable
    SearchFacetFilters:
      type: array
      items:
        $ref: '#/components/schemas/AssetFilter'
    SearchFacet:
      description: The criteria used by the user to filter the search results.
      type: object
      properties:
        languages:
          $ref: '#/components/schemas/SearchFacetFilters'
        instructionalTypes:
          $ref: '#/components/schemas/SearchFacetFilters'
        lexileLevels:
          $ref: '#/components/schemas/SearchFacetFilters'
        standards:
          $ref: '#/components/schemas/SearchFacetFilters'
        resourceTypes:
          $ref: '#/components/schemas/SearchFacetFilters'
        parentContentGroupsXIds:
          $ref: '#/components/schemas/SearchFacetFilters'
        teacherCompetency:
          $ref: '#/components/schemas/SearchFacetFilters'
        delivery:
          $ref: '#/components/schemas/SearchFacetFilters'
        professionalLearningTopic:
          $ref: '#/components/schemas/SearchFacetFilters'
        gradeMin:
          $ref: '#/components/schemas/SearchFacetFilters'
        gradeMax:
          $ref: '#/components/schemas/SearchFacetFilters'
        mediaType:
          $ref: '#/components/schemas/SearchFacetFilters'
      required:
        - languages
        - instructionalTypes
        - lexileLevels
        - standards
        - resourceTypes
        - parentContentGroupsXIds
    Pagination:
      type: object
      description: Pagination values for the search results
      properties:
        total:
          description: The total number of assets associated with the current search.
          type: integer
        firstAssetNumber:
          description: The the number of the first asset in the results returned relative to the total.
          type: integer
        numberOfResults:
          description: The number of results returned relative to the total.
          type: integer
        nextPageStart:
          description: The asset start index of the next pagination page based on the number of results. This is a zero based index.
          type: integer
      required:
        - total
        - firstAssetNumber
        - numberOfResults
        - nextPageStart
    SearchResponseV2:
      type: object
      description: Search Response
      properties:
        assets:
          nullable: false
          type: array
          description: Search result assets
          items:
            $ref: '#/components/schemas/AssetV2'
        facets:
          $ref: '#/components/schemas/SearchFacet'
        pagination:
          $ref: '#/components/schemas/Pagination'
      required:
        - assets
        - facets
        - pagination
    TeacherSupportStandard:
      type: object
      properties:
        description:
          type: string
        code:
          type: string
      required:
        - code
        - description
    TeacherSupportSection:
      type: object
      properties:
        type:
          type: string
          enum:
            - accessibility
            - bellringer
            - data
            - dialogue
            - differentiation
            - downloadables
            - games
            - geographic connection
            - home connections
            - ideas
            - links
            - listen
            - media
            - misconceptions
            - objectives
            - overview
            - pacing
            - practice
            - presentation
            - professional development
            - questions
            - quotes
            - standards
            - stop/go
            - supplemental
            - text
            - vocabulary
            - writing
        title:
          type: string
        content:
          type: string
        standards:
          type: array
          items:
            $ref: '#/components/schemas/TeacherSupportStandard'
      required:
        - type
        - title
        - standards
        - content
    TeacherSupportResponse:
      type: object
      properties:
        sections:
          nullable: true
          type: array
          description: The teacher support sections for the given lesson.
          items:
            $ref: '#/components/schemas/TeacherSupportSection'
      required:
        - sections
    LessonOverviewRequest:
      type: object
      properties:
        sectionXID:
          description: This represents the id of a course section.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
          x-oapi-codegen-extra-tags:
            telemetryRequestId: sectionXID
        orgXID:
          description: This represents the id of the organization the course section is in.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
          x-oapi-codegen-extra-tags:
            telemetryRequestId: orgXID
        courseID:
          description: This represents the id of the whole course.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
          x-oapi-codegen-extra-tags:
            telemetryRequestId: courseID
        versionID:
          description: This is also known as publish id.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
          x-oapi-codegen-extra-tags:
            telemetryRequestId: versionID
        lessonPlanID:
          description: This could also be usercourse id if lesson plan id is not yet available.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
          x-oapi-codegen-extra-tags:
            telemetryRequestId: lessonPlanID
        lessonID:
          description: This could also be folder id if lesson id is not yet available.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
          x-oapi-codegen-extra-tags:
            telemetryRequestId: lessonID
      required:
        - orgXID
        - sectionXID
        - courseID
        - versionID
        - lessonPlanID
        - lessonID
      example:
        orgXID: urn:com.mheducation.openlearning:enterprise.identity.organization:qastg.global:organization:45560beb-31ff-4b1c-9ee6-ec7571363f0e
        sectionXID: urn:com.mheducation.openlearning:enterprise.roster:qastg.us-east-1:section:c12d4770-da12-11ed-b6bd-0b74aaab924a
        courseID: c4e53c92-b25b-4cfc-b1bd-2407e3d2fbec
        versionID: 3f892c83-2478-4de5-bb76-a9c9978de9cd
        lessonPlanID: e29390c0-46d9-4e4b-9f77-5a0a7000e572
        lessonID: f42a46f0-8ac6-4d26-a35e-c71579edc53b
    LessonCalendarBehaviorData:
      description: The calendar behavior data for a lesson.
      type: object
      properties:
        canSchedule:
          description: This property determines if a lesson has the ability to be scheduled on the calendar.
          type: boolean
        hasCalendarEvent:
          description: Indicates whether a lesson is currently scheduled on the calendar.
          type: boolean
        startDate:
          description: The start date of a lesson's calendar event. This field is required if 'hasCalendarEvent' is true.
          type: string
        endDate:
          description: The end date of a lesson's calendar event. This field is required if 'hasCalendarEvent' is true.
          type: string
      required:
        - canSchedule
        - hasCalendarEvent
    LessonPedagogicalBehaviorData:
      type: object
      properties:
        engagementMode:
          type: array
          items:
            $ref: '#/components/schemas/EngagementMode'
        lexileLevels:
          type: array
          items:
            $ref: '#/components/schemas/LexileLevels'
        hasPrintableAssets:
          type: boolean
          description: Indicates if the lesson has any printable assets available.
      required:
        - engagementMode
        - lexileLevels
        - hasPrintableAssets
    LessonBehavior:
      description: A behavior for a lesson. This is used to provide the end user lesson behaviors for the current lesson.
      type: object
      properties:
        behaviorType:
          type: string
          enum:
            - calendar
            - pedagogical
        behaviorData:
          oneOf:
            - $ref: '#/components/schemas/LessonCalendarBehaviorData'
            - $ref: '#/components/schemas/LessonPedagogicalBehaviorData'
    LessonTag:
      description: This represents the tag on a lesson.
      type: object
      properties:
        key:
          type: string
    TeacherSupportSectionV2:
      type: object
      properties:
        type:
          type: string
          enum:
            - accessibility
            - bellringer
            - data
            - dialogue
            - differentiation
            - downloadables
            - games
            - geographic connection
            - home connections
            - ideas
            - links
            - listen
            - media
            - misconceptions
            - objectives
            - overview
            - pacing
            - practice
            - presentation
            - professional development
            - questions
            - quotes
            - standards
            - stop/go
            - supplemental
            - text
            - vocabulary
            - writing
        title:
          type: string
        content:
          type: string
        standards:
          type: array
          items:
            $ref: '#/components/schemas/TeacherSupportStandard'
      required:
        - type
        - title
        - standards
        - content
    PlanningInformation:
      type: object
      description: This represents all the planning information in the Planning Information panel.
      properties:
        ebookTeacher:
          description: Teacher Ebook Assets.
          type: array
          items:
            $ref: '#/components/schemas/AssetV2'
        ebookStudent:
          description: Student Ebook Assets.
          type: array
          items:
            $ref: '#/components/schemas/AssetV2'
        sections:
          type: array
          description: The teacher support sections for the given lesson.
          items:
            $ref: '#/components/schemas/TeacherSupportSectionV2'
      required:
        - ebookTeacher
        - ebookStudent
        - sections
      example:
        ebookStudent: []
        ebookTeacher: []
        sections:
          - content: \u003cp\u003e1 Day\u003c/p\u003e
            standards: []
            title: Pacing
            type: pacing
          - content: "\\u003cp\\u003eSTUDENTS WILL KNOW\\u003c/p\\u003e\\n\\n\\u003cul\\u003e\\n\\t\\u003cli\\u003e\\u003cem\\u003ethat the first civilizations were in Mesopotamia and Egypt\\u003c/em\\u003e\\u003c/li\\u003e\\n\\t\\u003cli\\u003e\\u003cem\\u003ethe Israelites were monotheistic and Jewish beliefs are markers of Western traditions\\u003c/em\\u003e\\u003c/li\\u003e\\n\\t\\u003cli\\u003e\\u003cem\\u003etwo of the world’s major religions Hinduism and Buddhism began in India\\u003c/em\\u003e\\u003c/li\\u003e\\n\\t\\u003cli\\u003e\\u003cem\\u003ethe Shang dynasty in China was the last of the great civilizations to emerge\\u003c/em\\u003e\\u003c/li\\u003e\\n\\u003c/ul\\u003e\\n\\n\\u003cp\\u003eSTUDENTS WILL BE ABLE TO\\u003c/p\\u003e\\n\\n\\u003cul\\u003e\\n\\t\\u003cli\\u003e\\u003cem\\u003e\\u003cstrong\\u003eidentify\_\\u003c/strong\\u003ethe contributions\\u003cstrong\\u003e\_\\u003c/strong\\u003eof the peoples of Mesopotamia and Egypt\\u003c/em\\u003e\\u003c/li\\u003e\\n\\t\\u003cli\\u003e\\u003cem\\u003e\\u003cstrong\\u003eexplain\_\\u003c/strong\\u003ethe aspects of Jewish beliefs and their influence in the Western world\\u003c/em\\u003e\\u003c/li\\u003e\\n\\t\\u003cli\\u003e\\u003cem\\u003e\\u003cstrong\\u003ecompare and contrast\\u003c/strong\\u003e\_Indian civilizations as well as Hinduism and Buddhism\\u003c/em\\u003e\\u003c/li\\u003e\\n\\t\\u003cli\\u003e\\u003cem\\u003e\\u003cstrong\\u003edescribe\\u003c/strong\\u003e\_the dynasties of China and explain the reasons for their rise and decline\\u003c/em\\u003e\\u003c/li\\u003e\\n\\u003c/ul\\u003e"
            standards: []
            title: Overview
            type: objectives
          - content: \u003cp\u003eWELCOME TO THE JUNGLE\
            standards:
              - code: 4.H.HT
                description: Historical Thinking and Skills
            title: TEKS Refresh
            type: standards
          - content: "\\u003cp\\u003emodern\\u003c/p\\u003e\\n\\n\\u003cp\\u003etimes\\u003c/p\\u003e\\n\\n\\u003cp\\u003ehistory\\u003c/p\\u003e\\n\\n\\u003cp\\u003eworld\\u003c/p\\u003e\\n\\n\\u003cp\\u003eOpen\_\\u003c/p\\u003e\\n\\n\\u003cp\\u003eLearning\\u003c/p\\u003e"
            standards: []
            title: Keywords
            type: vocabulary
    BladePedagogicalBehaviorData:
      type: object
      properties:
        lexileLevels:
          type: array
          items:
            $ref: '#/components/schemas/LexileLevels'
      required:
        - lexileLevels
    BladeBehavior:
      description: A behavior for a blade. This is used to provide the end user blade behaviors for the current blade.
      type: object
      properties:
        behaviorType:
          type: string
          enum:
            - pedagogical
        behaviorData:
          oneOf:
            - $ref: '#/components/schemas/BladePedagogicalBehaviorData'
    LayoutRow:
      type: object
      description: Row configuration defining which assets go in what order and column format
      properties:
        columnWeights:
          type: array
          items:
            type: number
            x-go-type: int
        content:
          type: array
          items:
            type: string
            format: uuid
            x-go-type: uuid.UUID
            x-go-type-import:
              name: uuid
              path: github.com/google/uuid
        sequence:
          type: number
          x-go-type: int
      required:
        - columnWeights
        - content
        - sequence
    BladeV3:
      type: object
      description: Lesson Blade
      properties:
        id:
          description: The uuid of the blade.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        behaviors:
          type: array
          items:
            $ref: '#/components/schemas/BladeBehavior'
        backgroundImage:
          type: string
        title:
          type: string
        embeddedInstructionalSupport:
          deprecated: true
          description: Html fragments intended to be shown inline with other tiles. This also supports icons in html.
          type: array
          items:
            type: string
        assets:
          type: array
          items:
            $ref: '#/components/schemas/AssetV2'
        rowConfig:
          type: array
          items:
            $ref: '#/components/schemas/LayoutRow'
      required:
        - backgroundImage
        - title
        - assets
        - rowConfig
    AssetFilterParentV2:
      description: This represents an asset filter parent that contains the properties of the possible asset filters
      type: object
      properties:
        lessonViewFilters:
          type: array
          items:
            $ref: '#/components/schemas/AssetFilter'
        resourceSettings:
          type: array
          items:
            $ref: '#/components/schemas/AssetFilter'
        instructionalType:
          type: array
          items:
            $ref: '#/components/schemas/AssetFilter'
        resourceType:
          type: array
          items:
            $ref: '#/components/schemas/AssetFilter'
        languages:
          type: array
          items:
            $ref: '#/components/schemas/AssetFilter'
        standards:
          type: array
          items:
            $ref: '#/components/schemas/AssetFilterStandards'
      required:
        - lessonViewFilters
        - resourceSettings
        - instructionalType
        - resourceType
        - languages
        - standards
    TeacherChapterInfo:
      type: object
      description: Object containing Information for the Chapter Info Tabs
      properties:
        isDisplayed:
          type: boolean
        tabContent:
          description: Individual Tab Content for Teacher Chapter Info, benchmark tabTypes have no tab content and are null
          type: string
        tabType:
          type: string
          enum:
            - metadata-benchmark
            - metadata-desc
            - metadata-keyword
            - text
        title:
          type: string
      required:
        - isDisplayed
        - tabContent
        - tabType
        - title
      title: Teacher Chapter Info Tab
    ContainerFolderSettings:
      type: object
      description: Folder settings applied at the container level
      properties:
        isVisibleToStudents:
          type: boolean
        enableMhPlus:
          type: boolean
        enableObservationalChecklist:
          type: boolean
        layout:
          type: string
        hideFromCourse:
          type: boolean
        hideFromSearch:
          type: boolean
      required:
        - isVisibleToStudents
        - enableMhPlus
        - enableObservationalChecklist
        - layout
    StructureFolderSettings:
      type: object
      description: Folder settings applied at the structure level
      properties:
        isVisibleToStudents:
          type: boolean
        studentTitle:
          type: string
          nullable: true
          description: Overrides the default title when displayed to students
        layout:
          type: string
        enableObservationalChecklist:
          type: boolean
          description: Whether observational checklist is enabled for the structure folder
        hideFromCourse:
          type: boolean
          description: Whether the structure folder is hidden from the course
        hideFromSearch:
          type: boolean
          description: Whether the structure folder is hidden from search
      required:
        - isVisibleToStudents
        - layout
    LessonOverviewResponseV2:
      type: object
      description: Lesson Overview and Layout Structure
      properties:
        pageTitle:
          type: string
        title:
          type: string
        label:
          type: string
        backgroundImage:
          type: string
        behaviors:
          type: array
          items:
            $ref: '#/components/schemas/LessonBehavior'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/LessonTag'
        planningInformation:
          $ref: '#/components/schemas/PlanningInformation'
        blades:
          type: array
          items:
            $ref: '#/components/schemas/BladeV3'
        assetFilters:
          $ref: '#/components/schemas/AssetFilterParentV2'
        teacherChapterInfo:
          type: array
          items:
            $ref: '#/components/schemas/TeacherChapterInfo'
        userAddedAssets:
          type: array
          items:
            $ref: '#/components/schemas/AssetV2'
        bladelessAssets:
          type: array
          items:
            $ref: '#/components/schemas/AssetV2'
        containerFolderSettings:
          $ref: '#/components/schemas/ContainerFolderSettings'
        structureFolderSettings:
          $ref: '#/components/schemas/StructureFolderSettings'
      required:
        - pageTitle
        - title
        - backgroundImage
        - planningInformation
        - blades
        - assetFilters
        - teacherChapterInfo
        - behaviors
        - tags
        - userAddedAssets
        - bladelessAssets
    ParentLessonOverviewRequest:
      type: object
      properties:
        orgXID:
          description: This represents the id of the organization (district) the course is in.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
          x-oapi-codegen-extra-tags:
            telemetryRequestId: orgXID
        courseID:
          description: This represents the id of the whole course.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
          x-oapi-codegen-extra-tags:
            telemetryRequestId: courseID
        folderID:
          description: The folder UUID from the Courseware (eg Unit 1 Lesson 1 folder).
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
          x-oapi-codegen-extra-tags:
            telemetryRequestId: folderID
      required:
        - orgXID
        - courseID
        - folderID
      example:
        orgXID: urn:com.mheducation.openlearning:enterprise.identity.organization:qastg.global:organization:45560beb-31ff-4b1c-9ee6-ec7571363f0e
        courseID: c4e53c92-b25b-4cfc-b1bd-2407e3d2fbec
        folderID: f42a46f0-8ac6-4d26-a35e-c71579edc53b
    ParentLessonOverviewResponse:
      type: object
      description: Parent Lesson Overview - contains only student-facing courseware folder data without teacher/class-specific content.
      properties:
        pageTitle:
          type: string
        title:
          type: string
        label:
          type: string
        backgroundImage:
          type: string
        behaviors:
          type: array
          items:
            $ref: '#/components/schemas/LessonBehavior'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/LessonTag'
        blades:
          type: array
          items:
            $ref: '#/components/schemas/BladeV3'
        bladelessAssets:
          type: array
          items:
            $ref: '#/components/schemas/AssetV2'
        containerFolderSettings:
          $ref: '#/components/schemas/ContainerFolderSettings'
        structureFolderSettings:
          $ref: '#/components/schemas/StructureFolderSettings'
      required:
        - pageTitle
        - title
        - backgroundImage
        - blades
        - behaviors
        - tags
        - bladelessAssets
    Blade:
      type: object
      description: Lesson Blades
      properties:
        id:
          description: The uuid of the blade.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        backgroundImage:
          type: string
        cdnImageUrl:
          type: string
        title:
          type: string
        embeddedTeacherSupport:
          type: boolean
        assets:
          type: array
          items:
            type: string
            format: uuid
            x-go-type: uuid.UUID
            x-go-type-import:
              name: uuid
              path: github.com/google/uuid
      required:
        - backgroundImage
        - cdnImageUrl
        - title
        - rows
    Layout:
      type: object
      description: Lesson Layout structure
      properties:
        backgroundImage:
          type: string
        cdnImageUrl:
          type: string
        blades:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/Blade'
      required:
        - backgroundImage
        - cdnImageUrl
        - blades
    ResourceLibraryMetadata:
      type: object
      description: Resource library metadata for the container
      nullable: true
      properties:
        gradeMin:
          type: string
        gradeMax:
          type: string
        lexile:
          type: string
        description:
          type: string
    Folder:
      type: object
      description: Folder structure
      properties:
        id:
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        parentId:
          description: Parent of the entity. The value can be null if the entity is a courseware.
          nullable: true
          type: string
          format: urn
          x-go-type: urn.URN
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        isNavigable:
          type: boolean
          description: This flag indicates whether the folder should be navigable when displayed in the TOC or the CNP.
        isStudentNavigable:
          type: boolean
          description: Indicates whether this folder contains content navigable by students. Present for all container types but primarily meaningful for containerType "node". Derived from hasStudentContent. Defaults to true when no student content is present.
        containerType:
          type: string
          enum:
            - course
            - node
            - section
            - subsection
            - addOn
            - recommendation
            - embeddedContent
        label:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        titleHtml:
          type: string
          nullable: true
        publishId:
          description: The UUID of the publish. The value will be present only if the entity is a courseware
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        sequence:
          description: Sequence of the TOC. It's a zero base sequence
          type: integer
        layout:
          $ref: '#/components/schemas/Layout'
        descriptionMetadata:
          description: Description metadata for the container
          type: array
          items:
            type: string
          nullable: true
        structureFolderSettings:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/StructureFolderSettings'
        resourceLibraryMetadata:
          description: Resource library metadata for the container
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ResourceLibraryMetadata'
        children:
          x-go-type: '[]*Folder'
          type: array
          items:
            $ref: '#/components/schemas/Folder'
      required:
        - containerType
        - id
        - label
        - title
        - titleHtml
        - sequence
        - isNavigable
        - isStudentNavigable
      example:
        id: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:fc08c127-188b-448f-be4b-d9e64905b2aa.a356b90a-3078-40f4-af25-6bef63142c07
        parentId: ''
        containerType: course
        label: Course
        titleHtml: "<h1>K5\_Entitle Test Course 4 6 20</h1>\n"
        title: K5 Entitle Test Course 4 6 20
        publishId: 3cf7d9fe-0133-44b0-85e5-fc00a0aa4c90
        sequence: 0
        isNavigable: true
        isStudentNavigable: true
        children:
          - id: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:280764a2-d780-48c1-816d-d83709e52b3b.a356b90a-3078-40f4-af25-6bef63142c07
            parentId: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:fc08c127-188b-448f-be4b-d9e64905b2aa.a356b90a-3078-40f4-af25-6bef63142c07
            containerType: node
            label: Getting Started
            titleHtml: <h1 style="text-align:center;"><span style="color:#ffffff;">Continuity and Change</span></h1>
            title: Continuity and Change
            sequence: 0
            isNavigable: false
            isStudentNavigable: false
            children: []
          - id: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:b82ba25e-f8fa-40d7-b442-1085458f0f3f.a356b90a-3078-40f4-af25-6bef63142c07
            parentId: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:fc08c127-188b-448f-be4b-d9e64905b2aa.a356b90a-3078-40f4-af25-6bef63142c07
            containerType: node
            label: Chapter 1
            titleHtml: <h1><strong><span style="color:#ffffff;">Communities in California</span></strong></h1>
            title: Communities in California
            sequence: 1
            isNavigable: true
            isStudentNavigable: true
            children:
              - id: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:432e4643-7d68-420f-843e-16a3565dad3f.a356b90a-3078-40f4-af25-6bef63142c07
                parentId: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:b82ba25e-f8fa-40d7-b442-1085458f0f3f.a356b90a-3078-40f4-af25-6bef63142c07
                containerType: node
                label: Lesson 1
                titleHtml: <h1 style="text-align:center;"><strong><font color="#ffffff">Where Is My Community?</font></strong></h1>
                title: Where Is My Community?
                sequence: 0
                isNavigable: false
                isStudentNavigable: false
                children: []
    CourseResponse:
      allOf:
        - $ref: '#/components/schemas/Folder'
    CourseDistributionBankUrlResponse:
      type: object
      properties:
        courseDistributionBankAuthUrl:
          type: string
      required:
        - courseDistributionBankAuthUrl
    LayoutResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/Layout'
    NodeType:
      description: The nodeType from the Benchmark.
      type: string
      enum:
        - authority
        - benchmark
        - course
        - document
        - subject
      x-enum-varnames:
        - Authority
        - Benchmark
        - Course
        - Document
        - Subject
    StandardChild:
      type: object
      description: Child standard reference (subset of Standard, without recursive children)
      properties:
        count:
          description: The number of assets in the course that has this standard "tagged" to it.
          type: integer
        id:
          description: The id of the Standards Hierarchy object as a string.
          type: string
        key:
          description: The name of the Standards Hierarchy object as a string.
          type: string
        nodeType:
          $ref: '#/components/schemas/NodeType'
      required:
        - count
        - id
        - key
        - nodeType
    Standard:
      type: object
      description: This object represents one level of the standard hierarchy for a course.
      properties:
        count:
          description: The number of assets in the course that has this standard "tagged" to it.
          type: integer
        id:
          description: The id of the Standards Hierarchy object as a string.
          type: string
        key:
          description: The name of the Standards Hierarchy object as a string.
          type: string
        nodeType:
          $ref: '#/components/schemas/NodeType'
        children:
          description: An array of Standards Hierarchy objects that are the children of this Standards Hierarchy object.
          type: array
          items:
            $ref: '#/components/schemas/StandardChild'
      required:
        - count
        - id
        - key
        - nodeType
        - children
    StandardsResponse:
      type: object
      description: Standards Hierarchy Response
      properties:
        standardsHierarchy:
          nullable: false
          type: array
          description: Standards Hierarchy
          items:
            $ref: '#/components/schemas/Standard'
    BulkAssetsRequest:
      type: object
      properties:
        assetUuids:
          minItems: 1
          items:
            type: string
            format: uuid
            description: This is the asset uuid from the frontend
            x-go-type: uuid.UUID
            x-go-type-import:
              name: uuid
              path: github.com/google/uuid
          x-go-type: '[]uuid.UUID'
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
      required:
        - assetUuids
      example:
        assetUuids:
          - 117ce240-5178-43cb-966e-4071336e058f
          - 1ca0f217-2a11-4b52-951d-6acccad49612
    BulkAssetsResponse:
      type: array
      description: Bulk Asset Response
      items:
        $ref: '#/components/schemas/AssetV2'
    LessonPresentationItem:
      type: object
      properties:
        asset_uuid:
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
          description: This object has the asset reference ID in asset_uuid (not the ABS asset reference ID)
        sequence:
          type: number
          x-go-type: int
          description: The sequence number is the sequence order relative to its siblings
        is_visible:
          type: boolean
          description: The is_visible property shows if the asset must be present in the presentation or not
      required:
        - asset_uuid
        - sequence
        - is_visible
    LessonPresentationRequest:
      type: object
      description: The lesson presentation order as set by the user
      properties:
        presentation:
          type: array
          items:
            $ref: '#/components/schemas/LessonPresentationItem'
      required:
        - presentation
      example:
        presentation:
          - asset_uuid: 550e8400-e29b-41d4-a716-446655440000
            sequence: 1
            is_visible: true
          - asset_uuid: 550e8400-e29b-41d4-a716-446655440001
            sequence: 2
            is_visible: false
          - asset_uuid: 550e8400-e29b-41d4-a716-446655440002
            sequence: 3
            is_visible: true
    LessonPresentationResponse:
      type: object
      properties:
        presentation:
          type: array
          items:
            $ref: '#/components/schemas/LessonPresentationItem'
        section_xid:
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        course_uuid:
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        publish_uuid:
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        lesson_uuid:
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
          description: This could also be folder id if lesson id is not yet available.
      required:
        - presentation
        - section_xid
        - course_uuid
        - publish_uuid
        - lesson_uuid
    Assignment:
      type: object
      properties:
        id:
          description: The uuid of the asset.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        xid:
          description: The xid of the asset.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        title:
          description: The asset title.
          type: string
        start:
          description: Indicates the start date of the assignment.
          type: string
        due:
          description: Indicates the due date of the assignment.
          type: string
        points:
          description: Points for the assignment.
          type: string
        gradebookCategory:
          description: Gradebook category.
          type: integer
        typeCode:
          description: A string representing the assignment type.
          type: string
        instructions:
          description: The instructions of the assignment for instruction type assignments.
          type: string
        affectsGrade:
          description: Indicates the assignment grade flag.
          type: boolean
        showStudent:
          description: Indicates whether or not the asset should be visible to students.
          type: boolean
        learnerXids:
          description: List of student xids.
          minItems: 1
          items:
            type: string
            format: urn
            x-go-type: urn.URN
            x-go-type-import:
              name: urn
              path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
          x-go-type: '[]urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        assignToAllStudents:
          description: Indicates whether or not to create the assignment for all students in the class.
          type: boolean
        lateSubmissionExtension:
          description: Time interval for which the students are allowed to submit assignments after the due date has passed.
          type: integer
      required:
        - id
        - xid
        - title
        - due
        - points
        - gradebookCategory
    AssignAssetRequest:
      type: object
      description: Assign Asset Request
      properties:
        assignments:
          type: array
          items:
            $ref: '#/components/schemas/Assignment'
      required:
        - assignments
    AssignAssetResponse:
      type: array
      description: Assign Asset Response
      items:
        $ref: '#/components/schemas/AssetV2'
    AssetSignedUrlBatchRequest:
      type: array
      description: A list of asset XIDs of type "asset" and service "content.assets.deliver".
      items:
        type: string
        format: urn
        x-go-type: '*urn.URN'
        x-go-type-import:
          name: urn
          path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
    ScheduleLessonRequest:
      type: object
      properties:
        end:
          description: This represents the end-date of the scheduled event for the lesson ('YYYY-MM-DD').
          type: string
          format: date
          x-go-type: runtimeTypes.Date
          x-go-type-import:
            name: runtimeTypes
            path: github.com/oapi-codegen/runtime/types
        start:
          description: This represents the start-date of the scheduled event for the lesson ('YYYY-MM-DD').
          type: string
          format: date
          x-go-type: runtimeTypes.Date
          x-go-type-import:
            name: runtimeTypes
            path: github.com/oapi-codegen/runtime/types
        title:
          description: This is the title of the lesson / folder.
          type: string
        url:
          description: This is the url where the lesson lives.
          type: string
      required:
        - end
        - start
        - title
        - url
      example:
        end: '2022-01-21'
        start: '2024-04-24'
        title: 'Chapter 17: Contemporary Global Issues (1989-Present)'
        url: /teacher/urn:com.mheducation.openlearning:enterprise.identity.organization:qastg.global:organization:45560beb-31ff-4b1c-9ee6-ec7571363f0e/urn:com.mheducation.openlearning:enterprise.roster:qastg.us-east-1:section:c12d4770-da12-11ed-b6bd-0b74aaab924a/course/folders:legacyCD/urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:3d6b201b-f03d-41a0-92bf-a46f487096fb.8d89b1f7-098a-43cf-bf87-c19ab9be5b1e/overview
    ScheduleLessonResponse:
      type: object
      description: Updated lesson overview attributes after a lesson is scheduled
      properties:
        behaviors:
          type: array
          items:
            $ref: '#/components/schemas/LessonBehavior'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/LessonTag'
      required:
        - behaviors
        - tags
    LessonPlanStructureVariant:
      type: object
      properties:
        id:
          description: The UUID of the structure variant.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        title:
          type: string
          description: The title of the structure variant.
      required:
        - id
        - title
    AllDistributionBankUrlsResponse:
      type: object
      properties:
        courseDistributionBankAuthUrl:
          type: string
        lessonPlanDistributionBankAuthUrl:
          type: string
      required:
        - courseDistributionBankAuthUrl
        - lessonPlanDistributionBankAuthUrl
    Calculator:
      type: object
      description: Calculator object from product api
      properties:
        default:
          type: boolean
        name:
          type: string
        type:
          type: string
      required:
        - default
        - name
        - type
    PublishHistory:
      type: object
      description: Newest available published course history.
      properties:
        releaseNotes:
          description: Release notes for a published courseware
          type: string
          nullable: true
        publishedAt:
          format: date-time
          type: string
        releaseType:
          description: Publish type for a published courseware
          enum:
            - optional
            - emergency
            - required
          type: string
        revision:
          description: User-facing display version of the published courseware
          type: integer
          nullable: true
      required:
        - releaseNotes
        - publishedAt
        - releaseType
        - revision
    PublishConfigurationToolkit:
      type: object
      description: Toolkit asset for course publish configuration.
      properties:
        assetId:
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
          description: Unique identifier for the asset
        assetType:
          type: string
          description: Type of asset
          enum:
            - clo
            - ebook
            - echapter
            - chapter
        larsXid:
          type: string
          format: urn
          description: LARS cross-reference identifier
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        title:
          type: string
          description: Display title of the asset
    PublishConfiguration:
      type: object
      description: Course Publish configuration.
      properties:
        isK5:
          description: Indicates if the courseware is for K-5 education level
          type: boolean
          nullable: true
        lexileRange:
          description: Reading level range for the courseware
          type: string
          enum:
            - 1386L_2000L
            - 1185L_1385L
            - 1080L_1335L
            - 1050L_1260L
            - 1010L_1185L
            - 970L_1120L
            - 925L_1070L
            - 830L_1010L
            - 740L_940L
            - 520L_820L
            - 420L_650L
            - 190L_530L
            - U190L
          nullable: true
        recommendations:
          description: Recommendation types supported by the course, recommendation widget, and asset
          type: array
          items:
            type: string
            enum:
              - nwea
              - remedy
          nullable: true
        contentLanguage:
          description: Language code for the courseware content
          type: string
          enum:
            - en-US
            - es-MX
          nullable: true
        toolkits:
          description: Collection of toolkit assets for the course
          type: array
          items:
            $ref: '#/components/schemas/PublishConfigurationToolkit'
          example:
            - assetId: f16bd42b-586f-4753-a536-5cd798713aa9
              assetType: chapter
              larsXid: urn:com.mheducation.openlearning:integration.internal.lars:qastg.us-east-1:lars_asset:f16bd42b-586f-4753-a536-5cd798713aa9
              title: Ethics opener SH
      required:
        - isK5
        - lexileRange
        - recommendations
        - contentLanguage
        - toolkits
    LessonPlanResponse:
      type: object
      properties:
        lessonPlanId:
          description: The lesson plan uuid.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        lessonPlanXId:
          description: The lesson plan xid.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        lessonPlanTitle:
          type: string
        sectionXId:
          description: The section xid from the backbone event.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        userCourseId:
          description: The uuid that associates the sectionxid with a course.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        courseId:
          description: The uuid for the course.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        courseXId:
          description: The external identifier for the course from the S3 courseware publish artifact.
          type: string
        courseTitle:
          type: string
        courseVersion:
          description: The uuid for the course version (i.e. publish id).
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        sourceDistributionBankId:
          description: |
            The distribution bank id associated with the course version from assembly. This is a temporary property that will be used until we migrate user added course data to LEA from assembly. See distributionBankId from the long term solution.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        distributionBankId:
          description: This is the ABS dist bank that is generated once for a lesson plan.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        structureVariantId:
          description: The UUID of the courseware structure variant selected for the lesson plan.
          type: string
          format: uuid
          nullable: true
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        structureVariant:
          $ref: '#/components/schemas/LessonPlanStructureVariant'
        studentThemeUrl:
          description: This is the CDN URL for theme park CSS, or a blank string if none exists.
          type: string
        authBankUrls:
          $ref: '#/components/schemas/AllDistributionBankUrlsResponse'
        calculators:
          description: Calculators from product api
          type: array
          items:
            $ref: '#/components/schemas/Calculator'
        history:
          $ref: '#/components/schemas/PublishHistory'
        configuration:
          $ref: '#/components/schemas/PublishConfiguration'
      required:
        - lessonPlanId
        - lessonPlanXId
        - lessonPlanTitle
        - sectionXId
        - courseId
        - userCourseId
        - courseTitle
        - courseVersion
        - sourceDistributionBankId
        - distributionBankId
        - studentThemeUrl
        - authBankUrls
        - calculators
        - history
        - configuration
    StructureVariantImage:
      type: object
      description: Image metadata for the structure variant.
      properties:
        assetId:
          type: string
          description: The identifier of the image asset.
        canonicalUrl:
          type: string
          format: uri
          description: The canonical URL of the image asset.
    StructureVariant:
      type: object
      properties:
        id:
          description: The uuid of the structure variant.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        title:
          type: string
          description: The title of the structure variant.
        isActive:
          type: boolean
          description: Indicates whether the structure variant is active. If active, variant is selectable by teachers in OL Shell.
        isSelected:
          type: boolean
          description: Indicates whether the structure variant is currently selected for the lesson plan.
        description:
          type: string
          description: A brief description for each variant structure.
        variantImage:
          $ref: '#/components/schemas/StructureVariantImage'
      required:
        - id
        - title
        - isActive
        - isSelected
    StructureVariantResponse:
      type: array
      items:
        $ref: '#/components/schemas/StructureVariant'
    StructureVariantRequest:
      type: object
      properties:
        id:
          description: The UUID of the structure variant Learning Experience DB record.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
      required:
        - id
    LessonSyncResponse:
      type: object
      nullable: false
      description: Lesson Sync Response
      properties:
        success:
          type: boolean
          description: Success indicator. A false indicates a downstream error not surfaced to the user.
      required:
        - success
    AssetVisibilityRequest:
      type: object
      properties:
        showAssetToStudents:
          description: Indicates whether or not the asset should be visible to students.
          type: boolean
        showAssetInPresentation:
          description: |
            **DEPRECATED**: This field is deprecated and will be removed after MOON-6259: Presentation Player integrated with LEA/BFF Construction is complete.
          type: boolean
          deprecated: true
      example:
        showAssetToStudents: true
        showAssetInPresentation: false
    AssetVisibilityResponse:
      type: object
      description: The updated asset behaviors, filters and tags
      properties:
        assetId:
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        tags:
          type: array
          items:
            $ref: '#/components/schemas/AssetTag'
        behaviors:
          type: array
          items:
            $ref: '#/components/schemas/AssetBehaviorV2'
        filters:
          type: array
          items:
            $ref: '#/components/schemas/AssetFilter'
      required:
        - tags
        - behaviors
        - filters
        - assetId
    BentoValueBase:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
        secondaryId:
          type: string
        name:
          type: string
    BentoAssetMetadata:
      type: object
      additionalProperties: false
      properties:
        key:
          type: string
        name:
          type: string
        text:
          type: string
        value:
          oneOf:
            - type: string
            - type: integer
        desc:
          type: string
        code:
          type: string
        associationTypeId:
          type: integer
        authority:
          $ref: '#/components/schemas/BentoValueBase'
        document:
          $ref: '#/components/schemas/BentoValueBase'
        subject_doc:
          $ref: '#/components/schemas/BentoValueBase'
        course:
          $ref: '#/components/schemas/BentoValueBase'
        clarifications:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              text:
                type: string
    AssetMetadataBento:
      type: array
      items:
        $ref: '#/components/schemas/BentoAssetMetadata'
    CdsSpecific:
      type: object
      description: This object represents the CDS Specific
      properties:
        outcome_type:
          type: string
        student_submission:
          type: boolean
    AssetMetadata:
      type: object
      properties:
        bento:
          $ref: '#/components/schemas/AssetMetadataBento'
        cdsSpecific:
          $ref: '#/components/schemas/CdsSpecific'
    FullAssetRecord:
      type: object
      description: |-
        This object represents an asset owned by another service, or a web link, created
        by the user.
      properties:
        id:
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        xid:
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        larsXid:
          description: The LARS xid of the asset.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        sourceAssetXid:
          description: The source xid for the asset from the authoring S3 bucket.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        sourceAssetId:
          description: The source id for the asset from the authoring S3 bucket.
          type: string
          x-go-type: '*string'
          x-go-type-skip-optional-pointer: true
        title:
          type: string
          description: Plain text version of the title of the asset reference
        assetType:
          type: string
          enum:
            - a2
            - assessment
            - clo
            - lti
            - manual
            - smartbook
            - smartbook_new_avalon
            - student_work
            - ceres_ungraded
        parentId:
          type: string
          format: uuid
          description: Identifier for the parent container
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        metadata:
          $ref: '#/components/schemas/AssetMetadata'
        embeddedContent:
          type: boolean
        sequence:
          type: integer
        parentXid:
          description: The xid of the parent container.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        location:
          description: Location of the asset relative to the parent container
          type: string
        isUserAddedContent:
          description: This flag indicates whether the asset was added by a user (e.g. teacher) of Open Learning.
          type: boolean
        instructorNotes:
          description: Html text with notes directed at instructors using the course
          type: string
        visibleToStudents:
          description: True if asset is visible to students
          type: boolean
        educatorOnly:
          description: True if asset is educator only
          type: boolean
        isLaunchable:
          description: |
            This flag indicates whether the asset is launchable. Some assets are launchable (e.g. Asset Banking Service assets, LARS assets, URL assets) and some assets are not (e.g. text assets).
          type: boolean
        launchType:
          description: |
            If the asset should be launchable, see isLaunchable, then this property indicates the type of launch for the asset, e.g. "Asset Banking Service asset", "LARS asset", "URL asset" to help the consumer determine how to handle the asset.
          type: string
          enum:
            - ABS
            - LARS
            - URL
    FullAssetRecordResponse:
      type: object
      deprecated: true
      description: |
        **DEPRECATED**: This response is deprecated in favor of AssetV2 component, please use the v2 of this endpoint. The full asset record response
      properties:
        data:
          type: object
          description: full assets record response data
          additionalProperties:
            $ref: '#/components/schemas/FullAssetRecord'
    LessonPlanRestoreResponse:
      type: object
      properties:
        uuid:
          type: string
          description: Unique identifier for the lesson plan restore job.
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        status:
          type: string
          description: The status of the restore operation.
          enum:
            - queued
            - in_progress
            - completed
            - failed
            - cancelled
        details:
          type: string
          description: Error details if the restore operation failed.
        updatedAt:
          type: string
          description: The timestamp when the lesson plan restore was last updated.
      required:
        - status
    UserAddedAssetRequest:
      type: object
      properties:
        itemType:
          description: Type of asset to create
          type: string
          enum:
            - file
            - weblink
            - lars
        title:
          description: Title of the asset
          type: string
        url:
          description: URL for the 'weblink' asset type
          type: string
        isCustomContent:
          description: The file to be uploaded
          type: string
          format: binary
          x-go-type: runtimeTypes.File
          x-go-type-import:
            name: runtimeTypes
            path: github.com/oapi-codegen/runtime/types
      required:
        - itemType
      example:
        itemType: weblink
        title: MHE
        url: https://www.mheducation.com
    UserAddedAsset:
      type: object
      description: User added asset data
      properties:
        id:
          description: The uuid of the asset.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        isUserAddedContent:
          description: Indicates whether the asset was added by a teacher or instructor.
          type: boolean
        instructorNotes:
          description: Instructor-only notes.
          type: string
        parentId:
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        publishId:
          description: UUID of the publish of the courseware.
          type: string
        title:
          description: This is the tile associated with the asset.
          type: string
        sequence:
          description: The sequence of an asset relative to its sibling assets (in the same row/sub-section).
          type: integer
        visibleToStudents:
          description: Indicates whether the asset is visible to students.
          type: boolean
        audience:
          description: Intended audience for the asset.
          type: array
          items:
            enum:
              - Learner
              - Instructor
              - Mentor
        includeInClassPresentation:
          description: Indicates whether the item is displayed as part of the folder presentation or not.
          type: boolean
        assetXid:
          description: Source system specific xid of the asset. For static assets like pdf, this is the ABS xid. For interactive assets like ebooks, this is the lars xid. Some assets like weblinks do not have an assetXid.
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        resourceType:
          description: Resource type of the asset.
          type: string
        url:
          description: URL for the 'weblink' asset type
          type: string
        educatorOnly:
          description: Indicates that the content is only for teachers and should not be displayed to students.
          type: boolean
      required:
        - id
        - isUserAddedContent
        - instructorNotes
        - parentId
        - publishId
        - title
        - visibleToStudents
        - resourceType
        - educatorOnly
    UserAddedAssetResponse:
      type: object
      deprecated: true
      description: |
        **DEPRECATED**: This response is deprecated in favor of AssetV2 component, please use the v2 of this endpoint. User added asset response
      properties:
        item:
          $ref: '#/components/schemas/UserAddedAsset'
      required:
        - item
    PresentationSyncRequest:
      type: object
      properties:
        sectionXIDsToSync:
          minItems: 1
          items:
            type: string
            format: urn
            description: The destination sectionXIDs to be synced.
            x-go-type: urn.URN
            x-go-type-import:
              name: urn
              path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
          x-go-type: '[]urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
      required:
        - sectionXIDsToSync
      example:
        sectionXIDsToSync:
          - urn:section:117ce240-5178-43cb-966e-4071336e058f
          - urn:section:1ca0f217-2a11-4b52-951d-6acccad49612
    SuccessPresentationSync:
      type: object
      properties:
        sectionXID:
          description: The sectionXID associated to the lesson plan that was successfully synced.
          type: string
          format: urn
          x-go-type: urn.URN
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        lessonId:
          description: The lessonUUID of the presentation that was successfully synced.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
    PresentationSyncResponse:
      type: object
      properties:
        successes:
          type: array
          items:
            $ref: '#/components/schemas/SuccessPresentationSync'
        failures:
          type: array
          items:
            type: string
            format: urn
            description: The sectionXID associated to the lesson plan that failed to sync.
            x-go-type: urn.URN
            x-go-type-import:
              name: urn
              path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
      required:
        - successes
        - failures
    AssetPreviewResponse:
      type: object
      properties:
        assetUUID:
          description: The uuid of the asset.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
      required:
        - assetUUID
    StandardNode:
      type: object
      description: Standard node component
      properties:
        nodeType:
          $ref: '#/components/schemas/NodeType'
        id:
          type: string
          description: The id of the Benchmarks as a string.
        name:
          description: The name of the Benchmark.
          type: string
        children:
          description: The IDs of the benchmarks children as a string.
          type: array
          items:
            type: string
      required:
        - nodeType
        - id
        - name
    BenchmarkHierarchy:
      type: object
      description: Benchmark Hierarchy Component
      properties:
        authorities:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/StandardNode'
        documents:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/StandardNode'
        subjects:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/StandardNode'
        courses:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/StandardNode'
      required:
        - authorities
        - documents
        - subjects
        - courses
    BenchmarkHierarchyResponse:
      type: object
      description: Benchmark Hierarchy Response
      properties:
        benchmarkHierarchy:
          $ref: '#/components/schemas/BenchmarkHierarchy'
    BenchmarkInfoChild:
      type: object
      description: Child benchmark reference (subset of BenchmarkInfo, without recursive children)
      properties:
        key:
          description: The key of the Benchmark
          type: string
        value:
          description: The value of the Benchmark.
          type: string
        code:
          type: string
          description: The code of the Benchmark.
        desc:
          description: The description of the Benchmark.
          type: string
        parentId:
          description: The Id of the parent of the Benchmark
          type: string
        authority:
          $ref: '#/components/schemas/StandardNode'
        document:
          $ref: '#/components/schemas/StandardNode'
        subject:
          $ref: '#/components/schemas/StandardNode'
        course:
          $ref: '#/components/schemas/StandardNode'
      required:
        - key
        - value
        - desc
        - code
        - authority
        - document
        - subject
        - course
        - parentId
    BenchmarkInfo:
      type: object
      description: Benchmark information component
      properties:
        key:
          description: The key of the Benchmark
          type: string
        value:
          description: The value of the Benchmark.
          type: string
        code:
          type: string
          description: The code of the Benchmark.
        desc:
          description: The description of the Benchmark.
          type: string
        parentId:
          description: The Id of the parent of the Benchmark
          type: string
        authority:
          $ref: '#/components/schemas/StandardNode'
        document:
          $ref: '#/components/schemas/StandardNode'
        subject:
          $ref: '#/components/schemas/StandardNode'
        course:
          $ref: '#/components/schemas/StandardNode'
        children:
          x-go-type: '[]*BenchmarkInfo'
          type: array
          items:
            $ref: '#/components/schemas/BenchmarkInfoChild'
      required:
        - key
        - value
        - desc
        - code
        - authority
        - document
        - subject
        - course
        - parentId
    BenchmarksResponse:
      type: object
      description: Benchmarks Response
      properties:
        benchmarks:
          type: array
          x-go-type: '[]*BenchmarkInfo'
          items:
            $ref: '#/components/schemas/BenchmarkInfo'
    LessonPlanDistributionBankUrlResponse:
      type: object
      properties:
        lessonPlanDistributionBankAuthUrl:
          type: string
      required:
        - lessonPlanDistributionBankAuthUrl
    BankAuthorizationUrlResponse:
      oneOf:
        - $ref: '#/components/schemas/AllDistributionBankUrlsResponse'
        - $ref: '#/components/schemas/CourseDistributionBankUrlResponse'
        - $ref: '#/components/schemas/LessonPlanDistributionBankUrlResponse'
    TeacherAssistantMessageContent:
      type: object
      description: Content block in a teacher assistant message
      properties:
        type:
          type: string
          description: Type of content block
          example: text
        createdTimestamp:
          type: string
          description: Timestamp when the content block was created
          example: '2025-08-29T20:03:31.374677'
        text:
          type: string
          nullable: true
          description: Text content (used for text type blocks)
          example: Hello, this is a test. Tell me two things about this course.
        markdown:
          type: string
          nullable: true
          description: Markdown content (used for markdown type blocks)
          example: |-
            Here are two things about this course:

            1. The course is organized...
        actions:
          type: array
          description: Array of actions associated with the content block
          items:
            type: object
            description: Action object (flexible structure)
          example: []
        learners:
          type: array
          nullable: true
          description: Optional list of learner URNs
          items:
            type: string
          example:
            - urn:mhe:learner:123
            - urn:mhe:learner:456
      required:
        - type
        - createdTimestamp
        - actions
    TeacherAssistantMessage:
      type: object
      description: Message in a teacher assistant session
      properties:
        role:
          type: string
          description: Role of the message sender (user, assistant, etc.)
          example: user
        content:
          type: array
          description: Content of the message as an array of content blocks
          items:
            $ref: '#/components/schemas/TeacherAssistantMessageContent'
      required:
        - role
        - content
    PaginationMetadata:
      type: object
      description: Pagination metadata for paginated responses
      properties:
        limit:
          type: integer
          description: Maximum number of items returned per page
          example: 10
        offset:
          type: integer
          description: Number of items skipped for pagination
          example: 0
        total_messages:
          type: integer
          description: Total number of items available
          example: 25
    TeacherAssistantSessionInfo:
      allOf:
        - type: object
          description: Teacher Assistant Session Information
          properties:
            id:
              type: string
              description: Unique identifier for the teacher assistant session
              example: session-id
            messages:
              type: array
              description: Array of messages in the session
              items:
                $ref: '#/components/schemas/TeacherAssistantMessage'
          required:
            - id
        - $ref: '#/components/schemas/PaginationMetadata'
    TeacherAssistantSessionResponse:
      type: object
      description: Teacher Assistant Session Response
      properties:
        assistant_session:
          $ref: '#/components/schemas/TeacherAssistantSessionInfo'
      required:
        - assistant_session
    TeacherAssistantSessionRequest:
      type: object
      description: Teacher Assistant request forwarded unchanged to the Teacher Assistant API. The payload shape depends on the operation.
      additionalProperties: true
    TeacherAssistantCreateSessionInfo:
      type: object
      description: Basic session information for newly created teacher assistant session
      properties:
        id:
          type: string
          description: Unique identifier for the teacher assistant session
          example: session-abc-123
      required:
        - id
    TeacherAssistantCreateSessionResponse:
      type: object
      description: Teacher Assistant Create Session Response
      properties:
        message:
          type: string
          description: Response message indicating session creation status
          example: Session created successfully
        assistant_session:
          $ref: '#/components/schemas/TeacherAssistantCreateSessionInfo'
      required:
        - message
        - assistant_session
    TeacherAssistantFeedbackResponse:
      type: object
      description: Teacher Assistant Feedback Response
      required:
        - status
        - message
        - feedback_id
      properties:
        status:
          type: string
          description: Status of the feedback submission
          example: success
        message:
          type: string
          description: Response message
          example: Feedback submitted successfully
        feedback_id:
          type: string
          description: Unique identifier for the submitted feedback
          example: 550e8400-e29b-41d4-a716-446655440000
    ScheduleAssetRequest:
      type: object
      properties:
        end:
          description: The end-date of the scheduled event for the asset.
          type: string
          format: date
          x-go-type: runtimeTypes.Date
          x-go-type-import:
            name: runtimeTypes
            path: github.com/oapi-codegen/runtime/types
        start:
          description: The start-date of the scheduled event for the Asset.
          type: string
          format: date
          x-go-type: runtimeTypes.Date
          x-go-type-import:
            name: runtimeTypes
            path: github.com/oapi-codegen/runtime/types
        title:
          description: Title of the Asset.
          type: string
      required:
        - end
        - start
        - title
      example:
        end: '2024-04-19'
        start: '2024-04-18'
        title: 'Chapter 17: Contemporary Global Issues (1989-Present)'
    ScheduleAssetResponse:
      type: object
      description: The updated asset behaviors, filters and tags
      properties:
        tags:
          type: array
          items:
            $ref: '#/components/schemas/AssetTag'
        behaviors:
          type: array
          items:
            $ref: '#/components/schemas/AssetBehaviorV2'
        filters:
          type: array
          items:
            $ref: '#/components/schemas/AssetFilter'
      required:
        - tags
        - behaviors
        - filters
    ParentSearchInputs:
      type: object
      description: The filtering inputs for a parent search.
      properties:
        containerId:
          description: |
            The UUID of the course/base container (for example, lesson-plan/courseware).
            This field must be the course UUID used to resolve the latest publish version and hidden assets.
            To scope the search to a specific sub-container or folder within the course, use childContainerId.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        childContainerId:
          description: |
            Optional child container UUID to scope the search within a specific folder/container of the course.
            When provided, the content search is scoped to assets within this container instead of the entire course.
            The containerId must still be the course UUID for resolving the latest version and hidden assets.
          type: string
          format: uuid
          x-go-type: uuid.UUID
          x-go-type-import:
            name: uuid
            path: github.com/google/uuid
        facets:
          $ref: '#/components/schemas/RequestSearchFacet'
        query:
          type: string
          description: Text query to search for in asset metadata (title, description, etc.)
        nextPageStart:
          description: The asset start index of the next pagination page based on the number of results. This is a zero based index.
          type: integer
          minimum: 0
      required:
        - containerId
    ParentSearchRequest:
      type: object
      properties:
        searchInputs:
          $ref: '#/components/schemas/ParentSearchInputs'
      required:
        - searchInputs
      example:
        searchInputs:
          containerId: 71d0263a-def3-4440-91c2-e5aa429eb1df
          childContainerId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
          query: example user input search term optional
          facets:
            languages: []
            instructionalTypes: []
            lexileLevels: []
            standards: []
            resourceTypes: []
            parentContentGroupsXIds: []
          nextPageStart: 0
    SearchStandardsResponse:
      type: object
      description: Search Standards Response - Aggregated list of unique standards found across search result assets.
      properties:
        standards:
          nullable: false
          type: array
          description: Aggregated list of unique standards found across search result assets.
          items:
            $ref: '#/components/schemas/AssetFilterStandards'
      required:
        - standards
    GroupedSearchFilter:
      type: object
      description: Optional filters for grouped asset search.
      properties:
        subjectIds:
          description: Filter by subject IDs.
          type: array
          items:
            type: string
        gradeIds:
          description: Filter by grade IDs.
          type: array
          items:
            type: string
        programIds:
          description: Filter by program IDs.
          type: array
          items:
            type: string
        contentTypes:
          description: Filter by content types (e.g., PDF, Video).
          type: array
          items:
            type: string
        keyword:
          description: Free-text keyword filter.
          type: string
    GroupedSearchRequest:
      type: object
      description: Request body for grouped asset search.
      properties:
        groupBy:
          description: The field to group assets by.
          type: string
          enum:
            - pedagogicalType
            - typeGroupName
            - parentContentGroupXid
            - benchmarkId
        hitsPerGroup:
          description: Number of assets to return per group. Default 10, max 25.
          type: integer
          default: 10
          minimum: 1
          maximum: 25
        maxGroups:
          description: Maximum number of groups to return. Default 20, max 50.
          type: integer
          default: 20
          minimum: 1
          maximum: 50
        lessonPlanXId:
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        sectionXId:
          type: string
          format: urn
          x-go-type: '*urn.URN'
          x-go-type-import:
            name: urn
            path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
        searchInputs:
          $ref: '#/components/schemas/SearchInputs'
        filters:
          $ref: '#/components/schemas/GroupedSearchFilter'
      required:
        - groupBy
      example:
        groupBy: pedagogicalType
        hitsPerGroup: 10
        maxGroups: 20
        lessonPlanXId: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:c2702eee-37c7-498a-8474-dd93116526d4.8d89b1f7-098a-43cf-bf87-c19ab9be5b1e
        sectionXId: urn:com.mheducation.openlearning:enterprise.roster:qastg.us-east-1:section:c12d4770-da12-11ed-b6bd-0b74aaab924a
        searchInputs:
          containerId: c2702eee-37c7-498a-8474-dd93116526d4
          publishId: f8b21212-3665-4951-bd8c-6ab5ff3171ff
        filters:
          subjectIds:
            - math
            - science
          gradeIds:
            - grade-5
            - grade-6
          programIds:
            - program-xyz
          contentTypes:
            - PDF
            - Video
          keyword: fractions
    GroupedSearchGroup:
      type: object
      description: Metadata describing a grouped search bucket.
      properties:
        key:
          description: The value of the grouping field (bucket key from OpenSearch).
          type: string
        displayName:
          description: Human-readable name for the group. For now, same as key.
          type: string
        totalCount:
          description: Total number of assets in this group (doc_count from bucket).
          type: integer
      required:
        - key
        - displayName
        - totalCount
    GroupAsset:
      type: object
      description: An asset returned within a grouped search result.
      properties:
        id:
          description: The UUID of the asset.
          type: string
        xid:
          description: The unique identifier of the asset.
          type: string
        title:
          description: The title of the asset.
          type: string
        contentType:
          description: The content type of the asset.
          type: string
        thumbnailUrl:
          description: URL of the asset thumbnail image.
          type: string
        description:
          description: Description of the asset.
          type: string
        type:
          description: Raw content search asset type.
          type: string
        parentContentGroupXid:
          description: Parent content group XID of the asset.
          type: string
        typeGroupName:
          description: Type group name of the asset.
          type: string
        metadata:
          description: Relevant metadata fields for the asset.
          type: object
          additionalProperties:
            type: string
      required:
        - id
        - xid
        - title
        - contentType
    AssetGroup:
      type: object
      description: A grouped search result including group metadata, assets, facets, and pagination.
      properties:
        group:
          $ref: '#/components/schemas/GroupedSearchGroup'
        assets:
          description: Top N assets in this group (from top_hits sub-aggregation).
          type: array
          items:
            $ref: '#/components/schemas/GroupAsset'
        facets:
          $ref: '#/components/schemas/SearchFacet'
        pagination:
          $ref: '#/components/schemas/Pagination'
      required:
        - group
        - assets
        - facets
        - pagination
    GroupedSearchResponse:
      type: object
      description: Response body for grouped asset search.
      properties:
        groups:
          description: Array of asset groups, ordered by totalCount descending.
          type: array
          items:
            $ref: '#/components/schemas/AssetGroup'
        totalGroups:
          description: Total number of groups available (may be greater than maxGroups).
          type: integer
        groupBy:
          description: Echo of the groupBy field used in the request.
          type: string
      required:
        - groups
        - totalGroups
        - groupBy
  parameters:
    LocaleStates:
      name: localeStates
      in: query
      description: |
        A list of US states and/or territories that content can be customized to.
        Enum values are based on states and territories in https://mcgrawhill.atlassian.net/wiki/spaces/analytics/pages/327945659/Blacklisted+States+and+Whitelisted+Coursewares+Rules+for+Standards+Benchmarks
      required: false
      schema:
        type: array
        items:
          type: string
          enum:
            - AK
            - AL
            - AR
            - AS
            - AZ
            - CA
            - CO
            - CT
            - DC
            - DE
            - FM
            - FL
            - GA
            - GU
            - HI
            - IA
            - ID
            - IL
            - IN
            - KS
            - KY
            - LA
            - MA
            - MD
            - ME
            - MH
            - MI
            - MN
            - MO
            - MP
            - MS
            - MT
            - NC
            - ND
            - NE
            - NH
            - NJ
            - NM
            - NV
            - NY
            - OH
            - OK
            - OR
            - PA
            - PR
            - PW
            - RI
            - SC
            - SD
            - TN
            - TX
            - UT
            - VA
            - VI
            - VT
            - WA
            - WI
            - WV
            - WY
            - XX
        example:
          - CA
          - TX
    CourseUuid:
      in: path
      name: course-uuid
      required: true
      schema:
        type: string
        format: uuid
        x-go-type: uuid.UUID
        x-go-type-import:
          name: uuid
          path: github.com/google/uuid
      description: A course UUID defined by authoring.
      example: 62e5eaca-5387-44c0-ae35-80d92abb5f08
    PublishUuid:
      in: path
      name: publish-uuid
      required: true
      schema:
        type: string
        format: uuid
        x-go-type: uuid.UUID
        x-go-type-import:
          name: uuid
          path: github.com/google/uuid
      description: A publish UUID defined by authoring when a lesson plan is created.
      example: 9de0bb4f-da82-4668-8a92-5785dedb1e95
    LessonXId:
      in: path
      name: lesson-xid
      required: true
      schema:
        type: string
        format: uuid
        x-go-type: uuid.UUID
        x-go-type-import:
          name: uuid
          path: github.com/google/uuid
      description: A lesson (i.e. folder or container) XID. This is intentionally a UUID until LEA gets persistence
      example: 4f6ef62b-8dba-41e4-8ded-07f030b10051
    ExcludedTypes:
      name: excludedTypes
      in: query
      description: |
        Optional list of resource types to exclude from parent lesson resources.
        Unknown values are ignored.
      required: false
      schema:
        type: array
        items:
          type: string
        example:
          - assessment
          - video
    SectionXid:
      in: path
      name: section-xid
      required: true
      schema:
        type: string
        format: urn
        x-go-type: '*urn.URN'
        x-go-type-import:
          name: urn
          path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
      description: Context XID
      example: urn:com.mheducation.openlearning:enterprise.roster:qastg.us-east-1:section:3fe2fac0-e6f5-11ee-b659-79feeac6f41a
    Blades:
      in: query
      name: blades
      required: false
      schema:
        type: boolean
      description: indicates whether or not the blades layout should be included on the response
    FilterReview:
      in: query
      name: filterReviewer
      required: false
      description: indicates whether or not the courseware structure will only include "Reviewer" container
      schema:
        type: boolean
    ResourceLibraryMetadata:
      in: query
      name: resourceLibraryMetadata
      required: false
      description: When true, includes resource library metadata (gradeMin, gradeMax, lexile, description) for each folder in the course structure
      x-go-name: ResourceLibraryMetadataParam
      schema:
        type: boolean
        default: false
    VariantId:
      in: query
      name: variantId
      required: false
      schema:
        type: string
        format: uuid
        x-go-type: uuid.UUID
        x-go-type-import:
          name: uuid
          path: github.com/google/uuid
      description: The UUID of the structure variant record in Learning Experience DB.
    IfNoneMatch:
      in: header
      name: If-None-Match
      required: false
      schema:
        type: string
      description: Conditional request header carrying a previously returned ETag. When it matches the current representation, the server responds 304 Not Modified with an empty body instead of the full payload.
    LayoutUuid:
      in: path
      name: layout-uuid
      required: true
      schema:
        type: string
        format: uuid
        x-go-type: uuid.UUID
        x-go-type-import:
          name: uuid
          path: github.com/google/uuid
      description: Layout UUID defined by authoring.
      example: 4f6ef62b-8dba-41e4-8ded-07f030b10051
    OrgXId:
      in: path
      name: org-xid
      required: true
      schema:
        type: string
        format: urn
        x-go-type: '*urn.URN'
        x-go-type-import:
          name: urn
          path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
      example: urn:com.mheducation.openlearning:enterprise.identity.organization:qastg.global:organization:45560beb-31ff-4b1c-9ee6-ec7571363f0e
    ContainerUuid:
      in: path
      name: container-uuid
      required: true
      schema:
        type: string
        format: uuid
        x-go-type: uuid.UUID
        x-go-type-import:
          name: uuid
          path: github.com/google/uuid
      description: The UUID used to identify a container.
      example: 4f3eedc1-1575-406b-8345-c83133c8b456
    AssetXid:
      in: path
      name: asset-xid
      required: true
      schema:
        type: string
        format: urn
        x-go-type: '*urn.URN'
        x-go-type-import:
          name: urn
          path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
      description: An Asset XID
      example: urn:com.mheducation.openlearning:integration.internal.lars:prod.us-east-1:lars_asset:f34f0538-3504-4292-8fbf-15196ba6e548
    LessonPlanXid:
      in: path
      name: lesson-plan-xid
      required: true
      schema:
        type: string
        format: urn
        x-go-type: '*urn.URN'
        x-go-type-import:
          name: urn
          path: github.com/mcgrawhill-llc/gg-dle-common-urn-lib-go/urn
      example: urn:com.mheducation.openlearning:content.courseware.deliver:qastg.global:user_folder:c2702eee-37c7-498a-8474-dd93116526d4.8d89b1f7-098a-43cf-bf87-c19ab9be5b1e
    UserCourseId:
      in: path
      name: user-course-id
      required: true
      schema:
        type: string
        format: uuid
        x-go-type: uuid.UUID
        x-go-type-import:
          name: uuid
          path: github.com/google/uuid
      description: User Course ID
    AssetUuid:
      in: path
      name: asset-uuid
      required: true
      schema:
        type: string
        format: uuid
        x-go-type: uuid.UUID
        x-go-type-import:
          name: uuid
          path: github.com/google/uuid
      description: The UUID used to identify an asset.
      example: 4f3eedc1-1575-406b-8345-c83133c8b456
    LessonPlanUuid:
      in: path
      name: lesson-plan-uuid
      required: true
      schema:
        type: string
        format: uuid
        x-go-type: uuid.UUID
        x-go-type-import:
          name: uuid
          path: github.com/google/uuid
      example: 4f3eedc1-1575-406b-8345-c83133c8b456
    BenchmarkAuthorityId:
      name: authorityId
      in: query
      description: Authority ID for filtering benchmarks
      required: false
      schema:
        type: string
    BenchmarkDocumentId:
      name: documentId
      in: query
      description: Document ID for filtering benchmarks
      required: false
      schema:
        type: string
    BenchmarkSubjectId:
      name: subjectId
      in: query
      description: Subject ID for filtering benchmarks
      required: false
      schema:
        type: string
    BenchmarkCourseId:
      name: courseId
      in: query
      description: Course ID for filtering benchmarks
      required: false
      schema:
        type: string
    BenchmarkCode:
      name: benchmarkCode
      in: query
      description: Partial code of the benchmarks to fetch. Used for filtering purposes
      required: false
      schema:
        type: string
      example: CCSS.ELA-Literacy
    DistBank:
      name: distributionBankType
      in: query
      description: |
        The type of distribution bank ID to use. Must be either "SourceDistributionBankId" or "DistributionBankId".
      required: false
      schema:
        type: string
        enum:
          - CourseDistributionBankAuthUrl
          - LessonPlanDistributionBankAuthUrl
      example: CourseDistributionBankAuthUrl
    Limit:
      in: query
      name: limit
      required: false
      schema:
        type: integer
      description: Maximum number of items to return per page for pagination
      example: 10
    Offset:
      in: query
      name: offset
      required: false
      schema:
        type: integer
      description: Number of items to skip for pagination
      example: 0
  responses:
    ErrorResponse401:
      description: 401 Authorization Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ErrorResponse403Forbidden:
      description: 403 Forbidden - You are not allowed to perform this operation
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ErrorResponse404:
      description: 404 Not Found Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ErrorResponse403:
      description: 403 Authorization Error - User JWTs are not allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TeacherAssistantSessionResponse:
      description: Teacher Assistant Session Response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TeacherAssistantSessionResponse'
    TeacherAssistantCreateSessionResponse:
      description: Teacher Assistant Create Session Response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TeacherAssistantCreateSessionResponse'
    TeacherAssistantFeedbackResponse:
      description: Teacher Assistant Feedback Response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TeacherAssistantFeedbackResponse'
