{
  "openapi": "3.1.0",
  "info": {
    "title": "OneRoster 1.2",
    "description": "The OneRoster 1.2 API serves rostering, gradebook, and resources on the spec-exact 1EdTech REST binding. It covers organizations, academic sessions, courses, classes, users, enrollments, and demographics with offset pagination, X-Total-Count, named envelopes, imsx errors, and the OneRoster filter/sort/fields grammar on the /ims/oneroster/rostering/v1p2 paths. CSV import and export commands are tracked as receipt entities.",
    "version": "1.0"
  },
  "tags": [
    {
      "name": "Academic Session",
      "description": "A OneRoster academic session representing a school year, term, grading period, or semester within the calendar hierarchy. Sessions form an acyclic parent-child tree and are referenced by courses and classes for temporal binding. Alpha reads use peopleAndOrgs.term; writes use /oneroster/academic-session."
    },
    {
      "name": "Assessment Line Item",
      "description": "A OneRoster assessment line item representing a formal assessment instrument linked to a line item, carrying assessment-level metadata such as score scale and learning objectives. OneRoster exposes IMS gradebook CRUD (*Ims)."
    },
    {
      "name": "Assessment Result",
      "description": "A OneRoster assessment result linking a student result to an assessment line item with score-scale-specific outcome data. OneRoster exposes IMS gradebook CRUD (*Ims)."
    },
    {
      "name": "Category",
      "description": "A OneRoster gradebook category (e.g. homework, quiz, test) used to group and weight line items within a class. Alpha home is results.gradebookCategory; OneRoster keeps IMS gradebook CRUD."
    },
    {
      "name": "Class",
      "description": "A OneRoster class section — an instantiation of a course for a specific term, school, and set of students. Classes are the primary scheduling and enrollment container. Alpha reads use peopleAndOrgs.classSection; writes use /oneroster/class."
    },
    {
      "name": "Course",
      "description": "A OneRoster course offering within an organization, bound to a school year and optionally to subject codes. Courses are the curricular template that classes instantiate for a specific term. Alpha reads use peopleAndOrgs.courseCatalog; writes use /oneroster/course."
    },
    {
      "name": "Demographics",
      "description": "OneRoster demographics data for a user — a privileged one-to-one companion keyed by the same sourcedId as the user. Contains CEDS race, ethnicity, sex, and birth date fields under dedicated roster-demographics:read permission scope. No Alpha projection (sensitive-profile read); writes use /oneroster/demographics."
    },
    {
      "name": "Enrollment",
      "description": "A OneRoster enrollment binding a user to a class with a specific role. Enrollments are the join entity that enables nested reads like students-in-a-class and classes-for-a-teacher. No Alpha projection (as-of computed reads only); writes use /oneroster/enrollment."
    },
    {
      "name": "Export Batch",
      "description": "A OneRoster CSV export batch receipt entity tracking the status and outcome of a bulk CSV export operation. CRUD on /oneroster/export-batch."
    },
    {
      "name": "Import Batch",
      "description": "A OneRoster CSV import batch receipt entity tracking the status and outcome of a bulk CSV import operation. CRUD on /oneroster/import-batch."
    },
    {
      "name": "Learning Objective Results",
      "description": "A OneRoster learning objective results record linking a student assessment result to specific learning objectives within a set, capturing per-objective outcome data. No Alpha projection; CRUD on IMS gradebook learningObjectiveResults."
    },
    {
      "name": "Learning Objective Score Set",
      "description": "A OneRoster learning objective score set defining the scoring rubric (score scale) applicable to a specific learning objective set. No Alpha projection; CRUD on IMS gradebook learningObjectiveScoreSets."
    },
    {
      "name": "Learning Objective Set",
      "description": "A OneRoster learning objective set grouping related learning objectives that can be aligned to assessment line items. No Alpha projection; CRUD on IMS gradebook learningObjectiveSets."
    },
    {
      "name": "Line Item",
      "description": "A OneRoster gradebook line item (assignment, assessment, or activity) within a class that students receive results against. Alpha home is results.gradebookLineItem; OneRoster keeps IMS gradebook CRUD."
    },
    {
      "name": "Organization",
      "description": "A OneRoster organization (school, district, state, national, or local) within the rostering hierarchy. Organizations form an acyclic parent-child tree via parentSourcedId and are the tenant-scoped anchor that most roster entities reference. Alpha home is peopleAndOrgs.organization (write-through); OneRoster IMS is GET-only."
    },
    {
      "name": "Resource",
      "description": "A OneRoster resource master representing a digital learning resource (content item, tool, or material) that can be linked to classes, courses, and users. No content projection; writes use /oneroster/resource; IMS resources are GET-only."
    },
    {
      "name": "Result",
      "description": "A OneRoster gradebook result — a student's score or outcome on a specific line item. Alpha home is results.gradebookResult; OneRoster keeps IMS gradebook CRUD."
    },
    {
      "name": "Score Scale",
      "description": "A OneRoster score scale defining the grading rubric or point system used to interpret results and line-item scores. Alpha home is results.gradebookScoreScale; OneRoster keeps IMS gradebook CRUD."
    },
    {
      "name": "Score Scale Value",
      "description": "A single value entry within a OneRoster score scale, representing one level of achievement (e.g. A, B, C or 4, 3, 2, 1). Alpha home is results.gradebookScoreScaleValue; IMS gradebook CRUD retained."
    },
    {
      "name": "User",
      "description": "A OneRoster user representing a student, teacher, parent, guardian, aide, administrator, or other role-bearing individual within the rostering system. Users are the identity anchor that enrollments, demographics, and downstream Alpha modules reference. Alpha home is peopleAndOrgs.person (write-through); OneRoster IMS is GET-only."
    }
  ],
  "paths": {
    "/ims/oneroster/rostering/v1p2/academicSessions": {
      "get": {
        "operationId": "listAcademicSessions",
        "summary": "List academic sessions",
        "description": "Returns all academic sessions for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Academic Session"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, title, type, startDate, endDate, schoolYear, parent, schoolSourcedId, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, title, type, startDate, endDate, schoolYear, parent, schoolSourcedId, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "academicSessions"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "academicSessions": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AcademicSession"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/academicSessions/{sourcedId}": {
      "get": {
        "operationId": "getAcademicSession",
        "summary": "Get an academic session",
        "description": "Returns a single academic session by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Academic Session"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The academic session sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "academicSession"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "academicSession": {
                      "$ref": "#/components/schemas/AcademicSession"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (academic_session_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/academic-session": {
      "post": {
        "operationId": "createAcademicSession",
        "summary": "Create an academic session",
        "description": "Creates a new academic session.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Academic Session"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAcademicSessionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "academicSession"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "academicSession": {
                      "$ref": "#/components/schemas/AcademicSession"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (academic_session_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/academic-session/{sourcedId}": {
      "put": {
        "operationId": "updateAcademicSession",
        "summary": "Update an academic session",
        "description": "Updates an existing academic session.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Academic Session"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The academic session sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAcademicSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "academicSession"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "academicSession": {
                      "$ref": "#/components/schemas/AcademicSession"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (academic_session_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteAcademicSession",
        "summary": "Delete an academic session",
        "description": "Marks an academic session as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Academic Session"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The academic session sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (academic_session_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/schoolYears": {
      "get": {
        "operationId": "listSchoolYears",
        "summary": "List school years",
        "description": "Returns academic sessions filtered to type schoolYear.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Academic Session"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "academicSessions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Academic sessions of type schoolYear, in OneRoster wire shape."
                    }
                  },
                  "required": [
                    "academicSessions"
                  ],
                  "description": "The named academicSessions envelope — a LIST, never a singular object."
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/terms": {
      "get": {
        "operationId": "listTerms",
        "summary": "List terms",
        "description": "Returns academic sessions filtered to type term.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Academic Session"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "academicSessions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Academic sessions of type term, in OneRoster wire shape."
                    }
                  },
                  "required": [
                    "academicSessions"
                  ],
                  "description": "The named academicSessions envelope — a LIST, never a singular object."
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/gradingPeriods": {
      "get": {
        "operationId": "listGradingPeriods",
        "summary": "List grading periods",
        "description": "Returns academic sessions filtered to type gradingPeriod.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Academic Session"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "academicSessions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Academic sessions of type gradingPeriod, in OneRoster wire shape."
                    }
                  },
                  "required": [
                    "academicSessions"
                  ],
                  "description": "The named academicSessions envelope — a LIST, never a singular object."
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/assessmentLineItems": {
      "get": {
        "operationId": "listAssessmentLineItems",
        "summary": "List assessment line items",
        "description": "Returns all assessment line items for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Line Item"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, lineItemSourcedId, scoreScaleSourcedId, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, lineItemSourcedId, scoreScaleSourcedId, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "assessmentLineItems"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "assessmentLineItems": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AssessmentLineItem"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createAssessmentLineItemIms",
        "summary": "Create an assessment line item (1EdTech wire)",
        "description": "Creates a new assessment line item.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Line Item"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAssessmentLineItemRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "assessmentLineItem"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "assessmentLineItem": {
                      "$ref": "#/components/schemas/AssessmentLineItem"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (assessment_line_item_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/assessmentLineItems/{sourcedId}": {
      "get": {
        "operationId": "getAssessmentLineItem",
        "summary": "Get an assessment line item",
        "description": "Returns a single assessment line item by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Line Item"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The assessment line item sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "assessmentLineItem"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "assessmentLineItem": {
                      "$ref": "#/components/schemas/AssessmentLineItem"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (assessment_line_item_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateAssessmentLineItemIms",
        "summary": "Update an assessment line item (1EdTech wire)",
        "description": "Updates an existing assessment line item.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Line Item"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The assessment line item sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAssessmentLineItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "assessmentLineItem"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "assessmentLineItem": {
                      "$ref": "#/components/schemas/AssessmentLineItem"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (assessment_line_item_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteAssessmentLineItemIms",
        "summary": "Delete an assessment line item (1EdTech wire)",
        "description": "Marks an assessment line item as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Line Item"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The assessment line item sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (assessment_line_item_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/assessmentResults": {
      "get": {
        "operationId": "listAssessmentResults",
        "summary": "List assessment results",
        "description": "Returns all assessment results for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Result"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, assessmentLineItemSourcedId, resultSourcedId, scoreScaleValueSourcedId, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, assessmentLineItemSourcedId, resultSourcedId, scoreScaleValueSourcedId, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "assessmentResults"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "assessmentResults": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AssessmentResult"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createAssessmentResultIms",
        "summary": "Create an assessment result (1EdTech wire)",
        "description": "Creates a new assessment result.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Result"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAssessmentResultRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "assessmentResult"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "assessmentResult": {
                      "$ref": "#/components/schemas/AssessmentResult"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (assessment_result_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/assessmentResults/{sourcedId}": {
      "get": {
        "operationId": "getAssessmentResult",
        "summary": "Get an assessment result",
        "description": "Returns a single assessment result by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Result"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The assessment result sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "assessmentResult"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "assessmentResult": {
                      "$ref": "#/components/schemas/AssessmentResult"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (assessment_result_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateAssessmentResultIms",
        "summary": "Update an assessment result (1EdTech wire)",
        "description": "Updates an existing assessment result.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Result"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The assessment result sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAssessmentResultRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "assessmentResult"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "assessmentResult": {
                      "$ref": "#/components/schemas/AssessmentResult"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (assessment_result_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteAssessmentResultIms",
        "summary": "Delete an assessment result (1EdTech wire)",
        "description": "Marks an assessment result as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Assessment Result"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The assessment result sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (assessment_result_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/categories": {
      "get": {
        "operationId": "listCategories",
        "summary": "List categories",
        "description": "Returns all gradebook categories for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Category"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, title, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, title, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "categories"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "categories": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Category"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createCategoryIms",
        "summary": "Create a category (1EdTech wire)",
        "description": "Creates a new gradebook category.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Category"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCategoryRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "category"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "category": {
                      "$ref": "#/components/schemas/Category"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (category_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/categories/{sourcedId}": {
      "get": {
        "operationId": "getCategory",
        "summary": "Get a category",
        "description": "Returns a single category by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Category"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The category sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "category"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "category": {
                      "$ref": "#/components/schemas/Category"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (category_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateCategoryIms",
        "summary": "Update a category (1EdTech wire)",
        "description": "Updates an existing category.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Category"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The category sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCategoryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "category"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "category": {
                      "$ref": "#/components/schemas/Category"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (category_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteCategoryIms",
        "summary": "Delete a category (1EdTech wire)",
        "description": "Marks a category as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Category"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The category sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (category_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/classes": {
      "get": {
        "operationId": "listClasses",
        "summary": "List classes",
        "description": "Returns all classes for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Class"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, title, classCode, classType, location, course, school, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, title, classCode, classType, location, course, school, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "classes"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "classes": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Class"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/classes/{sourcedId}": {
      "get": {
        "operationId": "getClass",
        "summary": "Get a class",
        "description": "Returns a single class by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Class"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The class sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "class"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "class": {
                      "$ref": "#/components/schemas/Class"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (class_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/class": {
      "post": {
        "operationId": "createClass",
        "summary": "Create a class",
        "description": "Creates a new class.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Class"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateClassRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "class"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "class": {
                      "$ref": "#/components/schemas/Class"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (class_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/class/{sourcedId}": {
      "put": {
        "operationId": "updateClass",
        "summary": "Update a class",
        "description": "Updates an existing class.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Class"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The class sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateClassRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "class"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "class": {
                      "$ref": "#/components/schemas/Class"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (class_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteClass",
        "summary": "Delete a class",
        "description": "Marks a class as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Class"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The class sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (class_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/courses": {
      "get": {
        "operationId": "listCourses",
        "summary": "List courses",
        "description": "Returns all courses for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Course"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, title, courseCode, org, schoolYear, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, title, courseCode, org, schoolYear, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "courses"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "courses": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Course"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/courses/{sourcedId}": {
      "get": {
        "operationId": "getCourse",
        "summary": "Get a course",
        "description": "Returns a single course by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Course"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The course sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "course"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "course": {
                      "$ref": "#/components/schemas/Course"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (course_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/course": {
      "post": {
        "operationId": "createCourse",
        "summary": "Create a course",
        "description": "Creates a new course.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Course"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCourseRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "course"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "course": {
                      "$ref": "#/components/schemas/Course"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (course_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/course/{sourcedId}": {
      "put": {
        "operationId": "updateCourse",
        "summary": "Update a course",
        "description": "Updates an existing course.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Course"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The course sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCourseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "course"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "course": {
                      "$ref": "#/components/schemas/Course"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (course_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteCourse",
        "summary": "Delete a course",
        "description": "Marks a course as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Course"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The course sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (course_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/demographics": {
      "get": {
        "operationId": "listDemographics",
        "summary": "List demographics",
        "description": "Returns all demographics records for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Demographics"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, birthDate, sex, americanIndianOrAlaskaNative, asian, blackOrAfricanAmerican, nativeHawaiianOrOtherPacificIslander, white, demographicRaceTwoOrMoreRaces, hispanicOrLatinoEthnicity, countryOfBirthCode, stateOfBirthAbbreviation, cityOfBirth, publicSchoolResidenceStatus, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, birthDate, sex, americanIndianOrAlaskaNative, asian, blackOrAfricanAmerican, nativeHawaiianOrOtherPacificIslander, white, demographicRaceTwoOrMoreRaces, hispanicOrLatinoEthnicity, countryOfBirthCode, stateOfBirthAbbreviation, cityOfBirth, publicSchoolResidenceStatus, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "demographics"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "demographics": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Demographics"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/demographics/{sourcedId}": {
      "get": {
        "operationId": "getDemographic",
        "summary": "Get demographics for a user",
        "description": "Returns demographics for a single user by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Demographics"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The user sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "demographics"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "demographics": {
                      "$ref": "#/components/schemas/Demographics"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (demographic_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/demographics": {
      "post": {
        "operationId": "createDemographic",
        "summary": "Create demographics",
        "description": "Creates demographics for a user.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Demographics"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDemographicsRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "demographics"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "demographics": {
                      "$ref": "#/components/schemas/Demographics"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (demographic_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/demographics/{sourcedId}": {
      "put": {
        "operationId": "updateDemographic",
        "summary": "Update demographics",
        "description": "Updates demographics for an existing user.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Demographics"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The user sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDemographicsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "demographics"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "demographics": {
                      "$ref": "#/components/schemas/Demographics"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (demographic_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteDemographic",
        "summary": "Delete demographics",
        "description": "Removes demographics for a user.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Demographics"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The user sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (demographic_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/enrollments": {
      "get": {
        "operationId": "listEnrollments",
        "summary": "List enrollments",
        "description": "Returns all enrollments for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Enrollment"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, user, class, school, role, primary, beginDate, endDate, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, user, class, school, role, primary, beginDate, endDate, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "enrollments"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "enrollments": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Enrollment"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/enrollments/{sourcedId}": {
      "get": {
        "operationId": "getEnrollment",
        "summary": "Get an enrollment",
        "description": "Returns a single enrollment by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Enrollment"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The enrollment sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "enrollment"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "enrollment": {
                      "$ref": "#/components/schemas/Enrollment"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (enrollment_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/enrollment": {
      "post": {
        "operationId": "createEnrollment",
        "summary": "Create an enrollment",
        "description": "Creates a new enrollment.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Enrollment"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEnrollmentRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "enrollment"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "enrollment": {
                      "$ref": "#/components/schemas/Enrollment"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (enrollment_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/enrollment/{sourcedId}": {
      "put": {
        "operationId": "updateEnrollment",
        "summary": "Update an enrollment",
        "description": "Updates an existing enrollment.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Enrollment"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The enrollment sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEnrollmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "enrollment"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "enrollment": {
                      "$ref": "#/components/schemas/Enrollment"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (enrollment_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteEnrollment",
        "summary": "Delete an enrollment",
        "description": "Marks an enrollment as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Enrollment"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The enrollment sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (enrollment_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/exports": {
      "get": {
        "operationId": "listExportBatches",
        "summary": "List export batches",
        "description": "Returns all export batch receipts for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Export Batch"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, batchStatus, destination, totalCount, processedCount, completedAt, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, batchStatus, destination, totalCount, processedCount, completedAt, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "exportBatches"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "exportBatches": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ExportBatch"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/exports/{sourcedId}": {
      "get": {
        "operationId": "getExportBatch",
        "summary": "Get an export batch",
        "description": "Returns a single export batch receipt by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Export Batch"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The export batch sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "exportBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "exportBatch": {
                      "$ref": "#/components/schemas/ExportBatch"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (export_batch_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/export-batch": {
      "post": {
        "operationId": "createExportBatch",
        "summary": "Create an export batch",
        "description": "Creates a new export batch receipt.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Export Batch"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateExportBatchRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "exportBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "exportBatch": {
                      "$ref": "#/components/schemas/ExportBatch"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (export_batch_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/export-batch/{sourcedId}": {
      "put": {
        "operationId": "updateExportBatch",
        "summary": "Update an export batch",
        "description": "Updates an existing export batch receipt.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Export Batch"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The export batch sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateExportBatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "exportBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "exportBatch": {
                      "$ref": "#/components/schemas/ExportBatch"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (export_batch_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteExportBatch",
        "summary": "Delete an export batch",
        "description": "Removes an export batch receipt.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Export Batch"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The export batch sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (export_batch_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/exports/csv": {
      "post": {
        "operationId": "exportOneRosterCsv",
        "summary": "Export a OneRoster CSV package",
        "description": "The CSV bulk/delta export command. Returns the exportBatch receipt (with a download ref when complete); the receipt's plain CRUD GET at /exports/{id} is the status endpoint. Clients fetch export bytes out-of-band via the download reference.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Export Batch"
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "The idempotency key (max 128 chars). Optional — when present, the call is replay-protected; a completed replay returns the stored response at 200 with idempotency-replayed: true.",
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "bulk",
                      "delta"
                    ],
                    "description": "The CSV export mode: bulk (full snapshot) or delta (changes since last export)."
                  }
                },
                "required": [
                  "mode"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK (idempotent replay — the stored first response; idempotency-replayed: true).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "exportBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "exportBatch": {
                      "$ref": "#/components/schemas/ExportBatch"
                    }
                  }
                }
              }
            },
            "headers": {
              "idempotency-replayed": {
                "description": "true when this response is a stored idempotent replay (the hook did not run).",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                }
              }
            }
          },
          "202": {
            "description": "Accepted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "exportBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "exportBatch": {
                      "$ref": "#/components/schemas/ExportBatch"
                    }
                  }
                }
              }
            },
            "headers": {
              "idempotency-replayed": {
                "description": "true when this response is a stored idempotent replay (the hook did not run).",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — an operation with this Idempotency-Key is already in progress (60s lock).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity — this Idempotency-Key was already used with a different request body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "428": {
            "description": "Precondition Required — this operation requires the Idempotency-Key header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/imports": {
      "get": {
        "operationId": "listImportBatches",
        "summary": "List import batches",
        "description": "Returns all import batch receipts for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Import Batch"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, batchStatus, source, totalCount, processedCount, errorCount, completedAt, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, batchStatus, source, totalCount, processedCount, errorCount, completedAt, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "importBatches"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "importBatches": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ImportBatch"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/imports/{sourcedId}": {
      "get": {
        "operationId": "getImportBatch",
        "summary": "Get an import batch",
        "description": "Returns a single import batch receipt by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Import Batch"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The import batch sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "importBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "importBatch": {
                      "$ref": "#/components/schemas/ImportBatch"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (import_batch_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/import-batch": {
      "post": {
        "operationId": "createImportBatch",
        "summary": "Create an import batch",
        "description": "Creates a new import batch receipt.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Import Batch"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateImportBatchRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "importBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "importBatch": {
                      "$ref": "#/components/schemas/ImportBatch"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (import_batch_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/import-batch/{sourcedId}": {
      "put": {
        "operationId": "updateImportBatch",
        "summary": "Update an import batch",
        "description": "Updates an existing import batch receipt.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Import Batch"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The import batch sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateImportBatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "importBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "importBatch": {
                      "$ref": "#/components/schemas/ImportBatch"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (import_batch_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteImportBatch",
        "summary": "Delete an import batch",
        "description": "Removes an import batch receipt.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Import Batch"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The import batch sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (import_batch_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/imports/csv": {
      "post": {
        "operationId": "importOneRosterCsv",
        "summary": "Import a OneRoster CSV package",
        "description": "The CSV bulk/delta import command. Accepts a JSON package reference and returns the importBatch receipt; the receipt's plain CRUD GET at /imports/{id} is the status endpoint. Clients fetch package bytes out-of-band from the referenced location.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Import Batch"
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "The idempotency key (max 128 chars). REQUIRED — absent returns 428. A completed replay returns the stored response at 200 with idempotency-replayed: true.",
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "bulk",
                      "delta"
                    ],
                    "description": "The CSV import mode: bulk (full replace) or delta (incremental)."
                  },
                  "package": {
                    "type": "object",
                    "description": "The source reference for the CSV package (JSON reference; clients supply a URI or package locator rather than uploading zip bytes on this door).",
                    "additionalProperties": true
                  }
                },
                "required": [
                  "mode"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK (idempotent replay — the stored first response; idempotency-replayed: true).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "importBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "importBatch": {
                      "$ref": "#/components/schemas/ImportBatch"
                    }
                  }
                }
              }
            },
            "headers": {
              "idempotency-replayed": {
                "description": "true when this response is a stored idempotent replay (the hook did not run).",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                }
              }
            }
          },
          "202": {
            "description": "Accepted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "importBatch"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "importBatch": {
                      "$ref": "#/components/schemas/ImportBatch"
                    }
                  }
                }
              }
            },
            "headers": {
              "idempotency-replayed": {
                "description": "true when this response is a stored idempotent replay (the hook did not run).",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — an operation with this Idempotency-Key is already in progress (60s lock).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity — this Idempotency-Key was already used with a different request body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "428": {
            "description": "Precondition Required — this operation requires the Idempotency-Key header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/learningObjectiveResults": {
      "get": {
        "operationId": "listLearningObjectiveResults",
        "summary": "List learning objective results",
        "description": "Returns all learning objective results for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Results"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, assessmentResultSourcedId, learningObjectiveSetSourcedId, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, assessmentResultSourcedId, learningObjectiveSetSourcedId, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveResultsList"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveResultsList": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LearningObjectiveResults"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createLearningObjectiveResults",
        "summary": "Create a learning objective results record",
        "description": "Creates a new learning objective results record.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Results"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLearningObjectiveResultsRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveResults"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveResults": {
                      "$ref": "#/components/schemas/LearningObjectiveResults"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (learning_objective_results_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/learningObjectiveResults/{sourcedId}": {
      "get": {
        "operationId": "getLearningObjectiveResults",
        "summary": "Get a learning objective results record",
        "description": "Returns a single learning objective results record by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Results"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The learning objective results sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveResults"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveResults": {
                      "$ref": "#/components/schemas/LearningObjectiveResults"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (learning_objective_results_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateLearningObjectiveResults",
        "summary": "Update a learning objective results record",
        "description": "Updates an existing learning objective results record.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Results"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The learning objective results sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLearningObjectiveResultsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveResults"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveResults": {
                      "$ref": "#/components/schemas/LearningObjectiveResults"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (learning_objective_results_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteLearningObjectiveResults",
        "summary": "Delete a learning objective results record",
        "description": "Marks a learning objective results record as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Results"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The learning objective results sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (learning_objective_results_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/learningObjectiveScoreSets": {
      "get": {
        "operationId": "listLearningObjectiveScoreSets",
        "summary": "List learning objective score sets",
        "description": "Returns all learning objective score sets for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Score Set"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, learningObjectiveSetSourcedId, scoreScaleSourcedId, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, learningObjectiveSetSourcedId, scoreScaleSourcedId, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveScoreSets"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveScoreSets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LearningObjectiveScoreSet"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createLearningObjectiveScoreSet",
        "summary": "Create a learning objective score set",
        "description": "Creates a new learning objective score set.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Score Set"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLearningObjectiveScoreSetRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveScoreSet"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveScoreSet": {
                      "$ref": "#/components/schemas/LearningObjectiveScoreSet"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (learning_objective_score_set_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/learningObjectiveScoreSets/{sourcedId}": {
      "get": {
        "operationId": "getLearningObjectiveScoreSet",
        "summary": "Get a learning objective score set",
        "description": "Returns a single learning objective score set by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Score Set"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The learning objective score set sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveScoreSet"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveScoreSet": {
                      "$ref": "#/components/schemas/LearningObjectiveScoreSet"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (learning_objective_score_set_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateLearningObjectiveScoreSet",
        "summary": "Update a learning objective score set",
        "description": "Updates an existing learning objective score set.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Score Set"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The learning objective score set sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLearningObjectiveScoreSetRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveScoreSet"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveScoreSet": {
                      "$ref": "#/components/schemas/LearningObjectiveScoreSet"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (learning_objective_score_set_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteLearningObjectiveScoreSet",
        "summary": "Delete a learning objective score set",
        "description": "Marks a learning objective score set as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Score Set"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The learning objective score set sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (learning_objective_score_set_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/learningObjectiveSets": {
      "get": {
        "operationId": "listLearningObjectiveSets",
        "summary": "List learning objective sets",
        "description": "Returns all learning objective sets for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Set"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, title, description, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, title, description, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveSets"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveSets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LearningObjectiveSet"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createLearningObjectiveSet",
        "summary": "Create a learning objective set",
        "description": "Creates a new learning objective set.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Set"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLearningObjectiveSetRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveSet"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveSet": {
                      "$ref": "#/components/schemas/LearningObjectiveSet"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (learning_objective_set_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/learningObjectiveSets/{sourcedId}": {
      "get": {
        "operationId": "getLearningObjectiveSet",
        "summary": "Get a learning objective set",
        "description": "Returns a single learning objective set by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Set"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The learning objective set sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveSet"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveSet": {
                      "$ref": "#/components/schemas/LearningObjectiveSet"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (learning_objective_set_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateLearningObjectiveSet",
        "summary": "Update a learning objective set",
        "description": "Updates an existing learning objective set.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Set"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The learning objective set sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLearningObjectiveSetRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "learningObjectiveSet"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "learningObjectiveSet": {
                      "$ref": "#/components/schemas/LearningObjectiveSet"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (learning_objective_set_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteLearningObjectiveSet",
        "summary": "Delete a learning objective set",
        "description": "Marks a learning objective set as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Learning Objective Set"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The learning objective set sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (learning_objective_set_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/lineItems": {
      "get": {
        "operationId": "listLineItems",
        "summary": "List line items",
        "description": "Returns all line items for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Line Item"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, title, description, classSourcedId, categorySourcedId, assignDate, dueDate, resultValueMin, resultValueMax, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, title, description, classSourcedId, categorySourcedId, assignDate, dueDate, resultValueMin, resultValueMax, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "lineItems"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "lineItems": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LineItem"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createLineItemIms",
        "summary": "Create a line item (1EdTech wire)",
        "description": "Creates a new line item.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Line Item"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLineItemRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "lineItem"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "lineItem": {
                      "$ref": "#/components/schemas/LineItem"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (line_item_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/lineItems/{sourcedId}": {
      "get": {
        "operationId": "getLineItem",
        "summary": "Get a line item",
        "description": "Returns a single line item by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Line Item"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The line item sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "lineItem"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "lineItem": {
                      "$ref": "#/components/schemas/LineItem"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (line_item_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateLineItemIms",
        "summary": "Update a line item (1EdTech wire)",
        "description": "Updates an existing line item.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Line Item"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The line item sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLineItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "lineItem"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "lineItem": {
                      "$ref": "#/components/schemas/LineItem"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (line_item_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteLineItemIms",
        "summary": "Delete a line item (1EdTech wire)",
        "description": "Marks a line item as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Line Item"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The line item sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (line_item_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/orgs": {
      "get": {
        "operationId": "listOrgs",
        "summary": "List organizations",
        "description": "Returns all organizations for the authenticated tenant with OneRoster pagination and query grammar.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Organization"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, name, type, identifier, parent, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, name, type, identifier, parent, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "orgs"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "orgs": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Org"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/orgs/{sourcedId}": {
      "get": {
        "operationId": "getOrg",
        "summary": "Get an organization",
        "description": "Returns a single organization by its sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Organization"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The org sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "org"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "org": {
                      "$ref": "#/components/schemas/Org"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (org_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/schools": {
      "get": {
        "operationId": "listSchools",
        "summary": "List schools",
        "description": "Type-filtered alias collection: orgs where type=school (OneRoster 1.2 REST). Implemented as an command computed read that applies the constant type filter.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Organization"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schools": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Orgs of type school, in OneRoster wire shape."
                    }
                  },
                  "required": [
                    "schools"
                  ],
                  "description": "The named schools envelope."
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/resources/v1p2/resources": {
      "get": {
        "operationId": "listResources",
        "summary": "List resources",
        "description": "Returns all resources for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Resource"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, title, vendorResourceId, vendorId, applicationId, importance, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, title, vendorResourceId, vendorId, applicationId, importance, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "resources"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "resources": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Resource"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/resources/v1p2/resources/{sourcedId}": {
      "get": {
        "operationId": "getResource",
        "summary": "Get a resource",
        "description": "Returns a single resource by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Resource"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The resource sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "resource"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "resource": {
                      "$ref": "#/components/schemas/Resource"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (resource_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/resource": {
      "post": {
        "operationId": "createResource",
        "summary": "Create a resource",
        "description": "Creates a new resource.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Resource"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateResourceRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "resource"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "resource": {
                      "$ref": "#/components/schemas/Resource"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (resource_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/oneroster/resource/{sourcedId}": {
      "put": {
        "operationId": "updateResource",
        "summary": "Update a resource",
        "description": "Updates an existing resource.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Resource"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The resource sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateResourceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "resource"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "resource": {
                      "$ref": "#/components/schemas/Resource"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (resource_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteResource",
        "summary": "Delete a resource",
        "description": "Marks a resource as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Resource"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The resource sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (resource_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/results": {
      "get": {
        "operationId": "listResults",
        "summary": "List results",
        "description": "Returns all results for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Result"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, lineItemSourcedId, studentSourcedId, score, scoreStatus, comment, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, lineItemSourcedId, studentSourcedId, score, scoreStatus, comment, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "results"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Result"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createResultIms",
        "summary": "Create a result (1EdTech wire)",
        "description": "Creates a new result.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Result"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateResultRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "result"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/Result"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (result_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/results/{sourcedId}": {
      "get": {
        "operationId": "getResult",
        "summary": "Get a result",
        "description": "Returns a single result by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Result"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The result sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "result"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/Result"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (result_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateResultIms",
        "summary": "Update a result (1EdTech wire)",
        "description": "Updates an existing result.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Result"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The result sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateResultRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "result"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/Result"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (result_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteResultIms",
        "summary": "Delete a result (1EdTech wire)",
        "description": "Marks a result as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Result"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The result sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (result_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/scoreScales": {
      "get": {
        "operationId": "listScoreScales",
        "summary": "List score scales",
        "description": "Returns all score scales for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, title, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, title, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "scoreScales"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "scoreScales": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ScoreScale"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createScoreScaleIms",
        "summary": "Create a score scale (1EdTech wire)",
        "description": "Creates a new score scale.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateScoreScaleRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "scoreScale"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "scoreScale": {
                      "$ref": "#/components/schemas/ScoreScale"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (score_scale_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/scoreScales/{sourcedId}": {
      "get": {
        "operationId": "getScoreScale",
        "summary": "Get a score scale",
        "description": "Returns a single score scale by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The score scale sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "scoreScale"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "scoreScale": {
                      "$ref": "#/components/schemas/ScoreScale"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (score_scale_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateScoreScaleIms",
        "summary": "Update a score scale (1EdTech wire)",
        "description": "Updates an existing score scale.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The score scale sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateScoreScaleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "scoreScale"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "scoreScale": {
                      "$ref": "#/components/schemas/ScoreScale"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (score_scale_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteScoreScaleIms",
        "summary": "Delete a score scale (1EdTech wire)",
        "description": "Marks a score scale as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The score scale sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (score_scale_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/scoreScaleValues": {
      "get": {
        "operationId": "listScoreScaleValues",
        "summary": "List score scale values",
        "description": "Returns all score scale values for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale Value"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, scoreScaleSourcedId, value, lowerBound, upperBound, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, scoreScaleSourcedId, value, lowerBound, upperBound, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "scoreScaleValues"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "scoreScaleValues": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ScoreScaleValue"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createScoreScaleValue",
        "summary": "Create a score scale value",
        "description": "Creates a new score scale value.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale Value"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateScoreScaleValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "scoreScaleValue"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "scoreScaleValue": {
                      "$ref": "#/components/schemas/ScoreScaleValue"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Problem (score_scale_value_already_exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/gradebook/v1p2/scoreScaleValues/{sourcedId}": {
      "get": {
        "operationId": "getScoreScaleValue",
        "summary": "Get a score scale value",
        "description": "Returns a single score scale value by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale Value"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The score scale value sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "scoreScaleValue"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "scoreScaleValue": {
                      "$ref": "#/components/schemas/ScoreScaleValue"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (score_scale_value_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateScoreScaleValue",
        "summary": "Update a score scale value",
        "description": "Updates an existing score scale value.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale Value"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The score scale value sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateScoreScaleValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "scoreScaleValue"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "scoreScaleValue": {
                      "$ref": "#/components/schemas/ScoreScaleValue"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (score_scale_value_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteScoreScaleValue",
        "summary": "Delete a score scale value",
        "description": "Marks a score scale value as tobedeleted.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "Score Scale Value"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The score scale value sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No Content.",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (score_scale_value_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/users": {
      "get": {
        "operationId": "listUsers",
        "summary": "List users",
        "description": "Returns all users for the authenticated tenant.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return on this page (default 100, clamped server-side).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based index of the first item to return (default 0). Ignored when `cursor` is set.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque keyset cursor from the previous page's X-Next-Cursor header. Prefer over deep `offset` when present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "OneRoster filter predicate: `field OP value` (OP one of =, !=, >, >=, <, <=, ~), combined with AND/OR (fields: sourcedId, status, givenName, familyName, middleName, preferredFirstName, preferredLastName, email, phone, sms, username, enabledUser, org, dateLastModified). Values may be single- or double-quoted. An unknown field/operator is a 400.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort by (paired with orderBy) (fields: sourcedId, status, givenName, familyName, middleName, preferredFirstName, preferredLastName, email, phone, sms, username, enabledUser, org, dateLastModified).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort direction for `sort`: asc (default) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to return per object (the id field is always retained). An unknown field is a 400.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "users"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/User"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Total-Count": {
                "description": "The total number of rows matching the request (across all pages). Always present on offset-mode list responses.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-Next-Cursor": {
                "description": "Opaque keyset cursor for the next page (echo as ?cursor=). Present when more rows exist and the order is key-suffixed.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/users/{sourcedId}": {
      "get": {
        "operationId": "getUser",
        "summary": "Get a user",
        "description": "Returns a single user by sourcedId.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "name": "sourcedId",
            "in": "path",
            "required": true,
            "description": "The user sourcedId.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "user"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Problem (user_not_found).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/students": {
      "get": {
        "operationId": "listStudents",
        "summary": "List students",
        "description": "Type-filtered alias collection: users where some roles[].role is student (OneRoster 1.2 REST). Implemented as an command computed read that applies the constant role filter.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "User"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "students": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Users holding the student role, in OneRoster wire shape."
                    }
                  },
                  "required": [
                    "students"
                  ],
                  "description": "The named students envelope."
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    },
    "/ims/oneroster/rostering/v1p2/teachers": {
      "get": {
        "operationId": "listTeachers",
        "summary": "List teachers",
        "description": "Type-filtered alias collection: users where some roles[].role is teacher (OneRoster 1.2 REST). Implemented as an command computed read that applies the constant role filter.\n\n> **Auth required:** a verified bearer token is required.",
        "tags": [
          "User"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "teachers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Users holding the teacher role, in OneRoster wire shape."
                    }
                  },
                  "required": [
                    "teachers"
                  ],
                  "description": "The named teachers envelope."
                }
              }
            }
          },
          "400": {
            "description": "Bad Request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404": {
            "description": "Not Found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "501": {
            "description": "Not Implemented.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AcademicSession": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this academic session, unique within the tenant."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the academic session."
          },
          "type": {
            "type": "string",
            "enum": [
              "schoolYear",
              "term",
              "gradingPeriod",
              "semester"
            ],
            "description": "The type of academic session in the calendar hierarchy."
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "The start date of the academic session."
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "The end date of the academic session."
          },
          "schoolYear": {
            "type": "string",
            "pattern": "^[0-9]{4}$",
            "description": "The four-digit school year this session belongs to."
          },
          "parent": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a academicSession — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "academicSession",
                "description": "The referenced resource type."
              }
            }
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "schoolSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "School org sourcedId for the academic session. Required so Ed-Fi session derivedHash legs are NOT NULL; district-wide schoolYear rows set this to the district org.",
            "x-references": "org.sourcedId",
            "x-onDelete": "restrict"
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "title",
          "type",
          "startDate",
          "endDate",
          "schoolYear",
          "schoolSourcedId",
          "dateLastModified"
        ]
      },
      "AssessmentLineItem": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this assessment line item."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "lineItemSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the line item this assessment is linked to.",
            "x-references": "lineItem.sourcedId",
            "x-onDelete": "restrict"
          },
          "scoreScaleSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the score scale used for this assessment.",
            "x-references": "scoreScale.sourcedId",
            "x-onDelete": "restrict"
          },
          "learningObjectiveSetSourcedIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The sourcedIds of learning objective sets aligned to this assessment."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "lineItemSourcedId",
          "dateLastModified"
        ]
      },
      "AssessmentResult": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this assessment result."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "assessmentLineItemSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the assessment line item.",
            "x-references": "assessmentLineItem.sourcedId",
            "x-onDelete": "restrict"
          },
          "resultSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the result record.",
            "x-references": "result.sourcedId",
            "x-onDelete": "restrict"
          },
          "scoreScaleValueSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the score scale value assigned.",
            "x-references": "scoreScaleValue.sourcedId",
            "x-onDelete": "restrict"
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "assessmentLineItemSourcedId",
          "resultSourcedId",
          "dateLastModified"
        ]
      },
      "Category": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this category."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the category."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "title",
          "dateLastModified"
        ]
      },
      "Class": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this class."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the class section."
          },
          "classCode": {
            "type": "string",
            "maxLength": 256,
            "description": "An optional class section code."
          },
          "classType": {
            "type": "string",
            "pattern": "^(homeroom|scheduled|ext:.+)$",
            "description": "The class type: homeroom, scheduled, or a governed ext: extension."
          },
          "location": {
            "type": "string",
            "maxLength": 512,
            "description": "Physical or virtual location of the class."
          },
          "course": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a course — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "course",
                "description": "The referenced resource type."
              }
            }
          },
          "school": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "org",
                "description": "The referenced resource type."
              }
            }
          },
          "termSourcedIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "SourcedIds of academic session terms this class spans."
          },
          "grades": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Grade levels applicable to this class."
          },
          "subjects": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subject names applicable to this class."
          },
          "subjectCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subject codes applicable to this class."
          },
          "periods": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Period identifiers when this class meets."
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "GUIDRef sourcedIds of resources associated with this class."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "title",
          "school",
          "dateLastModified"
        ]
      },
      "Course": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this course."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the course."
          },
          "courseCode": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The course code assigned by the organization."
          },
          "org": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "org",
                "description": "The referenced resource type."
              }
            }
          },
          "schoolYear": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a academicSession — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "academicSession",
                "description": "The referenced resource type."
              }
            }
          },
          "grades": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Grade levels applicable to this course."
          },
          "subjects": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subject names applicable to this course."
          },
          "subjectCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subject codes (e.g. SCED codes) applicable to this course."
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "GUIDRef sourcedIds of resources associated with this course."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "title",
          "courseCode",
          "org",
          "dateLastModified"
        ]
      },
      "Demographics": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The sourcedId matching the user this demographics record describes.",
            "x-references": "user.sourcedId",
            "x-onDelete": "cascade"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "birthDate": {
            "type": "string",
            "format": "date",
            "description": "The user's date of birth."
          },
          "sex": {
            "type": "string",
            "enum": [
              "male",
              "female",
              "unspecified"
            ],
            "description": "The user's biological sex."
          },
          "americanIndianOrAlaskaNative": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "asian": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "blackOrAfricanAmerican": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "nativeHawaiianOrOtherPacificIslander": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "white": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "demographicRaceTwoOrMoreRaces": {
            "type": "boolean",
            "description": "CEDS indicator for two or more races."
          },
          "hispanicOrLatinoEthnicity": {
            "type": "boolean",
            "description": "CEDS Hispanic/Latino ethnicity indicator."
          },
          "countryOfBirthCode": {
            "type": "string",
            "maxLength": 10,
            "description": "ISO country code of the user's country of birth."
          },
          "stateOfBirthAbbreviation": {
            "type": "string",
            "maxLength": 10,
            "description": "State abbreviation of the user's state of birth."
          },
          "cityOfBirth": {
            "type": "string",
            "maxLength": 256,
            "description": "The user's city of birth."
          },
          "publicSchoolResidenceStatus": {
            "type": "string",
            "maxLength": 256,
            "description": "Public school residence status code."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "dateLastModified"
        ]
      },
      "Enrollment": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this enrollment."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "user": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a user — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "user",
                "description": "The referenced resource type."
              }
            }
          },
          "class": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a class — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "class",
                "description": "The referenced resource type."
              }
            }
          },
          "school": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "org",
                "description": "The referenced resource type."
              }
            }
          },
          "role": {
            "type": "string",
            "enum": [
              "administrator",
              "aide",
              "guardian",
              "parent",
              "proctor",
              "relative",
              "student",
              "teacher"
            ],
            "description": "The user's role in this class enrollment, one of the eight standard OneRoster roles."
          },
          "primary": {
            "type": "boolean",
            "description": "Whether this is the user's primary enrollment in the class."
          },
          "beginDate": {
            "type": "string",
            "format": "date",
            "description": "The start date of this enrollment."
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "The end date of this enrollment."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "user",
          "class",
          "school",
          "role",
          "beginDate",
          "dateLastModified"
        ]
      },
      "ExportBatch": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this export batch."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "batchStatus": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed"
            ],
            "description": "The processing status of this export batch.",
            "default": "pending"
          },
          "destination": {
            "type": "string",
            "maxLength": 512,
            "description": "The destination or download reference for the export package."
          },
          "totalCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Total number of records in the export."
          },
          "processedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of records processed so far."
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the export completed."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "batchStatus",
          "dateLastModified"
        ]
      },
      "ImportBatch": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this import batch."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "batchStatus": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed"
            ],
            "description": "The processing status of this import batch.",
            "default": "pending"
          },
          "source": {
            "type": "string",
            "maxLength": 512,
            "description": "The source identifier or filename of the import package."
          },
          "totalCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Total number of records in the import."
          },
          "processedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of records processed so far."
          },
          "errorCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of records that failed."
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the import completed."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "batchStatus",
          "dateLastModified"
        ]
      },
      "LearningObjectiveResults": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this learning objective results record."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "assessmentResultSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the parent assessment result.",
            "x-references": "assessmentResult.sourcedId",
            "x-onDelete": "restrict"
          },
          "learningObjectiveSetSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the learning objective set.",
            "x-references": "learningObjectiveSet.sourcedId",
            "x-onDelete": "restrict"
          },
          "scores": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "objectiveId": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "scoreScaleValueSourcedId": {
                  "type": "string"
                }
              }
            },
            "description": "Per-objective scores within this set."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "assessmentResultSourcedId",
          "learningObjectiveSetSourcedId",
          "dateLastModified"
        ]
      },
      "LearningObjectiveScoreSet": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this learning objective score set."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "learningObjectiveSetSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the learning objective set.",
            "x-references": "learningObjectiveSet.sourcedId",
            "x-onDelete": "restrict"
          },
          "scoreScaleSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the score scale used for this objective set.",
            "x-references": "scoreScale.sourcedId",
            "x-onDelete": "restrict"
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "learningObjectiveSetSourcedId",
          "scoreScaleSourcedId",
          "dateLastModified"
        ]
      },
      "LearningObjectiveSet": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this learning objective set."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the learning objective set."
          },
          "description": {
            "type": "string",
            "maxLength": 2048,
            "description": "A description of the learning objective set."
          },
          "objectiveIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "External identifiers for the learning objectives in this set."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "title",
          "dateLastModified"
        ]
      },
      "LineItem": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this line item."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the line item."
          },
          "description": {
            "type": "string",
            "maxLength": 2048,
            "description": "A description of the line item."
          },
          "classSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the class this line item belongs to.",
            "x-references": "class.sourcedId",
            "x-onDelete": "restrict"
          },
          "categorySourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the category this line item belongs to.",
            "x-references": "category.sourcedId",
            "x-onDelete": "restrict"
          },
          "assignDate": {
            "type": "string",
            "format": "date",
            "description": "The date this line item was assigned."
          },
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "The date this line item is due."
          },
          "resultValueMin": {
            "type": "number",
            "description": "The minimum possible score for results on this line item."
          },
          "resultValueMax": {
            "type": "number",
            "description": "The maximum possible score for results on this line item."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "title",
          "classSourcedId",
          "categorySourcedId",
          "assignDate",
          "dueDate",
          "dateLastModified"
        ]
      },
      "Org": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The OneRoster sourcedId — the natural business key for this organization, unique within the tenant."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status. Records marked tobedeleted remain queryable for sync consumers rather than being physically removed.",
            "default": "active"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable name of the organization."
          },
          "type": {
            "type": "string",
            "enum": [
              "department",
              "school",
              "district",
              "local",
              "state",
              "national"
            ],
            "description": "The OneRoster organization type within the hierarchy."
          },
          "identifier": {
            "type": "string",
            "maxLength": 256,
            "description": "An optional human-readable identifier for the organization, such as an NCES school ID."
          },
          "parent": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "org",
                "description": "The referenced resource type."
              }
            }
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions for vendor or implementation-specific data.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "name",
          "type",
          "dateLastModified"
        ]
      },
      "Resource": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this resource."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the resource."
          },
          "vendorResourceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The vendor-assigned unique resource identifier."
          },
          "vendorId": {
            "type": "string",
            "maxLength": 256,
            "description": "The identifier of the vendor providing this resource."
          },
          "applicationId": {
            "type": "string",
            "maxLength": 256,
            "description": "The application or tool hosting this resource."
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Roles that have access to this resource."
          },
          "importance": {
            "type": "string",
            "enum": [
              "primary",
              "secondary"
            ],
            "description": "The importance level of this resource in its context."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "title",
          "vendorResourceId",
          "dateLastModified"
        ]
      },
      "Result": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this result."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "lineItemSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the line item this result is for.",
            "x-references": "lineItem.sourcedId",
            "x-onDelete": "restrict"
          },
          "studentSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the student user who received this result.",
            "x-references": "user.sourcedId",
            "x-onDelete": "restrict"
          },
          "score": {
            "type": "number",
            "description": "The numeric score value."
          },
          "scoreStatus": {
            "type": "string",
            "enum": [
              "exempt",
              "fully graded",
              "not submitted",
              "partially graded",
              "submitted"
            ],
            "description": "The grading status of this result."
          },
          "comment": {
            "type": "string",
            "maxLength": 2048,
            "description": "Teacher comment on this result."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "lineItemSourcedId",
          "studentSourcedId",
          "dateLastModified"
        ]
      },
      "ScoreScale": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this score scale."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the score scale."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "title",
          "dateLastModified"
        ]
      },
      "ScoreScaleValue": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this score scale value."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "scoreScaleSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the parent score scale.",
            "x-references": "scoreScale.sourcedId",
            "x-onDelete": "restrict"
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The display value (e.g. A, B+, Pass)."
          },
          "lowerBound": {
            "type": "number",
            "description": "The lower bound of the numeric range for this value."
          },
          "upperBound": {
            "type": "number",
            "description": "The upper bound of the numeric range for this value."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "scoreScaleSourcedId",
          "value",
          "dateLastModified"
        ]
      },
      "User": {
        "type": "object",
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this user."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "givenName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The user's given (first) name."
          },
          "familyName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The user's family (last) name."
          },
          "middleName": {
            "type": "string",
            "maxLength": 256,
            "description": "The user's middle name."
          },
          "preferredFirstName": {
            "type": "string",
            "maxLength": 256,
            "description": "The user's preferred first name (REST) / preferredGivenName (CSV)."
          },
          "preferredLastName": {
            "type": "string",
            "maxLength": 256,
            "description": "The user's preferred last name."
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 512,
            "description": "The user's primary email address."
          },
          "phone": {
            "type": "string",
            "maxLength": 64,
            "description": "The user's phone number."
          },
          "sms": {
            "type": "string",
            "maxLength": 64,
            "description": "The user's SMS-capable phone number."
          },
          "username": {
            "type": "string",
            "maxLength": 256,
            "description": "The user's login username."
          },
          "enabledUser": {
            "type": "boolean",
            "description": "Whether the user account is enabled for login.",
            "default": true
          },
          "org": {
            "type": "object",
            "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
            "required": [
              "sourcedId",
              "type"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The dereferenceable URL of the referenced resource."
              },
              "sourcedId": {
                "type": "string",
                "description": "The sourcedId of the referenced resource."
              },
              "type": {
                "type": "string",
                "const": "org",
                "description": "The referenced resource type."
              }
            }
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "object",
              "$ref": "#/$defs/userRole"
            },
            "description": "The user's role assignments within organizations."
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "object",
              "$ref": "#/$defs/userId"
            },
            "description": "External identifier bindings for this user."
          },
          "agents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "href": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Dereferenceable URI of the referenced agent user."
                },
                "sourcedId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 256,
                  "description": "The sourcedId of the agent user."
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "user"
                  ],
                  "description": "The GUIDRef type literal — always user."
                }
              },
              "required": [
                "href",
                "sourcedId",
                "type"
              ]
            },
            "description": "GUIDRefs to agent users (parents/guardians for a student) — USR-04. Nested inside jsonb, so not a DB FK; validated by the import adapter at write time."
          },
          "grades": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Grade levels applicable to this user."
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "GUIDRef sourcedIds of resources associated with this user."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Server-managed last-update timestamp (RFC 3339). Read-only — never accepted on create or update."
          }
        },
        "required": [
          "sourcedId",
          "status",
          "givenName",
          "familyName",
          "dateLastModified"
        ],
        "$defs": {
          "userRole": {
            "type": "object",
            "properties": {
              "roleType": {
                "type": "string",
                "enum": [
                  "primary",
                  "secondary"
                ],
                "description": "Whether this is the user's primary or secondary role."
              },
              "role": {
                "type": "string",
                "enum": [
                  "administrator",
                  "aide",
                  "guardian",
                  "parent",
                  "proctor",
                  "relative",
                  "student",
                  "teacher"
                ],
                "description": "The OneRoster role type."
              },
              "org": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Dereferenceable URI of the referenced org."
                  },
                  "sourcedId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 256,
                    "description": "The sourcedId of the organization for this role assignment."
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "org"
                    ],
                    "description": "The GUIDRef type literal — always org."
                  }
                },
                "required": [
                  "href",
                  "sourcedId",
                  "type"
                ],
                "description": "GUIDRef to the organization for this role assignment (USR-02). Nested inside jsonb, so not a DB FK — referential integrity is validated by the import adapter at write time."
              },
              "beginDate": {
                "type": "string",
                "format": "date",
                "description": "When this role assignment begins."
              },
              "endDate": {
                "type": "string",
                "format": "date",
                "description": "When this role assignment ends."
              }
            },
            "required": [
              "roleType",
              "role",
              "org"
            ]
          },
          "userId": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "maxLength": 256,
                "description": "The identifier type (e.g. 'LDAP', 'Fed', 'LTI')."
              },
              "identifier": {
                "type": "string",
                "maxLength": 512,
                "description": "The identifier value."
              }
            },
            "required": [
              "type",
              "identifier"
            ]
          }
        }
      },
      "CreateAcademicSessionRequest": {
        "type": "object",
        "description": "Create-AcademicSession request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "title",
          "type",
          "startDate",
          "endDate",
          "schoolYear",
          "schoolSourcedId"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this academic session, unique within the tenant."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the academic session."
          },
          "type": {
            "type": "string",
            "enum": [
              "schoolYear",
              "term",
              "gradingPeriod",
              "semester"
            ],
            "description": "The type of academic session in the calendar hierarchy."
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "The start date of the academic session."
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "The end date of the academic session."
          },
          "schoolYear": {
            "type": "string",
            "pattern": "^[0-9]{4}$",
            "description": "The four-digit school year this session belongs to."
          },
          "parent": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a academicSession — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "academicSession",
                    "description": "The referenced resource type."
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "A OneRoster GUIDRef to a academicSession, or the bare sourcedId string — both write the scalar parent."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "schoolSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "School org sourcedId for the academic session. Required so Ed-Fi session derivedHash legs are NOT NULL; district-wide schoolYear rows set this to the district org.",
            "x-references": "org.sourcedId",
            "x-onDelete": "restrict"
          }
        }
      },
      "UpdateAcademicSessionRequest": {
        "type": "object",
        "description": "Update-AcademicSession request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the academic session."
          },
          "type": {
            "type": "string",
            "enum": [
              "schoolYear",
              "term",
              "gradingPeriod",
              "semester"
            ],
            "description": "The type of academic session in the calendar hierarchy."
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "The start date of the academic session."
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "The end date of the academic session."
          },
          "schoolYear": {
            "type": "string",
            "pattern": "^[0-9]{4}$",
            "description": "The four-digit school year this session belongs to."
          },
          "parent": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a academicSession — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "academicSession",
                    "description": "The referenced resource type."
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "A OneRoster GUIDRef to a academicSession, or the bare sourcedId string — both write the scalar parent."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          },
          "schoolSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "School org sourcedId for the academic session. Required so Ed-Fi session derivedHash legs are NOT NULL; district-wide schoolYear rows set this to the district org.",
            "x-references": "org.sourcedId",
            "x-onDelete": "restrict"
          }
        }
      },
      "CreateAssessmentLineItemRequest": {
        "type": "object",
        "description": "Create-AssessmentLineItem request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "lineItemSourcedId"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this assessment line item."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "lineItemSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the line item this assessment is linked to.",
            "x-references": "lineItem.sourcedId",
            "x-onDelete": "restrict"
          },
          "scoreScaleSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the score scale used for this assessment.",
            "x-references": "scoreScale.sourcedId",
            "x-onDelete": "restrict"
          },
          "learningObjectiveSetSourcedIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The sourcedIds of learning objective sets aligned to this assessment."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateAssessmentLineItemRequest": {
        "type": "object",
        "description": "Update-AssessmentLineItem request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "lineItemSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the line item this assessment is linked to.",
            "x-references": "lineItem.sourcedId",
            "x-onDelete": "restrict"
          },
          "scoreScaleSourcedId": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 256,
            "description": "The sourcedId of the score scale used for this assessment.",
            "x-references": "scoreScale.sourcedId",
            "x-onDelete": "restrict"
          },
          "learningObjectiveSetSourcedIds": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "The sourcedIds of learning objective sets aligned to this assessment."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateAssessmentResultRequest": {
        "type": "object",
        "description": "Create-AssessmentResult request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "assessmentLineItemSourcedId",
          "resultSourcedId"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this assessment result."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "assessmentLineItemSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the assessment line item.",
            "x-references": "assessmentLineItem.sourcedId",
            "x-onDelete": "restrict"
          },
          "resultSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the result record.",
            "x-references": "result.sourcedId",
            "x-onDelete": "restrict"
          },
          "scoreScaleValueSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the score scale value assigned.",
            "x-references": "scoreScaleValue.sourcedId",
            "x-onDelete": "restrict"
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateAssessmentResultRequest": {
        "type": "object",
        "description": "Update-AssessmentResult request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "assessmentLineItemSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the assessment line item.",
            "x-references": "assessmentLineItem.sourcedId",
            "x-onDelete": "restrict"
          },
          "resultSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the result record.",
            "x-references": "result.sourcedId",
            "x-onDelete": "restrict"
          },
          "scoreScaleValueSourcedId": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 256,
            "description": "The sourcedId of the score scale value assigned.",
            "x-references": "scoreScaleValue.sourcedId",
            "x-onDelete": "restrict"
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateCategoryRequest": {
        "type": "object",
        "description": "Create-Category request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "title"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this category."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the category."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateCategoryRequest": {
        "type": "object",
        "description": "Update-Category request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the category."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateClassRequest": {
        "type": "object",
        "description": "Create-Class request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "title",
          "school"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this class."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the class section."
          },
          "classCode": {
            "type": "string",
            "maxLength": 256,
            "description": "An optional class section code."
          },
          "classType": {
            "type": "string",
            "pattern": "^(homeroom|scheduled|ext:.+)$",
            "description": "The class type: homeroom, scheduled, or a governed ext: extension."
          },
          "location": {
            "type": "string",
            "maxLength": 512,
            "description": "Physical or virtual location of the class."
          },
          "course": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a course — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "course",
                    "description": "The referenced resource type."
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "A OneRoster GUIDRef to a course, or the bare sourcedId string — both write the scalar course."
          },
          "school": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "org",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a org, or the bare sourcedId string — both write the scalar school."
          },
          "termSourcedIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "SourcedIds of academic session terms this class spans."
          },
          "grades": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Grade levels applicable to this class."
          },
          "subjects": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subject names applicable to this class."
          },
          "subjectCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subject codes applicable to this class."
          },
          "periods": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Period identifiers when this class meets."
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "GUIDRef sourcedIds of resources associated with this class."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateClassRequest": {
        "type": "object",
        "description": "Update-Class request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the class section."
          },
          "classCode": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 256,
            "description": "An optional class section code."
          },
          "classType": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^(homeroom|scheduled|ext:.+)$",
            "description": "The class type: homeroom, scheduled, or a governed ext: extension."
          },
          "location": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 512,
            "description": "Physical or virtual location of the class."
          },
          "course": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a course — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "course",
                    "description": "The referenced resource type."
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "A OneRoster GUIDRef to a course, or the bare sourcedId string — both write the scalar course."
          },
          "school": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "org",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a org, or the bare sourcedId string — both write the scalar school."
          },
          "termSourcedIds": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "SourcedIds of academic session terms this class spans."
          },
          "grades": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Grade levels applicable to this class."
          },
          "subjects": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Subject names applicable to this class."
          },
          "subjectCodes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Subject codes applicable to this class."
          },
          "periods": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Period identifiers when this class meets."
          },
          "resources": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "GUIDRef sourcedIds of resources associated with this class."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateCourseRequest": {
        "type": "object",
        "description": "Create-Course request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "title",
          "courseCode",
          "org"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this course."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the course."
          },
          "courseCode": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The course code assigned by the organization."
          },
          "org": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "org",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a org, or the bare sourcedId string — both write the scalar org."
          },
          "schoolYear": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a academicSession — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "academicSession",
                    "description": "The referenced resource type."
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "A OneRoster GUIDRef to a academicSession, or the bare sourcedId string — both write the scalar schoolYear."
          },
          "grades": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Grade levels applicable to this course."
          },
          "subjects": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subject names applicable to this course."
          },
          "subjectCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subject codes (e.g. SCED codes) applicable to this course."
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "GUIDRef sourcedIds of resources associated with this course."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateCourseRequest": {
        "type": "object",
        "description": "Update-Course request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the course."
          },
          "courseCode": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The course code assigned by the organization."
          },
          "org": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "org",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a org, or the bare sourcedId string — both write the scalar org."
          },
          "schoolYear": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a academicSession — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "academicSession",
                    "description": "The referenced resource type."
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "A OneRoster GUIDRef to a academicSession, or the bare sourcedId string — both write the scalar schoolYear."
          },
          "grades": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Grade levels applicable to this course."
          },
          "subjects": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Subject names applicable to this course."
          },
          "subjectCodes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Subject codes (e.g. SCED codes) applicable to this course."
          },
          "resources": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "GUIDRef sourcedIds of resources associated with this course."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateDemographicsRequest": {
        "type": "object",
        "description": "Create-Demographics request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The sourcedId matching the user this demographics record describes.",
            "x-references": "user.sourcedId",
            "x-onDelete": "cascade"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "birthDate": {
            "type": "string",
            "format": "date",
            "description": "The user's date of birth."
          },
          "sex": {
            "type": "string",
            "enum": [
              "male",
              "female",
              "unspecified"
            ],
            "description": "The user's biological sex."
          },
          "americanIndianOrAlaskaNative": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "asian": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "blackOrAfricanAmerican": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "nativeHawaiianOrOtherPacificIslander": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "white": {
            "type": "boolean",
            "description": "CEDS race indicator."
          },
          "demographicRaceTwoOrMoreRaces": {
            "type": "boolean",
            "description": "CEDS indicator for two or more races."
          },
          "hispanicOrLatinoEthnicity": {
            "type": "boolean",
            "description": "CEDS Hispanic/Latino ethnicity indicator."
          },
          "countryOfBirthCode": {
            "type": "string",
            "maxLength": 10,
            "description": "ISO country code of the user's country of birth."
          },
          "stateOfBirthAbbreviation": {
            "type": "string",
            "maxLength": 10,
            "description": "State abbreviation of the user's state of birth."
          },
          "cityOfBirth": {
            "type": "string",
            "maxLength": 256,
            "description": "The user's city of birth."
          },
          "publicSchoolResidenceStatus": {
            "type": "string",
            "maxLength": 256,
            "description": "Public school residence status code."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateDemographicsRequest": {
        "type": "object",
        "description": "Update-Demographics request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "active",
              "tobedeleted",
              null
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "birthDate": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "The user's date of birth."
          },
          "sex": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "male",
              "female",
              "unspecified",
              null
            ],
            "description": "The user's biological sex."
          },
          "americanIndianOrAlaskaNative": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "CEDS race indicator."
          },
          "asian": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "CEDS race indicator."
          },
          "blackOrAfricanAmerican": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "CEDS race indicator."
          },
          "nativeHawaiianOrOtherPacificIslander": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "CEDS race indicator."
          },
          "white": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "CEDS race indicator."
          },
          "demographicRaceTwoOrMoreRaces": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "CEDS indicator for two or more races."
          },
          "hispanicOrLatinoEthnicity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "CEDS Hispanic/Latino ethnicity indicator."
          },
          "countryOfBirthCode": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 10,
            "description": "ISO country code of the user's country of birth."
          },
          "stateOfBirthAbbreviation": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 10,
            "description": "State abbreviation of the user's state of birth."
          },
          "cityOfBirth": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 256,
            "description": "The user's city of birth."
          },
          "publicSchoolResidenceStatus": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 256,
            "description": "Public school residence status code."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateEnrollmentRequest": {
        "type": "object",
        "description": "Create-Enrollment request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "user",
          "class",
          "school",
          "role",
          "beginDate"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this enrollment."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "user": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a user — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "user",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a user, or the bare sourcedId string — both write the scalar user."
          },
          "class": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a class — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "class",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a class, or the bare sourcedId string — both write the scalar class."
          },
          "school": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "org",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a org, or the bare sourcedId string — both write the scalar school."
          },
          "role": {
            "type": "string",
            "enum": [
              "administrator",
              "aide",
              "guardian",
              "parent",
              "proctor",
              "relative",
              "student",
              "teacher"
            ],
            "description": "The user's role in this class enrollment, one of the eight standard OneRoster roles."
          },
          "primary": {
            "type": "boolean",
            "description": "Whether this is the user's primary enrollment in the class."
          },
          "beginDate": {
            "type": "string",
            "format": "date",
            "description": "The start date of this enrollment."
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "The end date of this enrollment."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateEnrollmentRequest": {
        "type": "object",
        "description": "Update-Enrollment request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "user": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a user — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "user",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a user, or the bare sourcedId string — both write the scalar user."
          },
          "class": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a class — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "class",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a class, or the bare sourcedId string — both write the scalar class."
          },
          "school": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "description": "A OneRoster GUIDRef to a org — the referenced resource's sourcedId, its type, and a dereferenceable href. On write, either this object (its sourcedId is used) or the bare sourcedId string is accepted.",
                "required": [
                  "sourcedId",
                  "type"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The dereferenceable URL of the referenced resource."
                  },
                  "sourcedId": {
                    "type": "string",
                    "description": "The sourcedId of the referenced resource."
                  },
                  "type": {
                    "type": "string",
                    "const": "org",
                    "description": "The referenced resource type."
                  }
                }
              }
            ],
            "description": "A OneRoster GUIDRef to a org, or the bare sourcedId string — both write the scalar school."
          },
          "role": {
            "type": "string",
            "enum": [
              "administrator",
              "aide",
              "guardian",
              "parent",
              "proctor",
              "relative",
              "student",
              "teacher"
            ],
            "description": "The user's role in this class enrollment, one of the eight standard OneRoster roles."
          },
          "primary": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether this is the user's primary enrollment in the class."
          },
          "beginDate": {
            "type": "string",
            "format": "date",
            "description": "The start date of this enrollment."
          },
          "endDate": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "The end date of this enrollment."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateExportBatchRequest": {
        "type": "object",
        "description": "Create-ExportBatch request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "batchStatus"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this export batch."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "batchStatus": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed"
            ],
            "description": "The processing status of this export batch.",
            "default": "pending"
          },
          "destination": {
            "type": "string",
            "maxLength": 512,
            "description": "The destination or download reference for the export package."
          },
          "totalCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Total number of records in the export."
          },
          "processedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of records processed so far."
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the export completed."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateExportBatchRequest": {
        "type": "object",
        "description": "Update-ExportBatch request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "batchStatus": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed"
            ],
            "description": "The processing status of this export batch.",
            "default": "pending"
          },
          "destination": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 512,
            "description": "The destination or download reference for the export package."
          },
          "totalCount": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Total number of records in the export."
          },
          "processedCount": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Number of records processed so far."
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the export completed."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateImportBatchRequest": {
        "type": "object",
        "description": "Create-ImportBatch request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "batchStatus"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this import batch."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "batchStatus": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed"
            ],
            "description": "The processing status of this import batch.",
            "default": "pending"
          },
          "source": {
            "type": "string",
            "maxLength": 512,
            "description": "The source identifier or filename of the import package."
          },
          "totalCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Total number of records in the import."
          },
          "processedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of records processed so far."
          },
          "errorCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of records that failed."
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the import completed."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateImportBatchRequest": {
        "type": "object",
        "description": "Update-ImportBatch request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "batchStatus": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed"
            ],
            "description": "The processing status of this import batch.",
            "default": "pending"
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 512,
            "description": "The source identifier or filename of the import package."
          },
          "totalCount": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Total number of records in the import."
          },
          "processedCount": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Number of records processed so far."
          },
          "errorCount": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Number of records that failed."
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the import completed."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateLearningObjectiveResultsRequest": {
        "type": "object",
        "description": "Create-LearningObjectiveResults request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "assessmentResultSourcedId",
          "learningObjectiveSetSourcedId"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this learning objective results record."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "assessmentResultSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the parent assessment result.",
            "x-references": "assessmentResult.sourcedId",
            "x-onDelete": "restrict"
          },
          "learningObjectiveSetSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the learning objective set.",
            "x-references": "learningObjectiveSet.sourcedId",
            "x-onDelete": "restrict"
          },
          "scores": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "objectiveId": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "scoreScaleValueSourcedId": {
                  "type": "string"
                }
              }
            },
            "description": "Per-objective scores within this set."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateLearningObjectiveResultsRequest": {
        "type": "object",
        "description": "Update-LearningObjectiveResults request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "assessmentResultSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the parent assessment result.",
            "x-references": "assessmentResult.sourcedId",
            "x-onDelete": "restrict"
          },
          "learningObjectiveSetSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the learning objective set.",
            "x-references": "learningObjectiveSet.sourcedId",
            "x-onDelete": "restrict"
          },
          "scores": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "object",
              "properties": {
                "objectiveId": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "scoreScaleValueSourcedId": {
                  "type": "string"
                }
              }
            },
            "description": "Per-objective scores within this set."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateLearningObjectiveScoreSetRequest": {
        "type": "object",
        "description": "Create-LearningObjectiveScoreSet request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "learningObjectiveSetSourcedId",
          "scoreScaleSourcedId"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this learning objective score set."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "learningObjectiveSetSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the learning objective set.",
            "x-references": "learningObjectiveSet.sourcedId",
            "x-onDelete": "restrict"
          },
          "scoreScaleSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the score scale used for this objective set.",
            "x-references": "scoreScale.sourcedId",
            "x-onDelete": "restrict"
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateLearningObjectiveScoreSetRequest": {
        "type": "object",
        "description": "Update-LearningObjectiveScoreSet request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "learningObjectiveSetSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the learning objective set.",
            "x-references": "learningObjectiveSet.sourcedId",
            "x-onDelete": "restrict"
          },
          "scoreScaleSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the score scale used for this objective set.",
            "x-references": "scoreScale.sourcedId",
            "x-onDelete": "restrict"
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateLearningObjectiveSetRequest": {
        "type": "object",
        "description": "Create-LearningObjectiveSet request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "title"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this learning objective set."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the learning objective set."
          },
          "description": {
            "type": "string",
            "maxLength": 2048,
            "description": "A description of the learning objective set."
          },
          "objectiveIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "External identifiers for the learning objectives in this set."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateLearningObjectiveSetRequest": {
        "type": "object",
        "description": "Update-LearningObjectiveSet request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the learning objective set."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 2048,
            "description": "A description of the learning objective set."
          },
          "objectiveIds": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "External identifiers for the learning objectives in this set."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateLineItemRequest": {
        "type": "object",
        "description": "Create-LineItem request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "title",
          "classSourcedId",
          "categorySourcedId",
          "assignDate",
          "dueDate"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this line item."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the line item."
          },
          "description": {
            "type": "string",
            "maxLength": 2048,
            "description": "A description of the line item."
          },
          "classSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the class this line item belongs to.",
            "x-references": "class.sourcedId",
            "x-onDelete": "restrict"
          },
          "categorySourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the category this line item belongs to.",
            "x-references": "category.sourcedId",
            "x-onDelete": "restrict"
          },
          "assignDate": {
            "type": "string",
            "format": "date",
            "description": "The date this line item was assigned."
          },
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "The date this line item is due."
          },
          "resultValueMin": {
            "type": "number",
            "description": "The minimum possible score for results on this line item."
          },
          "resultValueMax": {
            "type": "number",
            "description": "The maximum possible score for results on this line item."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateLineItemRequest": {
        "type": "object",
        "description": "Update-LineItem request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the line item."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 2048,
            "description": "A description of the line item."
          },
          "classSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the class this line item belongs to.",
            "x-references": "class.sourcedId",
            "x-onDelete": "restrict"
          },
          "categorySourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the category this line item belongs to.",
            "x-references": "category.sourcedId",
            "x-onDelete": "restrict"
          },
          "assignDate": {
            "type": "string",
            "format": "date",
            "description": "The date this line item was assigned."
          },
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "The date this line item is due."
          },
          "resultValueMin": {
            "type": [
              "number",
              "null"
            ],
            "description": "The minimum possible score for results on this line item."
          },
          "resultValueMax": {
            "type": [
              "number",
              "null"
            ],
            "description": "The maximum possible score for results on this line item."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateResourceRequest": {
        "type": "object",
        "description": "Create-Resource request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "title",
          "vendorResourceId"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this resource."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the resource."
          },
          "vendorResourceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The vendor-assigned unique resource identifier."
          },
          "vendorId": {
            "type": "string",
            "maxLength": 256,
            "description": "The identifier of the vendor providing this resource."
          },
          "applicationId": {
            "type": "string",
            "maxLength": 256,
            "description": "The application or tool hosting this resource."
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Roles that have access to this resource."
          },
          "importance": {
            "type": "string",
            "enum": [
              "primary",
              "secondary"
            ],
            "description": "The importance level of this resource in its context."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateResourceRequest": {
        "type": "object",
        "description": "Update-Resource request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the resource."
          },
          "vendorId": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 256,
            "description": "The identifier of the vendor providing this resource."
          },
          "applicationId": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 256,
            "description": "The application or tool hosting this resource."
          },
          "roles": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Roles that have access to this resource."
          },
          "importance": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "primary",
              "secondary",
              null
            ],
            "description": "The importance level of this resource in its context."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateResultRequest": {
        "type": "object",
        "description": "Create-Result request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "lineItemSourcedId",
          "studentSourcedId"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this result."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "lineItemSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the line item this result is for.",
            "x-references": "lineItem.sourcedId",
            "x-onDelete": "restrict"
          },
          "studentSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the student user who received this result.",
            "x-references": "user.sourcedId",
            "x-onDelete": "restrict"
          },
          "score": {
            "type": "number",
            "description": "The numeric score value."
          },
          "scoreStatus": {
            "type": "string",
            "enum": [
              "exempt",
              "fully graded",
              "not submitted",
              "partially graded",
              "submitted"
            ],
            "description": "The grading status of this result."
          },
          "comment": {
            "type": "string",
            "maxLength": 2048,
            "description": "Teacher comment on this result."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateResultRequest": {
        "type": "object",
        "description": "Update-Result request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "lineItemSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the line item this result is for.",
            "x-references": "lineItem.sourcedId",
            "x-onDelete": "restrict"
          },
          "studentSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the student user who received this result.",
            "x-references": "user.sourcedId",
            "x-onDelete": "restrict"
          },
          "score": {
            "type": [
              "number",
              "null"
            ],
            "description": "The numeric score value."
          },
          "scoreStatus": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "exempt",
              "fully graded",
              "not submitted",
              "partially graded",
              "submitted",
              null
            ],
            "description": "The grading status of this result."
          },
          "comment": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 2048,
            "description": "Teacher comment on this result."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateScoreScaleRequest": {
        "type": "object",
        "description": "Create-ScoreScale request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "title"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this score scale."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the score scale."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateScoreScaleRequest": {
        "type": "object",
        "description": "Update-ScoreScale request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The human-readable title of the score scale."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "CreateScoreScaleValueRequest": {
        "type": "object",
        "description": "Create-ScoreScaleValue request body (readOnly/server-managed fields excluded).",
        "required": [
          "sourcedId",
          "status",
          "scoreScaleSourcedId",
          "value"
        ],
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The natural business key for this score scale value."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "scoreScaleSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the parent score scale.",
            "x-references": "scoreScale.sourcedId",
            "x-onDelete": "restrict"
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The display value (e.g. A, B+, Pass)."
          },
          "lowerBound": {
            "type": "number",
            "description": "The lower bound of the numeric range for this value."
          },
          "upperBound": {
            "type": "number",
            "description": "The upper bound of the numeric range for this value."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "UpdateScoreScaleValueRequest": {
        "type": "object",
        "description": "Update-ScoreScaleValue request body (partial — all fields optional; readOnly + immutable fields excluded; null clears a nullable column).",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "tobedeleted"
            ],
            "description": "OneRoster sync status.",
            "default": "active"
          },
          "scoreScaleSourcedId": {
            "type": "string",
            "maxLength": 256,
            "description": "The sourcedId of the parent score scale.",
            "x-references": "scoreScale.sourcedId",
            "x-onDelete": "restrict"
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The display value (e.g. A, B+, Pass)."
          },
          "lowerBound": {
            "type": [
              "number",
              "null"
            ],
            "description": "The lower bound of the numeric range for this value."
          },
          "upperBound": {
            "type": [
              "number",
              "null"
            ],
            "description": "The upper bound of the numeric range for this value."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional metadata extensions.",
            "additionalProperties": true
          }
        }
      },
      "imsx_StatusInfo": {
        "type": "object",
        "description": "1EdTech imsx_StatusInfo — the status/error payload mandated on every non-2xx response.",
        "required": [
          "imsx_codeMajor",
          "imsx_severity"
        ],
        "properties": {
          "imsx_codeMajor": {
            "type": "string",
            "enum": [
              "success",
              "processing",
              "failure",
              "unsupported"
            ],
            "description": "The major status code."
          },
          "imsx_severity": {
            "type": "string",
            "enum": [
              "status",
              "warning",
              "error"
            ],
            "description": "The severity of the status."
          },
          "imsx_description": {
            "type": "string",
            "description": "A human-readable description of the status."
          },
          "imsx_codeMinor": {
            "type": "object",
            "description": "The minor status codes qualifying the major code.",
            "required": [
              "imsx_codeMinorField"
            ],
            "properties": {
              "imsx_codeMinorField": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "imsx_codeMinorFieldName",
                    "imsx_codeMinorFieldValue"
                  ],
                  "properties": {
                    "imsx_codeMinorFieldName": {
                      "type": "string",
                      "description": "The system the code applies to."
                    },
                    "imsx_codeMinorFieldValue": {
                      "type": "string",
                      "description": "The minor status code value."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "servers": [
    {
      "url": "https://oneroster.platform4.alphaschool.dev"
    }
  ]
}
