> ## 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 a stage after the assessment

> 
Get a single stage that comes after the specified assessment in a course sequence.
---
Returns a stage (`CourseSequenceStage` object) that comes after the specified assessment in a course sequence.

You specify assessment in query params like `test_grade=5`.
There is a single assessment stage per grade, so this parameter
is enough to identify the assessment stage after which you want to get the next stage.

You can specify the test type too like `test_type=placement` or `test_type=test_out`.

If you don't provide `test_type`, it will be considered as `end_of_grade`.
---
**Special Input Cases**
1. FastMath sequence
For FastMath sequence you need to be cautious with `test_type` because this sequence contains
Accuracy Assessment (test_out) and Fluency Assessment (end_of_course) for each grade.
So if you omit this parameter in FastMath, you will get the stage after the Fluency Assessment of the specified grade.

You need to provide `cqpm` (correct questions per minute) query parameter
when `test_type` is `end_of_course` or omitted (default).
This is because the FastMath sequence makes a progression decision based on both CQPM and score percentage.

2. Language sequence
This sequence has two assessments on the same grade (grade 0).
When you want to know what is after the first assessment (`Grade K AlphaTest Assessment (Reading + Lang)`) -
you can use the existing parameters.

But when you want to know what is after the second assessment (`Literably ORD Assessment Level D`) -
you need to provide `wcpm` (words correct per minute) query parameter.
You get this from the `Literably ORD Assessment Level D` test results.

If you don't do that the system won't be able to tell two assessments on the same grade apart and will return 
the stage after the first assessment (`Grade K AlphaTest Assessment (Reading + Lang)`).
    



## OpenAPI

