> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timeback.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get users by exclusive role

> 
Returns all users who have exclusively the specified role.

This endpoint filters users to only return those who have one or more instances of the specified role 
but no other types of roles. For example, if a user has both "student" and "guide" roles, 
they will not be returned when filtering for "student".

The response uses the same format as the OneRoster users endpoint.




## OpenAPI

````yaml /openapi/beyond-ai/edubridge-api.yaml get /edubridge/users/
openapi: 3.1.0
info:
  title: Edubridge API
  version: 1.0.0
  description: >
    # EduBridge API Overview


    The Edubridge API provides simplified interfaces for digital schools to
    manage their digital courses and student enrollments,

    abstracting away the complexities of the OneRoster standard while
    maintaining compatibility.


    It offers streamlined endpoints to enroll students in courses without the
    need to understand the underlying academic hierarchy.


    This API significantly reduces integration complexity for third-party
    systems by handling

    the background creation and management of academic sessions (per year),
    classes (per course), and enrollment relationships,

    allowing consumers to focus on educational experiences rather than data
    management.


    Entities involved in the Edubridge API:


    - Year academic session (per school)

    - Term academic session (spans the whole year)

    - Class (per course + term)

    - Enrollment (per student per class)


    ## Auto-managed entities


    The Edubridge API automatically manages the following entities:


    - Year academic session

    - Term academic session (spans the whole year)

    - Class (per course + term)


    ## Course-centric enrollment


    This API offers a course-centric view of enrollments, allowing consumers to
    focus on what courses the student is enrolled in rather than details about
    the underlying academic hierarchy.


    You as an API consumer do not need to understand the underlying academic
    hierarchy to use this API, if you are only interested in what courses a
    student is enrolled in.


    Consumers that need to interact with the underlying academic hierarchy
    through flows not covered by this API can do so by using the raw OneRoster
    API.


    ## Pre-requisites


    Before you can enroll a user in a course, you need the following entities
    created:


    - A school or equivalent organization

    - A course (linked to the organization via orgSourcedId)

    - A user (that will be enrolled in the course)


    ## Analytics API


    The Edubridge Analytics API provides student activity data and metrics
    across enrollments.


    ### Available Endpoints


    **Weekly Facts** - Get facts for a specific week by student email or ID

    - Returns: List of individual facts grouped by date


    **Activity (Date Range)** - Get facts for a custom date range by student
    email or ID

    - Returns: Aggregated metrics grouped by date → subject and date → subject →
    app


    **Enrollment Facts** - Get facts for a specific enrollment

    - Returns: Aggregated metrics for all activity within an enrollment

    - Supports optional date range filtering via `startDate` and `endDate` query
    parameters

    - Supports timezone conversion via `timezone` query parameter


    **Highest Grade Mastered** - Get the highest grade a student has mastered
    for a subject

    - Returns: Grade data from multiple sources (Edulastic, placement tests,
    test-out)


    **Student Percentiles** - Get the latest MAP percentile snapshots for a
    student

    - Returns: Per-subject percentile, RIT score, assessment date, and season

    - Used by: Goals UI setup and percentile/x-factor previews


    ### Metrics Included


    - **Activity Metrics**: Questions answered (total/correct), XP earned, units
    mastered

    - **Time Metrics**: Active seconds, inactive seconds, waste seconds

    - **Grouping**: Subject, application/platform, course, campus, date


    ### Authorization


    All analytics endpoints require the `analytics.readOnly` OAuth scope.


    ## Goals API


    The Goals API enables students to preview, track, and update learning goals
    through the Lambda-backed `/goals/*` surface.


    ### Goal Types


    | Type | Description | Required Fields |

    |------|-------------|-----------------|

    | `minimum` | Daily minimum XP target (ongoing) | `subject`, `targetValue`,
    `targetMetric` |

    | `grade_mastery` | Master content up to target grade | `subject`,
    `targetValue` |

    | `percentile` | Reach target percentile (RIT subjects only) | `subject`,
    `targetValue` |

    | `x_factor` | Grow Nx faster than typical (e.g., 2x growth) | `subject`,
    `targetValue` |

    | `course` | Complete a specific course or explicit course set | `subject`,
    `targetValue`, `targetMetric`, and either `stageId` or `courseIds` |


    ### Pace Type


    Milestone goals (`grade_mastery`, `percentile`, `x_factor`, `course`)
    support two pacing approaches:


    | paceType | User Sets | System Calculates |

    |----------|-----------|-------------------|

    | `target_date` | End date | Daily XP needed |

    | `daily_time` | Daily time commitment | Projected completion timeline |


    Example: "Reach 6th grade Math by May 15" (`target_date`) vs "Work toward
    6th grade Math at a steady daily pace" (`daily_time`).


    ### Available Endpoints


    **Subject Goals**

    - `GET /:studentId/subjects` - List subject goal snapshots for a student;
    bootstrap reads ensure managed minimum goals exist for currently enrolled
    supported subjects

    - `POST /:studentId/subjects` - Create the active learner-facing subject
    goal for a subject

    - `PATCH /:studentId/subjects/:subject` - Update the active learner-facing
    subject goal for a subject

    - `DELETE /:studentId/subjects/:subject` - Delete the active learner-facing
    subject goal for a subject

    - `PATCH /:studentId/subjects/:subject/minimum` - Update the managed minimum
    baseline for a subject

    - `POST /:studentId/subjects/preview` - Preview a learner-facing subject
    goal without saving it


    **Course Goals**

    - `GET /:studentId/courses` - List course goal snapshots for a student

    - `POST /:studentId/courses` - Create an atomic course goal

    - `PATCH /:studentId/courses/:goalId` - Update an atomic course goal

    - `DELETE /:studentId/courses/:goalId` - Delete an atomic course goal

    - `POST /:studentId/courses/preview` - Preview an atomic course goal without
    saving it


    ### Response Notes


    - Subject list responses return `{ studentId, subjects: [...] }`.

    - Subject create/update/minimum-patch responses return `{ subject: ... }`.

    - Subject preview responses return `{ preview: ... }`.

    - Course list responses return `{ studentId, courses: [...] }`.

    - Course create/update responses return `{ course: ... }`.

    - Course preview responses return `{ preview: ... }`.
      - `progress.resolution`
    - Preview responses return `{ preview: { goal: ... } }` using the same inner
    goal shape as saved goal detail.

    - Minimum goals are internally managed baseline rows:
      - auto-created for supported enrolled subjects on the canonical bootstrap goals-list read
      - readable and patchable
      - not creatable or deletable by clients
    - Filtered/history list reads are pure reads and do not run minimum-goal
    sync.

    - Standalone pace and NWEA helper endpoints are intentionally not part of
    the public goals surface.


    ### Supported Subjects


    RIT subjects (for percentile and x-factor goals): Math, Reading, Language,
    Science


    All subjects: Math, Reading, Language, Vocabulary, Science, Writing,
    FastMath, Social Studies


    ### Authorization


    All goals endpoints require authentication. Endpoints that rely on upstream
    analytics or sequence resolution also require the same auth context/API
    Gateway flow used by the Lambda-backed goals service.


    ## Student Progress API


    These Lambda-backed endpoints expose non-goal progress projections outside
    the goals namespace.


    ### Available Endpoints


    - `GET /students/:studentId/courses/:courseId/progress` - Get progress for a
    single course

    - `GET /students/:studentId/subjects/:subject/grades/:grade/progress` - Get
    aggregate progress for all courses in a subject-grade band


    ### Authorization


    Student progress endpoints require the same authenticated Lambda-backed flow
    used by the goals service.


    ## AP Readiness API


    The AP Readiness API provides a specialized workflow for AP exam
    preparation. It stores AP readiness goals in `learning_goals` using the
    `ap_readiness` goal type, but it has its own API surface, scoring pipeline,
    dashboard, and drill-down views.


    ### Available Endpoints


    **Reference Data**

    - `GET /subjects` - List supported AP exam subjects and title-matching
    patterns


    **Dashboard & Drill-down**

    - `GET /dashboard?subject=...` - Get dashboard rows for all active AP
    readiness goals in one AP subject

    - `GET /students/:studentId/drill-down?goalId=...` - Get per-unit drill-down
    data for one student's AP goal


    **Goal Management**

    - `GET /goals?subject=...` - List active AP readiness goals for an AP
    subject

    - `POST /goals` - Create an AP readiness goal

    - `PATCH /goals/:goalId` - Update the tracked courses or exam date for an AP
    readiness goal


    **Enrollment Validation**

    - `GET /enrollment-check?studentId=...&courseIds=id1,id2,...` - Return
    courses where the student has no active enrollment


    ### Goal Model


    - `goalType` is always `ap_readiness`

    - `targetMetric` is always `percent`

    - `paceType` is always `target_date`

    - `targetValue` is currently fixed to the readiness threshold for a
    predicted AP score of `5`

    - `courseIds` stores all tracked courses

    - `metadata.practice_test_course_ids` stores the subset of tracked courses
    that are practice tests

    - `curriculumCourseIds` is a derived field returned by the API and equals
    `courseIds - practice_test_course_ids`


    ### Dashboard Metrics


    Each dashboard row includes:


    - `readiness.componentA` - curriculum course progress percentage from XP

    - `readiness.componentB` - weighted practice-test accuracy percentage

    - `readiness.componentC` - final readiness percentage

    - `readiness.predictedScore` - predicted AP score from `1-5`

    - `coverage` - how many curriculum units have assessed activity

    - `topFocusAreas` - weakest unit names

    - `timeRemainingPct` - percent of time remaining until the exam date


    ### Response Notes


    - Create and update responses return `{ goal: ... }`

    - List responses return `{ goals: [...], totalCount }`

    - Dashboard responses return `{ rows: [...] }`

    - Drill-down responses return `{ units: [...] }`

    - Enrollment-check responses return `{ missingEnrollments: [...] }`


    ### Authorization


    AP Readiness endpoints require authentication and the same API Gateway auth
    context used by the Lambda-backed service.
