[{"data":1,"prerenderedAt":945},["ShallowReactive",2],{"api-nav":3,"api-changelog:1-1-0":351},[4,28,57,95,115,301,317,331],{"id":5,"title":6,"links":7,"groups":27},"start","Start here",[8,11,15,18,21,24],{"title":9,"to":10},"Overview","\u002Fapi",{"title":12,"to":13,"status":14},"Quickstart","\u002Fapi\u002Fquickstart","available",{"title":16,"to":17,"status":14},"Environments","\u002Fapi\u002Fenvironments",{"title":19,"to":20,"status":14},"Authentication","\u002Fapi\u002Fauthentication",{"title":22,"to":23,"status":14},"Organizations","\u002Fapi\u002Forganizations",{"title":25,"to":26,"status":14},"Permissions","\u002Fapi\u002Fpermissions",[],{"id":29,"title":30,"links":31,"groups":56},"concepts","Concepts",[32,35,38,41,44,47,50,53],{"title":33,"to":34,"status":14},"Requests and responses","\u002Fapi\u002Frequests-and-responses",{"title":36,"to":37,"status":14},"Identifiers","\u002Fapi\u002Fidentifiers",{"title":39,"to":40,"status":14},"Pagination","\u002Fapi\u002Fpagination",{"title":42,"to":43},"Errors","\u002Fapi\u002Ferrors",{"title":45,"to":46,"status":14},"Rate limits","\u002Fapi\u002Frate-limits",{"title":48,"to":49,"status":14},"Retries","\u002Fapi\u002Fretries-and-idempotency",{"title":51,"to":52,"status":14},"Security","\u002Fapi\u002Fsecurity",{"title":54,"to":55,"status":14},"Versioning","\u002Fapi\u002Fversioning",[],{"id":58,"title":59,"links":60,"groups":94},"resources","Guides",[61,64,67,70,73,76,79,82,85,88,91],{"title":62,"to":63,"status":14},"Students","\u002Fapi\u002Fguides\u002Fstudents",{"title":65,"to":66,"status":14},"Bulk registration","\u002Fapi\u002Fguides\u002Fbulk-registration",{"title":68,"to":69,"status":14},"Passwords","\u002Fapi\u002Fguides\u002Fpasswords",{"title":71,"to":72,"status":14},"Supervisors","\u002Fapi\u002Fguides\u002Fsupervisors",{"title":74,"to":75,"status":14},"Reference data","\u002Fapi\u002Fguides\u002Freference-data",{"title":77,"to":78,"status":14},"API account","\u002Fapi\u002Fguides\u002Fapi-account",{"title":80,"to":81,"status":14},"Sign-in links","\u002Fapi\u002Fguides\u002Fsign-in-links",{"title":83,"to":84,"status":14},"Exams","\u002Fapi\u002Fguides\u002Fexams",{"title":86,"to":87,"status":14},"Applications","\u002Fapi\u002Fguides\u002Fapplications",{"title":89,"to":90,"status":14},"Group challenges","\u002Fapi\u002Fguides\u002Fgroup-challenges",{"title":92,"to":93,"status":14},"Certificates and reports","\u002Fapi\u002Fguides\u002Fcertificates-and-reports",[],{"id":96,"title":97,"links":98,"groups":114},"tutorials","Tutorials",[99,102,105,108,111],{"title":100,"to":101,"status":14},"Register and apply","\u002Fapi\u002Ftutorials\u002Fregister-and-apply",{"title":103,"to":104,"status":14},"Send a student to the panel","\u002Fapi\u002Ftutorials\u002Fsend-student-to-panel",{"title":106,"to":107,"status":14},"Change an application","\u002Fapi\u002Ftutorials\u002Fchange-an-application",{"title":109,"to":110,"status":14},"Collect results","\u002Fapi\u002Ftutorials\u002Fcollect-results",{"title":112,"to":113,"status":14},"Token handling","\u002Fapi\u002Ftutorials\u002Ftoken-handling",[],{"id":116,"title":117,"links":118,"groups":125},"reference","Reference",[119,122],{"title":120,"to":121},"All endpoints","\u002Fapi\u002Freference",{"title":123,"to":124},"Sandbox console","\u002Fapi\u002Fconsole",[126,135,145,166,206,212,230,255,271],{"tag":127,"slug":128,"links":129},"Health","health",[130],{"title":131,"to":132,"method":133,"deprecated":134},"Check that the API is up","\u002Fapi\u002Freference\u002Fget-health","GET",false,{"tag":77,"slug":136,"links":137},"api-account",[138,142],{"title":139,"to":140,"method":141,"deprecated":134},"Revoke the token you send, before it expires","\u002Fapi\u002Freference\u002Frevoke-token","POST",{"title":143,"to":144,"method":133,"deprecated":134},"Fetch the API account your token belongs to","\u002Fapi\u002Freference\u002Fget-current-api-account",{"tag":74,"slug":146,"links":147},"reference-data",[148,151,154,157,160,163],{"title":149,"to":150,"method":133,"deprecated":134},"List the countries a student can be registered in","\u002Fapi\u002Freference\u002Flist-countries",{"title":152,"to":153,"method":133,"deprecated":134},"Fetch one country by its id","\u002Fapi\u002Freference\u002Fget-country",{"title":155,"to":156,"method":133,"deprecated":134},"List the grades a student can be registered with","\u002Fapi\u002Freference\u002Flist-grades",{"title":158,"to":159,"method":133,"deprecated":134},"Fetch one grade by its id","\u002Fapi\u002Freference\u002Fget-grade",{"title":161,"to":162,"method":133,"deprecated":134},"List the organizations and their ids","\u002Fapi\u002Freference\u002Flist-organizations",{"title":164,"to":165,"method":133,"deprecated":134},"Fetch one organization by its id","\u002Fapi\u002Freference\u002Fget-organization",{"tag":62,"slug":167,"links":168},"students",[169,172,175,178,181,184,187,191,194,197,200,203],{"title":170,"to":171,"method":133,"deprecated":134},"List your students","\u002Fapi\u002Freference\u002Flist-students",{"title":173,"to":174,"method":141,"deprecated":134},"Register a student","\u002Fapi\u002Freference\u002Fregister-student",{"title":176,"to":177,"method":141,"deprecated":134},"Check a registration without registering the student","\u002Fapi\u002Freference\u002Fcheck-student-registration",{"title":179,"to":180,"method":141,"deprecated":134},"Register many students at once","\u002Fapi\u002Freference\u002Fcreate-student-import",{"title":182,"to":183,"method":133,"deprecated":134},"Follow a batch of students you sent","\u002Fapi\u002Freference\u002Fget-student-import",{"title":185,"to":186,"method":133,"deprecated":134},"Fetch one of your students","\u002Fapi\u002Freference\u002Fget-student",{"title":188,"to":189,"method":190,"deprecated":134},"Update one of your students","\u002Fapi\u002Freference\u002Fupdate-student","PUT",{"title":192,"to":193,"method":190,"deprecated":134},"Set the sign-in password of one of your students","\u002Fapi\u002Freference\u002Fset-student-password",{"title":195,"to":196,"method":133,"deprecated":134},"List your students who can use this organization","\u002Fapi\u002Freference\u002Flist-org-students",{"title":198,"to":199,"method":133,"deprecated":134},"Fetch one of your students, if they can use this organization","\u002Fapi\u002Freference\u002Fget-org-student",{"title":201,"to":202,"method":190,"deprecated":134},"Update one of your students and give them access to this organization","\u002Fapi\u002Freference\u002Fupdate-org-student",{"title":204,"to":205,"method":190,"deprecated":134},"Link one of your students to a supervisor on this organization","\u002Fapi\u002Freference\u002Flink-student-supervisor",{"tag":80,"slug":207,"links":208},"sign-in-links",[209],{"title":210,"to":211,"method":141,"deprecated":134},"Create a single-use sign-in link for one of your students","\u002Fapi\u002Freference\u002Fcreate-signin-link",{"tag":83,"slug":213,"links":214},"exams",[215,218,221,224,227],{"title":216,"to":217,"method":133,"deprecated":134},"List the exams open for applications","\u002Fapi\u002Freference\u002Flist-exams",{"title":219,"to":220,"method":133,"deprecated":134},"List an organization’s exam categories","\u002Fapi\u002Freference\u002Flist-exam-categories",{"title":222,"to":223,"method":133,"deprecated":134},"Fetch one exam category","\u002Fapi\u002Freference\u002Fget-exam-category",{"title":225,"to":226,"method":133,"deprecated":134},"List the exams one of your students can apply to","\u002Fapi\u002Freference\u002Flist-available-exams",{"title":228,"to":229,"method":133,"deprecated":134},"Fetch one exam that is open for applications","\u002Fapi\u002Freference\u002Fget-exam",{"tag":86,"slug":231,"links":232},"applications",[233,236,239,242,245,248,251],{"title":234,"to":235,"method":133,"deprecated":134},"List your students’ applications in this organization","\u002Fapi\u002Freference\u002Flist-applications",{"title":237,"to":238,"method":141,"deprecated":134},"Enter one of your students for an exam","\u002Fapi\u002Freference\u002Fcreate-application",{"title":240,"to":241,"method":133,"deprecated":134},"List your students’ applications for one exam","\u002Fapi\u002Freference\u002Flist-exam-applications",{"title":243,"to":244,"method":133,"deprecated":134},"List one of your students’ applications in this organization","\u002Fapi\u002Freference\u002Flist-student-applications",{"title":246,"to":247,"method":133,"deprecated":134},"Fetch one of your students’ applications","\u002Fapi\u002Freference\u002Fget-application",{"title":249,"to":250,"method":190,"deprecated":134},"Move one of your students’ applications to another exam","\u002Fapi\u002Freference\u002Fmove-application",{"title":252,"to":253,"method":254,"deprecated":134},"Withdraw one of your students from an exam","\u002Fapi\u002Freference\u002Fdelete-application","DELETE",{"tag":256,"slug":257,"links":258},"Documents","documents",[259,262,265,268],{"title":260,"to":261,"method":133,"deprecated":134},"Download a certificate file","\u002Fapi\u002Freference\u002Fdownload-certificate",{"title":263,"to":264,"method":133,"deprecated":134},"List one of your students’ released certificates","\u002Fapi\u002Freference\u002Flist-student-certificates",{"title":266,"to":267,"method":133,"deprecated":134},"Download a result report file","\u002Fapi\u002Freference\u002Fdownload-report",{"title":269,"to":270,"method":133,"deprecated":134},"List one of your students’ released result reports","\u002Fapi\u002Freference\u002Flist-student-reports",{"tag":89,"slug":272,"links":273},"group-challenges",[274,277,280,283,286,289,292,295,298],{"title":275,"to":276,"method":133,"deprecated":134},"List the group challenges an organization runs","\u002Fapi\u002Freference\u002Flist-group-challenges",{"title":278,"to":279,"method":133,"deprecated":134},"Fetch one group challenge","\u002Fapi\u002Freference\u002Fget-group-challenge",{"title":281,"to":282,"method":133,"deprecated":134},"List the groups your students are in for a group challenge","\u002Fapi\u002Freference\u002Flist-group-challenge-groups",{"title":284,"to":285,"method":133,"deprecated":134},"Fetch one group, with its steps and files","\u002Fapi\u002Freference\u002Fget-group-challenge-group",{"title":287,"to":288,"method":133,"deprecated":134},"List what has happened in one group","\u002Fapi\u002Freference\u002Flist-group-challenge-activity",{"title":290,"to":291,"method":141,"deprecated":134},"Send a group’s finished work for one of your students","\u002Fapi\u002Freference\u002Fsubmit-group-challenge-work",{"title":293,"to":294,"method":141,"deprecated":134},"Submit one step of a group for one of your students","\u002Fapi\u002Freference\u002Fsubmit-group-challenge-step",{"title":296,"to":297,"method":133,"deprecated":134},"List your students’ eligibility and groups for a group challenge","\u002Fapi\u002Freference\u002Flist-group-challenge-students",{"title":299,"to":300,"method":133,"deprecated":134},"Fetch one of your students’ eligibility and group for a group challenge","\u002Fapi\u002Freference\u002Fget-group-challenge-student",{"id":302,"title":303,"links":304,"groups":316},"clients","Clients",[305,307,310,313],{"title":9,"to":306,"status":14},"\u002Fapi\u002Fclients",{"title":308,"to":309,"status":14},"Node.js","\u002Fapi\u002Fclients\u002Fnode",{"title":311,"to":312,"status":14},"PHP","\u002Fapi\u002Fclients\u002Fphp",{"title":314,"to":315,"status":14},"Build your own","\u002Fapi\u002Fclients\u002Fbuild-your-own",[],{"id":318,"title":319,"links":320,"groups":330},"agents","AI agents",[321,324,327],{"title":322,"to":323},"AI connections","\u002Fapi\u002Fmcp",{"title":325,"to":326},"What it can do","\u002Fapi\u002Fmcp\u002Ftools",{"title":328,"to":329},"Agent skills","\u002Fapi\u002Fskills",[],{"id":332,"title":333,"links":334,"groups":350},"help","Help",[335,338,341,344,347],{"title":336,"to":337,"status":14},"Glossary","\u002Fapi\u002Fglossary",{"title":339,"to":340,"status":14},"FAQ","\u002Fapi\u002Ffaq",{"title":342,"to":343,"status":14},"Troubleshooting","\u002Fapi\u002Ftroubleshooting",{"title":345,"to":346,"status":14},"Support","\u002Fapi\u002Fsupport",{"title":348,"to":349},"Changelog","\u002Fapi\u002Fchangelog",[],{"entry":352,"body":387,"newer":939,"older":942},{"path":353,"version":354,"date":355,"breaking":134,"summary":356,"description":357,"changes":358,"longForm":386,"preview":134},"\u002Fapi\u002Fchangelog\u002F1-1-0","1.1.0","2026-09-17","Three new operations — bulk registration, its status, and a registration pre-check — with an email filter on listStudents, a signedIn field and filter on listOrgStudents, and an optional details object on error bodies. Nothing that worked against 1.0.1 changes.","Register a whole class in one request, check a registration before you send it, and filter your student lists by email address and by sign-in.",[359,365,369,372,376,380],{"type":360,"breaking":134,"text":361,"operations":362},"added","`createStudentImport`: `POST \u002Fv1\u002Fstudent\u002Fimport` registers 30 to 1000 students in one request. Every row follows `registerStudent`'s rules and takes everything it takes except `password`, plus an optional `externalRef` of your own that is echoed back. The whole batch is checked before anything is queued; the answer is `202` with the import and a `Location` header, and the students are registered in the background. **They are written in one transaction: a batch registers every row or registers nothing**, so there is no partial import to reconcile. Each student gets the same welcome email `registerStudent` sends. Limits: one unfinished import per account (`409` otherwise), 10 requests an hour, and bodies up to 1.5 MB on this operation where every other takes 100 kB. Sending the same rows again inside 24 hours answers with the import you already have rather than a second one. It needs `student\u002Fcreate` on `mto`, the permission registration needs.",[363,364],"createStudentImport","registerStudent",{"type":360,"breaking":134,"text":366,"operations":367},"`getStudentImport`: `GET \u002Fv1\u002Fstudent\u002Fimport\u002F{importId}` returns one of your imports and one page of its rows, with `page` and `limit`. `status` is `queued`, `running`, `succeeded`, `failed` or `cancelled`; on `succeeded` every row carries the student's `_id`, and on anything else no student of that batch was registered. An import stops being readable 30 days after it finishes and then answers `404`, as does one another account sent. It needs `student\u002Fcreate` on `mto`.",[368],"getStudentImport",{"type":360,"breaking":134,"text":370,"operations":371},"Error bodies may carry an optional `details` object, and `createStudentImport` is the first operation to send one: its `422` puts every row it cannot register in `error.details.rows`, each with its position, the property at fault and a code to branch on. Ignore a `details` you do not recognise; no other operation sends one.",[363],{"type":360,"breaking":134,"text":373,"operations":374},"`checkStudentRegistration`: `POST \u002Fv1\u002Fstudent\u002Fcheck` runs the checks `registerStudent` makes before it creates anything, on the same body without `password`, and answers `200` with what they found: `valid`; every `country`, `grade`, `city` or `school` that matches nothing, with the message registration would refuse it with; the `_id` each reference resolves to; and whether one of your students already has the email address, with that student's `_id`. Nothing is created and no username is issued. It needs `student\u002Fcreate` on `mto`, the permission registration needs. Only your own students are checked for the address, so an address a student on another account holds is still refused by `registerStudent` alone.",[375,364],"checkStudentRegistration",{"type":360,"breaking":134,"text":377,"operations":378},"`listStudents`: an optional `email` query parameter lists only your students who have one of up to 100 addresses, separated by commas, matched exactly and without regard to case. A value that is not such a list is refused with `400 bad_request`.",[379],"listStudents",{"type":360,"breaking":134,"text":381,"operations":382},"`listOrgStudents`: each student carries `signedIn`, whether they have signed in to that organization at least once, and an optional `signedIn` query parameter, `true` or `false`, lists only the students who have or only those who have not. Any other value is refused with `400 bad_request`. `createApplication` and `linkStudentSupervisor` on an organization need the student to have signed in there once.",[383,384,385],"listOrgStudents","createApplication","linkStudentSupervisor",true,{"type":388,"value":389,"toc":932},"minimark",[390,394,399,421,440,489,500,503,558,565,569,580,752,779,783,802,836,852,856,870,908,912,928],[391,392,393],"p",{},"Version 1.1.0 adds three operations and three fields, and removes and changes nothing. Code written\nagainst 1.0.1 keeps working without a change, and every request you send today answers as it did\nbefore.",[395,396,398],"h2",{"id":397},"register-a-class-in-one-request","Register a class in one request",[391,400,401,407,408,412,413,416,417,420],{},[402,403,404],"a",{"href":180},[405,406,363],"code",{}," takes 30 to 1000 students in one\nrequest. Every row follows ",[402,409,410],{"href":174},[405,411,364],{},"'s rules and takes\neverything it takes except ",[405,414,415],{},"password",", plus an optional ",[405,418,419],{},"externalRef"," of your own that comes back\non the row.",[391,422,423,424,427,428,431,432,436,437,439],{},"The whole batch is checked before anything is queued. If every row passes, the answer is ",[405,425,426],{},"202"," with\nthe import and a ",[405,429,430],{},"Location"," header, and the students are registered in the background. ",[433,434,435],"strong",{},"The batch\nis written in one transaction: it registers every row or it registers nothing",", so you never have\nhalf a class to reconcile. Each student gets the welcome email ",[405,438,364],{}," sends.",[391,441,442,443,447,448,451,452,455,456,459,460,463,464,463,467,463,470,473,474,477,478,480,481,484,485,488],{},"Follow the import with ",[402,444,445],{"href":183},[405,446,368],{},", which returns the\nimport and one page of its rows, with ",[405,449,450],{},"page"," and ",[405,453,454],{},"limit"," as every list takes them. ",[405,457,458],{},"status"," is\n",[405,461,462],{},"queued",", ",[405,465,466],{},"running",[405,468,469],{},"succeeded",[405,471,472],{},"failed"," or ",[405,475,476],{},"cancelled",". On ",[405,479,469],{}," every row carries the\nstudent's ",[405,482,483],{},"_id","; on anything else no student of that batch was registered. An import stops being\nreadable 30 days after it finishes, and then answers ",[405,486,487],{},"404",", as does an import another account sent.",[391,490,491,492,495,496,499],{},"Both need ",[405,493,494],{},"student\u002Fcreate"," on ",[405,497,498],{},"mto",", the permission registration already needs, so an account that\nregisters students today can import them without a new role.",[391,501,502],{},"Limits, which are stricter than the rest of the API:",[504,505,506,519],"table",{},[507,508,509],"thead",{},[510,511,512,516],"tr",{},[513,514,515],"th",{},"Limit",[513,517,518],{},"Value",[520,521,522,531,539,547],"tbody",{},[510,523,524,528],{},[525,526,527],"td",{},"Rows in one request",[525,529,530],{},"30 to 1000",[510,532,533,536],{},[525,534,535],{},"Requests",[525,537,538],{},"10 an hour",[510,540,541,544],{},[525,542,543],{},"Body",[525,545,546],{},"1.5 MB on this operation, where every other takes 100 kB",[510,548,549,552],{},[525,550,551],{},"Unfinished imports per account",[525,553,554,555],{},"1; a second answers ",[405,556,557],{},"409",[391,559,560,561,564],{},"Sending the same rows again inside 24 hours answers with the import you already have, rather than\nstarting a second one, so a retry after a timeout is safe. The whole workflow, with a worked run,\nis in ",[402,562,563],{"href":66},"Registering many students at once",".",[395,566,568],{"id":567},"a-422-that-names-the-rows","A 422 that names the rows",[391,570,571,572,575,576,579],{},"When a batch is refused, nothing is queued and the answer is ",[405,573,574],{},"422 unprocessable_entity"," with every\nrow it will not register. That list arrives in a new, optional ",[405,577,578],{},"details"," object on the error body:",[581,582,587],"pre",{"className":583,"code":584,"language":585,"meta":586,"style":586},"language-json shiki shiki-themes github-light-high-contrast github-dark-high-contrast","{\n  \"error\": {\n    \"code\": \"unprocessable_entity\",\n    \"message\": \"The import was refused.\",\n    \"documentation_url\": \"https:\u002F\u002Fhub.main-team.org\u002Fapi\u002Ferrors#unprocessable_entity\",\n    \"request_id\": \"0199d2d6-6f04-7a31-9f2a-0f4d2a17c2b1\",\n    \"details\": {\n      \"rows\": [\n        { \"row\": 4, \"field\": \"grade\", \"code\": \"unknown_reference\", \"message\": \"Grade not found!\" }\n      ]\n    }\n  }\n}\n","json","",[405,588,589,598,608,624,637,650,663,671,680,728,734,740,746],{"__ignoreMap":586},[590,591,594],"span",{"class":592,"line":593},"line",1,[590,595,597],{"class":596},"suds8","{\n",[590,599,601,605],{"class":592,"line":600},2,[590,602,604],{"class":603},"sne4z","  \"error\"",[590,606,607],{"class":596},": {\n",[590,609,611,614,617,621],{"class":592,"line":610},3,[590,612,613],{"class":603},"    \"code\"",[590,615,616],{"class":596},": ",[590,618,620],{"class":619},"sT6z2","\"unprocessable_entity\"",[590,622,623],{"class":596},",\n",[590,625,627,630,632,635],{"class":592,"line":626},4,[590,628,629],{"class":603},"    \"message\"",[590,631,616],{"class":596},[590,633,634],{"class":619},"\"The import was refused.\"",[590,636,623],{"class":596},[590,638,640,643,645,648],{"class":592,"line":639},5,[590,641,642],{"class":603},"    \"documentation_url\"",[590,644,616],{"class":596},[590,646,647],{"class":619},"\"https:\u002F\u002Fhub.main-team.org\u002Fapi\u002Ferrors#unprocessable_entity\"",[590,649,623],{"class":596},[590,651,653,656,658,661],{"class":592,"line":652},6,[590,654,655],{"class":603},"    \"request_id\"",[590,657,616],{"class":596},[590,659,660],{"class":619},"\"0199d2d6-6f04-7a31-9f2a-0f4d2a17c2b1\"",[590,662,623],{"class":596},[590,664,666,669],{"class":592,"line":665},7,[590,667,668],{"class":603},"    \"details\"",[590,670,607],{"class":596},[590,672,674,677],{"class":592,"line":673},8,[590,675,676],{"class":603},"      \"rows\"",[590,678,679],{"class":596},": [\n",[590,681,683,686,689,691,695,697,700,702,705,707,710,712,715,717,720,722,725],{"class":592,"line":682},9,[590,684,685],{"class":596},"        { ",[590,687,688],{"class":603},"\"row\"",[590,690,616],{"class":596},[590,692,694],{"class":693},"s-5SL","4",[590,696,463],{"class":596},[590,698,699],{"class":603},"\"field\"",[590,701,616],{"class":596},[590,703,704],{"class":619},"\"grade\"",[590,706,463],{"class":596},[590,708,709],{"class":603},"\"code\"",[590,711,616],{"class":596},[590,713,714],{"class":619},"\"unknown_reference\"",[590,716,463],{"class":596},[590,718,719],{"class":603},"\"message\"",[590,721,616],{"class":596},[590,723,724],{"class":619},"\"Grade not found!\"",[590,726,727],{"class":596}," }\n",[590,729,731],{"class":592,"line":730},10,[590,732,733],{"class":596},"      ]\n",[590,735,737],{"class":592,"line":736},11,[590,738,739],{"class":596},"    }\n",[590,741,743],{"class":592,"line":742},12,[590,744,745],{"class":596},"  }\n",[590,747,749],{"class":592,"line":748},13,[590,750,751],{"class":596},"}\n",[391,753,754,756,757,759,760,762,763,463,765,463,768,451,771,774,775,451,777,564],{},[405,755,578],{}," is optional and operation-specific: ",[405,758,363],{}," is the only operation that\nsends one today, and every other error body is exactly what it was in 1.0.1. Ignore a ",[405,761,578],{}," you\ndo not recognize, as you ignore any field you do not recognize. The four fields your code already\nreads — ",[405,764,405],{},[405,766,767],{},"message",[405,769,770],{},"documentation_url",[405,772,773],{},"request_id"," — are unchanged and always there.\nSee ",[402,776,42],{"href":43},[402,778,33],{"href":34},[395,780,782],{"id":781},"check-a-registration-before-you-send-it","Check a registration before you send it",[391,784,785,789,790,794,795,797,798,801],{},[402,786,787],{"href":177},[405,788,375],{}," runs the checks\n",[402,791,792],{"href":174},[405,793,364],{}," makes before it creates anything, on the same\nbody without ",[405,796,415],{},", and answers ",[405,799,800],{},"200"," with what they found:",[803,804,805,812,831],"ul",{},[806,807,808,811],"li",{},[405,809,810],{},"valid",", whether registration would go through;",[806,813,814,815,463,818,463,821,473,824,827,828,830],{},"every ",[405,816,817],{},"country",[405,819,820],{},"grade",[405,822,823],{},"city",[405,825,826],{},"school"," that matches nothing, with the message registration\nwould refuse it with, and the ",[405,829,483],{}," each reference that does match resolves to;",[806,832,833,834,564],{},"whether one of your own students already has the email address, and that student's ",[405,835,483],{},[391,837,838,839,495,841,843,844,846,847,849,850,564],{},"Nothing is created, no username is issued, and it needs ",[405,840,494],{},[405,842,498],{},", the permission\nregistration needs. Only your own students are checked for the address: an address a student on\nanother account holds is still refused by ",[405,845,364],{}," itself, so a ",[405,848,810],{}," answer is a strong\nhint, never a promise. See ",[402,851,62],{"href":63},[395,853,855],{"id":854},"find-students-by-address-and-see-who-has-signed-in","Find students by address, and see who has signed in",[391,857,858,862,863,866,867,564],{},[402,859,860],{"href":171},[405,861,379],{}," takes an optional ",[405,864,865],{},"email"," query parameter: up to 100\naddresses, separated by commas, matched exactly and without regard to case. It lists only your own\nstudents, as it always has. A value that is not such a list is refused with ",[405,868,869],{},"400 bad_request",[391,871,872,876,877,880,881,883,884,473,887,890,891,893,894,898,899,903,904,907],{},[402,873,874],{"href":196},[405,875,383],{}," carries a new ",[405,878,879],{},"signedIn"," field on every\nstudent, whether that student has signed in to that organization at least once, and takes ",[405,882,879],{},"\nas an optional filter, ",[405,885,886],{},"true",[405,888,889],{},"false",". Any other value is refused with ",[405,892,869],{},". This is\nthe field to look at when an entry or a supervisor link is refused: both\n",[402,895,896],{"href":238},[405,897,384],{}," and\n",[402,900,901],{"href":205},[405,902,385],{}," need the student to have signed in\nto that organization once, which a ",[402,905,906],{"href":81},"sign-in link"," does.",[395,909,911],{"id":910},"nothing-to-change","Nothing to change",[803,913,914,917,920],{},[806,915,916],{},"No operation, request field, response field or error code was removed or narrowed.",[806,918,919],{},"No request field became required, and no response field became optional.",[806,921,922,923,495,925,927],{},"The new response field, ",[405,924,879],{},[405,926,383],{},", is an addition: a client that rejects\nfields it does not know is the only one that notices it.",[929,930,931],"style",{},"html pre.shiki code .suds8, html code.shiki .suds8{--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sne4z, html code.shiki .sne4z{--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .sT6z2, html code.shiki .sT6z2{--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .s-5SL, html code.shiki .s-5SL{--shiki-default:#023B95;--shiki-dark:#91CBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":586,"searchDepth":600,"depth":610,"links":933},[934,935,936,937,938],{"id":397,"depth":600,"text":398},{"id":567,"depth":600,"text":568},{"id":781,"depth":600,"text":782},{"id":854,"depth":600,"text":855},{"id":910,"depth":600,"text":911},{"path":940,"version":941},"\u002Fapi\u002Fchangelog\u002F1-1-1","1.1.1",{"path":943,"version":944},"\u002Fapi\u002Fchangelog\u002F1-0-1","1.0.1",1791554613405]