````yaml /openapi/beyond-ai/powerpath-api.yaml get /powerpath/course-sequence/:id/stages/after/assessment
openapi: 3.1.0
info:
  title: PowerPath API
  version: 1.0.0
  description: >
    TimeBack PowerPath 100 API


    # Authentication


    All endpoints require authentication using the `Authorization: Bearer
    <token>` header.


    The token can be obtained with:


    ```

    curl -X POST
    https://prod-beyond-timeback-api-2-idp.auth.us-east-1.amazoncognito.com/oauth2/token
    \

    -H "Content-Type: application/x-www-form-urlencoded" \

    -d
    "grant_type=client_credentials&client_id=<your-client-id>&client_secret=<your-client-secret>"

    ```


    Use the correct IDP server depending on the environment you're using:


    IDP Server for this environment:

    ```

    https://prod-beyond-timeback-api-2-idp.auth.us-east-1.amazoncognito.com

    ```


    Reach out to the platform team to get a client/secret pair for your
    application.


    # Pagination


    Our API uses offset pagination for list endpoints. Paginated responses
    include the following fields:


    - `offset`: Offset for the next page of results

    - `limit`: Number of items per page (default: 100, maximum: 3000)


    **Note:** While the OneRoster specification does not define a maximum limit,
    this implementation enforces a maximum of 3000 items per page to prevent
    abuse and ensure optimal performance.


    Example request:


    ```

    GET /ims/oneroster/rostering/v1p2/users?offset=20&limit=20

    ```


    All listing endpoints support offset pagination.


    # Filtering


    All listing endpoints support filtering using the `filter` query parameter,
    following 1EdTech's filtering specification.


    The filter should be a string with the following format:


    ```

    ?filter=[field][operator][value]

    ```


    Example request:


    ```

    GET /ims/oneroster/rostering/v1p2/users?filter=status='active'

    ```


    Example request with multiple filters:


    ```

    GET /ims/oneroster/rostering/v1p2/users?filter=status='active' AND
    name='John'

    ```


    **Filtering by nested relations is not supported**.


    # Sorting


    All listing endpoints support sorting using the `sort` and `orderBy` query
    parameters, following 1EdTech's sorting specification


    Example request:


    ```

    GET /ims/oneroster/rostering/v1p2/users?sort=lastName&orderBy=asc

    ```


    # Proprietary Extensions


    This implementation includes proprietary extensions that extend beyond the
    official OneRoster 1.2 specification to provide additional functionality.


    ## Search Parameter


    In addition to the standard `filter` parameter, this implementation provides
    a `search` query parameter for simplified free-text searching:


    ```

    GET /ims/oneroster/rostering/v1p2/users?search=john

    ```


    **Purpose**: The `search` parameter enables convenient text-based queries
    across multiple fields simultaneously, whereas the standard `filter`
    parameter requires specifying exact field names and operators:


    ```

    # Search parameter - searches across multiple fields automatically

    GET /ims/oneroster/rostering/v1p2/users?search=john


    # Equivalent using standard filter parameter

    GET /ims/oneroster/rostering/v1p2/users?filter=givenName~'john' OR
    familyName~'john'

    ```


    The `search` parameter performs case-insensitive partial matching across
    predefined fields for each endpoint, providing a more user-friendly querying
    experience.


    ## OneRoster 1.2 Standard Parameters


    The official OneRoster 1.2 specification defines these standard parameters:


    - `limit` - pagination limit

    - `offset` - pagination offset

    - `sort` - field to sort by

    - `orderBy` - sort direction (asc/desc)

    - `filter` - filtering expression

    - `fields` - field selection


    ## Affected Endpoints


    The proprietary `search` parameter is available on the following endpoints:


    **Rostering API**:


    - `GET /ims/oneroster/rostering/v1p2/academicSessions/`

    - `GET /ims/oneroster/rostering/v1p2/classes/`

    - `GET /ims/oneroster/rostering/v1p2/classes/{classSourcedId}/students`

    - `GET /ims/oneroster/rostering/v1p2/classes/{classSourcedId}/teachers`

    - `GET /ims/oneroster/rostering/v1p2/courses/`

    - `GET /ims/oneroster/rostering/v1p2/courses/{courseSourcedId}/classes`

    - `GET /ims/oneroster/rostering/v1p2/demographics/`

    - `GET /ims/oneroster/rostering/v1p2/enrollments/`

    - `GET
    /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/classes/{classSourcedId}/students`

    - `GET /ims/oneroster/rostering/v1p2/users/`


    **Gradebook API**:


    - `GET /ims/oneroster/gradebook/v1p2/assessmentLineItems/`

    - `GET /ims/oneroster/gradebook/v1p2/assessmentResults/`

    - `GET
    /ims/oneroster/gradebook/v1p2/classes/{classSourcedId}/students/{studentSourcedId}/results`

    - `GET /ims/oneroster/gradebook/v1p2/results/`


    **Resources API**:


    - `GET /ims/oneroster/resources/v1p2/resources/`


    ## Parameter Usage Guide


    ### Filter Parameter


    The standard `filter` parameter provides precise control over queries using
    these operators:


    - `=` - Exact match

    - `!=` - Not equal

    - `~` - Contains (case-insensitive)

    - `>`, `>=`, `<`, `<=` - Comparison operators

    - `@` - In list (comma-separated values)


    ### Logical Operators


    Combine multiple conditions in filter expressions:


    - `AND` - Both conditions must be true

    - `OR` - Either condition must be true


    ### Usage Examples


    ```bash

    # Simple text search across multiple fields

    GET /users?search=john


    # Equivalent precise filtering

    GET /users?filter=givenName~'john' OR familyName~'john'


    # Complex filtering with multiple conditions

    GET /users?filter=status='active' AND givenName~'john'


    # Advanced filtering with different operators

    GET /users?filter=dateLastModified>'2023-01-01' AND status='active'

    ```


    ## Search Fields by Endpoint


    Different endpoints search across these predefined fields:


    - **Users**: `givenName`, `familyName`, `email`

    - **Courses**: `title`, `courseCode`

    - **Classes**: `title`

    - **Organizations**: `name`


    ## Interoperability Notes


    The `search` parameter is a proprietary extension specific to this
    implementation. Other OneRoster-compliant systems may only support the
    standard `filter` parameter. When building applications that need to work
    with multiple OneRoster providers, consider using the standard filtering
    approach.


    ## Additional Schema Fields


    ### AssessmentLineItem Extensions


    The AssessmentLineItem schema includes two proprietary fields that extend
    curriculum mapping capabilities:


    #### Component Field


    - **Field**: `component`

    - **Type**: Object reference (`{ sourcedId: string }`)

    - **Purpose**: Direct association between assessment line items and course
    components, enabling enhanced curriculum mapping and learning pathway
    tracking.


    #### ComponentResource Field


    - **Field**: `componentResource`

    - **Type**: Object reference (`{ sourcedId: string }`)

    - **Purpose**: Direct association between assessment line items and specific
    learning resources, supporting detailed content-to-assessment relationships
    and adaptive learning features.


    **Example Usage**:


    ```json

    {
      "sourcedId": "assessment-123",
      "title": "Chapter 5 Quiz",
      "component": { "sourcedId": "component-456" },
      "componentResource": { "sourcedId": "resource-789" }
    }

    ```


    ## Affected Endpoints


    ### Schema Extensions Availability


    The proprietary schema fields are available in:


    **Gradebook API**:


    - `GET /ims/oneroster/gradebook/v1p2/assessmentLineItems/` - Returns
    assessmentLineItems with `component` and `componentResource` fields

    - `GET /ims/oneroster/gradebook/v1p2/assessmentLineItems/{sourcedId}` -
    Returns individual assessmentLineItem with extended fields

    - `POST /ims/oneroster/gradebook/v1p2/assessmentLineItems/` - Accepts
    `component` and `componentResource` in request body

    - `PUT /ims/oneroster/gradebook/v1p2/assessmentLineItems/{sourcedId}` -
    Accepts extended fields for updates