servers:
  - url: https://api.alpha-1edtech.ai
    description: Edubridge API
security:
  - OAuth2: []
tags:
  - name: Analytics
    description: >-
      Analytics endpoints for retrieving and aggregating student activity data,
      including weekly facts and activity reports across date ranges.
  - name: AP Readiness
    description: >-
      AP exam readiness endpoints for creating AP readiness goals, viewing
      dashboard metrics, drilling into weak units, and checking enrollment gaps
      for AP preparation courses.
  - name: Application Metrics
    description: Track and manage application metrics for monitoring and analytics purposes
  - name: Applications
    description: >-
      Manage and retrieve applications available in the system. Applications
      represent different learning platforms or educational software that can be
      integrated.
  - name: Enrollments
    description: >-
      Simplified, course-centric enrollment management that abstracts away the
      complex OneRoster academic hierarchy
  - name: Goals
    description: >-
      Learning goal management endpoints for setting, tracking, and projecting
      learning goals including daily minimums, grade mastery targets, percentile
      targets, and course completion goals.
  - name: Learning Reports
    description: >-
      Learning reports endpoints for retrieving and aggregating student activity
      data, including weekly facts and activity reports.
  - name: Progression
    description: >-
      Proxy endpoints for the student progression pipeline. These routes forward
      requests to Lambda-backed API Gateway endpoints that handle Caliper event
      ingestion, progression enqueuing, and hole-filling course creation.
  - name: Subject Track
    description: >-
      Subject tracks determine the target course for each subject and grade
      level. For example, for subject 'Math' grade level '9', the target course
      can be 'Math Academy 9th Grade' (this is the course that students will be
      enrolled in when they get placed to Math Grade 9). There can be only one
      target course per subject and grade level.
  - name: Users
    description: >-
      User management endpoints that provide simplified access to user data with
      enhanced filtering and querying capabilities beyond the standard OneRoster
      API.
paths:
  /edubridge/users/:
    get:
      tags:
        - Users
      summary: Get users by exclusive role
      description: >

        Returns all users who have exclusively the specified role.


        This endpoint filters users to only return those who have one or more
        instances of the specified role 

        but no other types of roles. For example, if a user has both "student"
        and "guide" roles, 

        they will not be returned when filtering for "student".


        The response uses the same format as the OneRoster users endpoint.
      operationId: getUsersByRole
      parameters:
        - in: query
          name: fields
          description: Comma-separated list of fields to include in the response
          schema:
            type: string
            description: Comma-separated list of fields to include in the response
            example: sourcedId,name
        - in: query
          name: limit
          description: >-
            The maximum number of items to return in the paginated response.
            While the OneRoster specification does not define a maximum limit,
            this implementation enforces a maximum of 3000 to prevent abuse and
            ensure optimal performance.
          schema:
            type: integer
            minimum: 1
            maximum: 3000
            default: 100
            description: >-
              The maximum number of items to return in the paginated response.
              While the OneRoster specification does not define a maximum limit,
              this implementation enforces a maximum of 3000 to prevent abuse
              and ensure optimal performance.
            example: 100
        - in: query
          name: offset
          description: The number of items to skip in the paginated response
          schema:
            type: integer
            minimum: 0
            default: 0
            description: The number of items to skip in the paginated response
            example: 0
        - in: query
          name: sort
          description: The field to sort the response by
          schema:
            type: string
            description: The field to sort the response by
        - in: query
          name: orderBy
          description: The order to sort the response by
          schema:
            type: string
            enum:
              - asc
              - desc
            description: The order to sort the response by
        - in: query
          name: filter
          description: The filter to apply to the response
          schema:
            type: string
            description: The filter to apply to the response
            example: status='active'
        - in: query
          name: search
          description: >-
            PROPRIETARY EXTENSION: Free-text search across multiple fields.
            Provides convenient text-based querying beyond the standard
            OneRoster filter parameter.
          schema:
            type: string
            description: >-
              PROPRIETARY EXTENSION: Free-text search across multiple fields.
              Provides convenient text-based querying beyond the standard
              OneRoster filter parameter.
            example: john
        - in: query
          name: roles
          schema:
            type: array
            items:
              type: string
              enum:
                - administrator
                - aide
                - guardian
                - parent
                - proctor
                - relative
                - student
                - teacher
            minItems: 1
          required: true
        - in: query
          name: orgSourcedIds
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: Successful response containing a collection of users
          content:
            application/json:
              schema:
                type: object
                properties:
                  users:
                    type: array
                    items:
                      type: object
                      properties:
                        sourcedId:
                          type: string
                        status:
                          type: string
                          enum:
                            - active
                            - tobedeleted
                        dateLastModified:
                          type: string
                          format: date-time
                        metadata:
                          type: object
                          additionalProperties: true
                          nullable: true
                          description: Additional metadata for the object
                        userMasterIdentifier:
                          type:
                            - string
                            - 'null'
                        username:
                          type:
                            - string
                            - 'null'
                        userIds:
                          type: array
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                              identifier:
                                type: string
                            required:
                              - type
                              - identifier
                        enabledUser:
                          type: string
                          enum:
                            - 'true'
                            - 'false'
                        givenName:
                          type: string
                        familyName:
                          type: string
                        middleName:
                          type:
                            - string
                            - 'null'
                        roles:
                          type: array
                          items:
                            type: object
                            properties:
                              roleType:
                                type: string
                                enum:
                                  - primary
                                  - secondary
                              role:
                                type: string
                                enum:
                                  - administrator
                                  - aide
                                  - guardian
                                  - parent
                                  - proctor
                                  - relative
                                  - student
                                  - teacher
                              org:
                                type: object
                                properties:
                                  href:
                                    type: string
                                    format: uri
                                  sourcedId:
                                    type: string
                                  type:
                                    type: string
                                required:
                                  - href
                                  - sourcedId
                                  - type
                              userProfile:
                                type: string
                              metadata:
                                type:
                                  - object
                                  - 'null'
                                additionalProperties: {}
                              beginDate:
                                type:
                                  - string
                                  - 'null'
                              endDate:
                                type:
                                  - string
                                  - 'null'
                            required:
                              - roleType
                              - role
                              - org
                          default: []
                        agents:
                          type: array
                          items:
                            type: object
                            properties:
                              href:
                                type: string
                                format: uri
                              sourcedId:
                                type: string
                              type:
                                type: string
                                enum:
                                  - academicSession
                                  - assessmentLineItem
                                  - category
                                  - class
                                  - course
                                  - demographics
                                  - enrollment
                                  - gradingPeriod
                                  - lineItem
                                  - org
                                  - resource
                                  - result
                                  - scoreScale
                                  - student
                                  - teacher
                                  - term
                                  - user
                                  - componentResource
                                  - courseComponent
                            required:
                              - href
                              - sourcedId
                              - type
                          default: []
                        userProfiles:
                          type: array
                          items:
                            type: object
                            properties:
                              profileId:
                                type: string
                              profileType:
                                type: string
                              vendorId:
                                type: string
                              applicationId:
                                type: string
                              description:
                                type:
                                  - string
                                  - 'null'
                              app:
                                type: object
                                properties:
                                  sourcedId:
                                    type: string
                                  name:
                                    type: string
                                  description:
                                    type:
                                      - string
                                      - 'null'
                                  domain:
                                    type: array
                                    items:
                                      type: string
                                  metadata:
                                    type:
                                      - object
                                      - 'null'
                                    additionalProperties: {}
                                required:
                                  - sourcedId
                                  - name
                                  - domain
                              credentials:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    type:
                                      type: string
                                    username:
                                      type: string
                                    password:
                                      type:
                                        - string
                                        - 'null'
                                  required:
                                    - id
                                    - type
                                    - username
                                default: []
                            required:
                              - profileId
                              - profileType
                              - vendorId
                              - applicationId
                              - app
                              - credentials
                          default: []
                        primaryOrg:
                          type: object
                          properties:
                            href:
                              type: string
                              format: uri
                            sourcedId:
                              type: string
                            type:
                              type: string
                            name:
                              type:
                                - string
                                - 'null'
                          required:
                            - href
                            - sourcedId
                            - type
                        identifier:
                          type:
                            - string
                            - 'null'
                        email:
                          type: string
                          format: email
                          description: Must be unique across all users.
                        preferredFirstName:
                          type:
                            - string
                            - 'null'
                        preferredMiddleName:
                          type:
                            - string
                            - 'null'
                        preferredLastName:
                          type:
                            - string
                            - 'null'
                        pronouns:
                          type:
                            - string
                            - 'null'
                        grades:
                          type: array
                          items:
                            allOf:
                              - $ref: '#/components/schemas/GradeEnum'
                            description: The grades of the course
                            enum:
                              - '-1'
                              - '0'
                              - '1'
                              - '2'
                              - '3'
                              - '4'
                              - '5'
                              - '6'
                              - '7'
                              - '8'
                              - '9'
                              - '10'
                              - '11'
                              - '12'
                              - '13'
                        password:
                          type:
                            - string
                            - 'null'
                        sms:
                          type:
                            - string
                            - 'null'
                        phone:
                          type:
                            - string
                            - 'null'
                        demographics:
                          oneOf:
                            - $ref: '#/components/schemas/Demographics'
                            - type: 'null'
                      required:
                        - sourcedId
                        - status
                        - enabledUser
                        - givenName
                        - familyName
                        - roles
                        - agents
                        - userProfiles
                        - email
                      description: >-
                        Represents a user of the system. Can be a student,
                        teacher, guide, parent etc.
                  totalCount:
                    type: number
                  pageCount:
                    type: number
                  pageNumber:
                    type: number
                  offset:
                    type: number
                  limit:
                    type: number
                required:
                  - users
                  - totalCount
                  - pageCount
                  - pageNumber
                  - offset
                  - limit
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedRequestResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '422':
          description: Unprocessable Entity / Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