servers:
  - url: https://api.alpha-1edtech.ai
    description: PowerPath API
security:
  - OAuth2: []
tags:
  - name: Course Mastery
  - name: Course Sequence
    description: >-
      Manage course sequences and query course sequence to get the next stage in
      the student learning path
  - name: Lesson Mastery
    description: >-
      Track and manage student mastery of lesson objectives, through PowerPath
      100 lessons
  - name: Lesson Plans
    description: Manage lesson plans and instructional content
  - name: Placement
  - name: Test Assignments
  - name: Test Out
    description: >-
      Self-elected test-out endpoints for students to verify mastery and advance
      to the next grade level
paths:
  /powerpath/course-sequence/:id/stages/after/assessment:
    get:
      tags:
        - Course Sequence
      summary: Get a stage after the assessment
      description: >-

        Get a single stage that comes after the specified assessment in a course
        sequence.

        ---

        Returns a stage (`CourseSequenceStage` object) that comes after the
        specified assessment in a course sequence.


        You specify assessment in query params like `test_grade=5`.

        There is a single assessment stage per grade, so this parameter

        is enough to identify the assessment stage after which you want to get
        the next stage.


        You can specify the test type too like `test_type=placement` or
        `test_type=test_out`.


        If you don't provide `test_type`, it will be considered as
        `end_of_grade`.

        ---

        **Special Input Cases**

        1. FastMath sequence

        For FastMath sequence you need to be cautious with `test_type` because
        this sequence contains

        Accuracy Assessment (test_out) and Fluency Assessment (end_of_course)
        for each grade.

        So if you omit this parameter in FastMath, you will get the stage after
        the Fluency Assessment of the specified grade.


        You need to provide `cqpm` (correct questions per minute) query
        parameter

        when `test_type` is `end_of_course` or omitted (default).

        This is because the FastMath sequence makes a progression decision based
        on both CQPM and score percentage.


        2. Language sequence

        This sequence has two assessments on the same grade (grade 0).

        When you want to know what is after the first assessment (`Grade K
        AlphaTest Assessment (Reading + Lang)`) -

        you can use the existing parameters.


        But when you want to know what is after the second assessment
        (`Literably ORD Assessment Level D`) -

        you need to provide `wcpm` (words correct per minute) query parameter.

        You get this from the `Literably ORD Assessment Level D` test results.


        If you don't do that the system won't be able to tell two assessments on
        the same grade apart and will return 

        the stage after the first assessment (`Grade K AlphaTest Assessment
        (Reading + Lang)`).
            
      operationId: getCourseSequenceStageAfterAssessment
      parameters:
        - in: path
          name: id
          description: The unique identifier (UUID)
          schema:
            type: string
            format: uuid
            description: The unique identifier (UUID)
          required: true
        - in: query
          name: score_pct
          description: The test score (percent)
          schema:
            type: string
            description: The test score (percent)
            example: '90'
          required: true
        - in: query
          name: test_grade
          schema:
            type: string
            enum:
              - '-1'
              - '0'
              - '1'
              - '2'
              - '3'
              - '4'
              - '5'
              - '6'
              - '7'
              - '8'
              - '9'
              - '10'
              - '11'
              - '12'
          required: true
        - in: query
          name: test_type
          schema:
            type: string
            enum:
              - test_out
              - placement
              - end_of_course
        - in: query
          name: cqpm
          description: Correct Questions Per Minute for FastMath
          schema:
            type: string
            description: Correct Questions Per Minute for FastMath
        - in: query
          name: wcpm
          description: Word Count Per Minute for Language
          schema:
            type: string
            description: Word Count Per Minute for Language
        - in: query
          name: assessment_source
          description: >-
            The source/provider of the assessment the student just completed.
            Use 'literably' when reporting a Literably Oral Reading Fluency
            result; omit or pass 'mastery' for the default MasteryTrack
            assessment.
          schema:
            type: string
            enum:
              - mastery
              - literably
            description: >-
              The source/provider of the assessment the student just completed.
              Use 'literably' when reporting a Literably Oral Reading Fluency
              result; omit or pass 'mastery' for the default MasteryTrack
              assessment.
            examples:
              - mastery
              - literably
      responses:
        '200':
          description: Course Sequence Stage
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: >-
                      The unique identifier of the stage. For course type stages
                      it is the course id.
                  title:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: >-
                      The title of the stage. For course type stages it is the
                      course title.
                  grades:
                    type: array
                    items:
                      type: string
                      enum:
                        - '-1'
                        - '0'
                        - '1'
                        - '2'
                        - '3'
                        - '4'
                        - '5'
                        - '6'
                        - '7'
                        - '8'
                        - '9'
                        - '10'
                        - '11'
                        - '12'
                      description: The K-12 grade level associated with the stage.
                  subject:
                    $ref: '#/components/schemas/SubjectEnum'
                    description: The subject associated with the stage
                  type:
                    type: string
                    enum:
                      - course
                      - assessment
                      - hole-filling
                    description: The type of the stage
                  properties:
                    type: object
                    properties:
                      courseReferences:
                        type: array
                        items:
                          type: object
                          properties:
                            courseId:
                              type: string
                            refAddedAt:
                              type: string
                              format: date-time
                              pattern: Z$
                          required:
                            - courseId
                            - refAddedAt
                      testTypes:
                        type: array
                        items:
                          type: string
                          enum:
                            - test_out
                            - placement
                            - end_of_course
                      learningAppId:
                        type: string
                        description: >-
                          Only for Hole-Filling stages. The id of the learning
                          app that should be used for the hole-filling course.
                        examples:
                          - alpha_write
                          - mobymax
                      assessmentSource:
                        type: string
                        enum:
                          - mastery
                          - literably
                        description: >-
                          Only for Assessment stages. Identifies the
                          source/provider of the assessment. 'literably' marks
                          the Literably Oral Reading Fluency variants used in
                          the Reading gauntlet; omitted or 'mastery' marks the
                          default MasteryTrack assessment.
                        examples:
                          - mastery
                          - literably
                    description: The additional properties associated with the stage
                required:
                  - id
                  - title
                  - grades
                  - subject
                  - type
                  - properties
        '204':
          description: End Of Sequence
          content:
            application/json:
              schema: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  details:
                    type: string
                required:
                  - message
              examples:
                invalidQueryParam:
                  value:
                    message: Invalid path or query parameters
                    details: >-
                      [{"validation":"uuid","code":"invalid_string","message":"Invalid
                      uuid","path":["id"]}]
components:
  schemas:
    SubjectEnum:
      type: string
      enum:
        - Reading
        - Language
        - Vocabulary
        - Social Studies
        - Writing
        - Science
        - FastMath
        - Math
        - None
        - Other
  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

````