components:
  schemas:
    GradeEnum:
      type: string
      enum:
        - '-1'
        - '0'
        - '1'
        - '2'
        - '3'
        - '4'
        - '5'
        - '6'
        - '7'
        - '8'
        - '9'
        - '10'
        - '11'
        - '12'
        - '13'
      description: >-
        Grade levels. -1 is Pre-K, 0 is Kindergarten, 1-12 are grades 1-12, 13
        is AP.
      example: '3'
    Demographics:
      type: object
      properties:
        sourcedId:
          type: string
        status:
          type: string
          enum:
            - active
            - tobedeleted
        dateLastModified:
          type: string
          format: date-time
        metadata:
          type: object
          additionalProperties: true
          nullable: true
          description: Additional metadata for the object
        birthDate:
          type:
            - string
            - 'null'
          pattern: ^\d{4}-\d{2}-\d{2}$
        sex:
          type:
            - string
            - 'null'
          enum:
            - male
            - female
            - other
            - unspecified
            - null
        americanIndianOrAlaskaNative:
          type:
            - string
            - 'null'
        asian:
          type:
            - string
            - 'null'
        blackOrAfricanAmerican:
          type:
            - string
            - 'null'
        nativeHawaiianOrOtherPacificIslander:
          type:
            - string
            - 'null'
        white:
          type:
            - string
            - 'null'
        demographicRaceTwoOrMoreRaces:
          type:
            - string
            - 'null'
        hispanicOrLatinoEthnicity:
          type:
            - string
            - 'null'
        countryOfBirthCode:
          type:
            - string
            - 'null'
        stateOfBirthAbbreviation:
          type:
            - string
            - 'null'
        cityOfBirth:
          type:
            - string
            - 'null'
        publicSchoolResidenceStatus:
          type:
            - string
            - 'null'
      required:
        - sourcedId
        - status
        - birthDate
        - sex
        - americanIndianOrAlaskaNative
        - asian
        - blackOrAfricanAmerican
        - nativeHawaiianOrOtherPacificIslander
        - white
        - demographicRaceTwoOrMoreRaces
        - hispanicOrLatinoEthnicity
        - countryOfBirthCode
        - stateOfBirthAbbreviation
        - cityOfBirth
        - publicSchoolResidenceStatus
      description: Represents a student's demographics information.
    BadRequestResponse:
      type: object
      properties:
        imsx_codeMajor:
          type: string
          default: failure
          description: The major response code
          example: failure
        imsx_severity:
          type: string
          default: error
          description: The severity of the response
          example: error
        imsx_description:
          type: string
        imsx_CodeMinor:
          type: object
          properties:
            imsx_codeMinorField:
              type: array
              items:
                type: object
                properties:
                  imsx_codeMinorFieldName:
                    type: string
                    default: TargetEndSystem
                    description: The field name for the minor code
                    example: TargetEndSystem
                  imsx_codeMinorFieldValue:
                    type: string
                    default: invaliddata
                    description: The field value for the minor code
                    example: invaliddata
                required:
                  - imsx_codeMinorFieldName
                  - imsx_codeMinorFieldValue
          required:
            - imsx_codeMinorField
        imsx_error_details:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
      required:
        - imsx_codeMajor
        - imsx_severity
        - imsx_description
        - imsx_CodeMinor
    UnauthorizedRequestResponse:
      type: object
      properties:
        imsx_codeMajor:
          type: string
          default: failure
          description: The major response code
          example: failure
        imsx_severity:
          type: string
          default: error
          description: The severity of the response
          example: error
        imsx_description:
          type: string
        imsx_CodeMinor:
          type: object
          properties:
            imsx_codeMinorField:
              type: array
              items:
                type: object
                properties:
                  imsx_codeMinorFieldName:
                    type: string
                    default: TargetEndSystem
                    description: The field name for the minor code
                    example: TargetEndSystem
                  imsx_codeMinorFieldValue:
                    type: string
                    default: unauthorisedrequest
                    description: The field value for the minor code
                    example: unauthorisedrequest
                required:
                  - imsx_codeMinorFieldName
                  - imsx_codeMinorFieldValue
          required:
            - imsx_codeMinorField
        imsx_error_details:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
      required:
        - imsx_codeMajor
        - imsx_severity
        - imsx_description
        - imsx_CodeMinor
    ForbiddenResponse:
      type: object
      properties:
        imsx_codeMajor:
          type: string
          default: failure
          description: The major response code
          example: failure
        imsx_severity:
          type: string
          default: error
          description: The severity of the response
          example: error
        imsx_description:
          type: string
        imsx_CodeMinor:
          type: object
          properties:
            imsx_codeMinorField:
              type: array
              items:
                type: object
                properties:
                  imsx_codeMinorFieldName:
                    type: string
                    default: TargetEndSystem
                    description: The field name for the minor code
                    example: TargetEndSystem
                  imsx_codeMinorFieldValue:
                    type: string
                    default: forbidden
                    description: The field value for the minor code
                    example: forbidden
                required:
                  - imsx_codeMinorFieldName
                  - imsx_codeMinorFieldValue
          required:
            - imsx_codeMinorField
        imsx_error_details:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
      required:
        - imsx_codeMajor
        - imsx_severity
        - imsx_description
        - imsx_CodeMinor
    NotFoundResponse:
      type: object
      properties:
        imsx_codeMajor:
          type: string
          default: failure
          description: The major response code
          example: failure
        imsx_severity:
          type: string
          default: error
          description: The severity of the response
          example: error
        imsx_description:
          type: string
        imsx_CodeMinor:
          type: object
          properties:
            imsx_codeMinorField:
              type: array
              items:
                type: object
                properties:
                  imsx_codeMinorFieldName:
                    type: string
                    default: TargetEndSystem
                    description: The field name for the minor code
                    example: TargetEndSystem
                  imsx_codeMinorFieldValue:
                    type: string
                    default: unknownobject
                    description: The field value for the minor code
                    example: unknownobject
                required:
                  - imsx_codeMinorFieldName
                  - imsx_codeMinorFieldValue
          required:
            - imsx_codeMinorField
        imsx_error_details:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
      required:
        - imsx_codeMajor
        - imsx_severity
        - imsx_description
        - imsx_CodeMinor
    UnprocessableEntityResponse:
      type: object
      properties:
        imsx_codeMajor:
          type: string
          default: failure
          description: The major response code
          example: failure
        imsx_severity:
          type: string
          default: error
          description: The severity of the response
          example: error
        imsx_description:
          type: string
        imsx_CodeMinor:
          type: object
          properties:
            imsx_codeMinorField:
              type: array
              items:
                type: object
                properties:
                  imsx_codeMinorFieldName:
                    type: string
                    default: TargetEndSystem
                    description: The field name for the minor code
                    example: TargetEndSystem
                  imsx_codeMinorFieldValue:
                    type: string
                    default: invaliddata
                    description: The field value for the minor code
                    example: invaliddata
                required:
                  - imsx_codeMinorFieldName
                  - imsx_codeMinorFieldValue
          required:
            - imsx_codeMinorField
        imsx_error_details:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
      required:
        - imsx_codeMajor
        - imsx_severity
        - imsx_description
        - imsx_CodeMinor
    TooManyRequestsResponse:
      type: object
      properties:
        imsx_codeMajor:
          type: string
          default: failure
          description: The major response code
          example: failure
        imsx_severity:
          type: string
          default: error
          description: The severity of the response
          example: error
        imsx_description:
          type: string
        imsx_CodeMinor:
          type: object
          properties:
            imsx_codeMinorField:
              type: array
              items:
                type: object
                properties:
                  imsx_codeMinorFieldName:
                    type: string
                    default: TargetEndSystem
                    description: The field name for the minor code
                    example: TargetEndSystem
                  imsx_codeMinorFieldValue:
                    type: string
                    default: server_busy
                    description: The field value for the minor code
                    example: server_busy
                required:
                  - imsx_codeMinorFieldName
                  - imsx_codeMinorFieldValue
          required:
            - imsx_codeMinorField
        imsx_error_details:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
      required:
        - imsx_codeMajor
        - imsx_severity
        - imsx_description
        - imsx_CodeMinor
    InternalServerErrorResponse:
      type: object
      properties:
        imsx_codeMajor:
          type: string
          default: failure
          description: The major response code
          example: failure
        imsx_severity:
          type: string
          default: error
          description: The severity of the response
          example: error
        imsx_description:
          type: string
        imsx_CodeMinor:
          type: object
          properties:
            imsx_codeMinorField:
              type: array
              items:
                type: object
                properties:
                  imsx_codeMinorFieldName:
                    type: string
                    default: TargetEndSystem
                    description: The field name for the minor code
                    example: TargetEndSystem
                  imsx_codeMinorFieldValue:
                    type: string
                    default: internal_server_error
                    description: The field value for the minor code
                    example: internal_server_error
                required:
                  - imsx_codeMinorFieldName
                  - imsx_codeMinorFieldValue
          required:
            - imsx_codeMinorField
        imsx_error_details:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
      required:
        - imsx_codeMajor
        - imsx_severity
        - imsx_description
        - imsx_CodeMinor
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          scopes:
            https://purl.imsglobal.org/spec/or/v1p1/scope/admin: Admin access to the API
            https://purl.imsglobal.org/spec/or/v1p2/scope/admin.own: Admin access restricted to own resources
            https://purl.imsglobal.org/spec/or/v1p1/scope/roster-core.readonly: Read access to roster core
            https://purl.imsglobal.org/spec/or/v1p1/scope/roster.readonly: Read access to roster
            https://purl.imsglobal.org/spec/or/v1p1/scope/roster.createput: Create and update access to roster
            https://purl.imsglobal.org/spec/or/v1p1/scope/roster.delete: Delete access to roster
            https://purl.imsglobal.org/spec/or/v1p1/scope/roster-demographics.readonly: Read access to roster demographics
            https://purl.imsglobal.org/spec/or/v1p1/scope/roster-demographics.createput: Create and update access to roster demographics
            https://purl.imsglobal.org/spec/or/v1p1/scope/roster-demographics.delete: Delete access to roster demographics
            https://purl.imsglobal.org/spec/or/v1p1/scope/resource.readonly: Read access to resource
            https://purl.imsglobal.org/spec/or/v1p1/scope/resource.createput: Create and update access to resource
            https://purl.imsglobal.org/spec/or/v1p1/scope/resource.delete: Delete access to resource
            https://purl.imsglobal.org/spec/or/v1p1/scope/gradebook.readonly: Read access to gradebook
            https://purl.imsglobal.org/spec/or/v1p1/scope/gradebook.createput: Create and update access to gradebook
            https://purl.imsglobal.org/spec/or/v1p1/scope/gradebook.delete: Delete access to gradebook
            https://purl.imsglobal.org/spec/powerpath/v1p1/scope/powerpath.readonly: Read access to powerpath
            https://purl.imsglobal.org/spec/powerpath/v1p1/scope/powerpath.createput: Create and update access to powerpath
            https://purl.imsglobal.org/spec/powerpath/v1p1/scope/powerpath.delete: Delete access to powerpath
            https://purl.imsglobal.org/spec/powerpath/v1p1/scope/powerpath.admin: Admin access to powerpath
            https://purl.imsglobal.org/spec/ob/v3p0/scope/credential.readonly: Read your issued badges
            https://purl.imsglobal.org/spec/ob/v3p0/scope/credential.upsert: Store new badges in your account
            https://purl.imsglobal.org/spec/ob/v3p0/scope/credential.delete: Delete access to open badges
            https://purl.imsglobal.org/spec/ob/v3p0/scope/credential.admin: Administrative access to open badges
            https://purl.imsglobal.org/spec/clr/v2p0/scope/credential.readonly: Read access to CLR
            https://purl.imsglobal.org/spec/clr/v2p0/scope/credential.upsert: Create and update access to CLR
            https://purl.imsglobal.org/spec/clr/v2p0/scope/credential.admin: Administrative access to CLR
            https://api.alpha-1edtech.ai/edubridge/progression.readonly: Browse lesson catalog via progression proxy
            https://api.alpha-1edtech.ai/edubridge/progression.createput: Create hole-filling courses via progression proxy
          tokenUrl: >-
            https://prod-beyond-timeback-api-2-idp.auth.us-east-1.amazoncognito.com/oauth2/token

````