[{"data":1,"prerenderedAt":5946},["ShallowReactive",2],{"api-nav":3,"api-guide:\u002Fapi\u002Fguides\u002Fstudents":351,"api-spec:guide:\u002Fapi\u002Fguides\u002Fstudents":5919},[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",[],{"id":352,"title":62,"body":353,"description":5904,"extension":5905,"meta":5906,"navTitle":62,"navigation":1995,"operations":5907,"order":5915,"path":63,"section":58,"seo":5916,"status":14,"stem":5917,"__hash__":5918},"apiGuides\u002Fapi\u002Fguides\u002Fstudents.md",{"type":354,"value":355,"toc":5875},"minimark",[356,365,373,378,566,597,617,621,624,648,667,751,754,796,800,806,853,880,883,917,922,925,971,1002,1010,1013,1022,1158,1425,1442,1446,1808,1815,1845,1857,1861,1864,1955,1963,1967,2365,2822,2826,2842,2927,3100,3199,3215,3233,3237,3248,3355,3358,3434,3442,3446,3494,3497,3503,3524,3571,3576,3580,3583,3645,3652,3666,3685,3693,3697,3701,3726,4280,4294,4304,4328,4381,4385,4409,4421,4437,4441,4463,4468,4516,4540,4544,4550,4785,4796,4799,4804,4849,5064,5074,5204,5228,5231,5235,5244,5269,5272,5285,5289,5392,5395,5838,5842,5871],[357,358,359,360,364],"p",{},"Almost every integration starts with a student. You register the student once, keep your own record of\nthe ",[361,362,363],"code",{},"_id"," the API gives back, and use that id everywhere afterwards: to send the student into the\npanel, to enter them for exams, and to collect their certificates and reports.",[357,366,367,368,372],{},"\"Your students\" means the students ",[369,370,371],"strong",{},"your API account registered",". You can read and change those and\nno others. A student registered by another account behaves exactly as if it did not exist, and so\ndoes a student on your old account if an operator issues you a new one.",[374,375,377],"h2",{"id":376},"the-operations","The operations",[379,380,381,400],"table",{},[382,383,384],"thead",{},[385,386,387,391,394,397],"tr",{},[388,389,390],"th",{},"Operation",[388,392,393],{},"Route",[388,395,396],{},"Permission",[388,398,399],{},"Acts on",[401,402,403,428,449,469,489,510,530,548],"tbody",{},[385,404,405,411,416,425],{},[406,407,408],"td",{},[409,410,173],"a",{"href":174},[406,412,413],{},[361,414,415],{},"POST \u002Fv1\u002Fstudent",[406,417,418,421,422],{},[361,419,420],{},"student\u002Fcreate"," on ",[361,423,424],{},"mto",[406,426,427],{},"the core record",[385,429,430,435,440,446],{},[406,431,432],{},[409,433,434],{"href":177},"Check a registration",[406,436,437],{},[361,438,439],{},"POST \u002Fv1\u002Fstudent\u002Fcheck",[406,441,442,421,444],{},[361,443,420],{},[361,445,424],{},[406,447,448],{},"nothing: it writes nothing",[385,450,451,455,460,467],{},[406,452,453],{},[409,454,170],{"href":171},[406,456,457],{},[361,458,459],{},"GET \u002Fv1\u002Fstudent",[406,461,462,421,465],{},[361,463,464],{},"student\u002Fread",[361,466,424],{},[406,468,427],{},[385,470,471,476,481,487],{},[406,472,473],{},[409,474,475],{"href":186},"Get a student",[406,477,478],{},[361,479,480],{},"GET \u002Fv1\u002Fstudent\u002F\u003CstudentId>",[406,482,483,421,485],{},[361,484,464],{},[361,486,424],{},[406,488,427],{},[385,490,491,496,501,508],{},[406,492,493],{},[409,494,495],{"href":189},"Update a student",[406,497,498],{},[361,499,500],{},"PUT \u002Fv1\u002Fstudent\u002F\u003CstudentId>",[406,502,503,421,506],{},[361,504,505],{},"student\u002Fupdate",[361,507,424],{},[406,509,427],{},[385,511,512,517,522,527],{},[406,513,514],{},[409,515,516],{"href":196},"List an organization's students",[406,518,519],{},[361,520,521],{},"GET \u002Fv1\u002F\u003CorganizationId>\u002Fstudent",[406,523,524,526],{},[361,525,464],{}," on that organization",[406,528,529],{},"the core record, filtered",[385,531,532,537,542,546],{},[406,533,534],{},[409,535,536],{"href":199},"Get a student on an organization",[406,538,539],{},[361,540,541],{},"GET \u002Fv1\u002F\u003CorganizationId>\u002Fstudent\u002F\u003CstudentId>",[406,543,544,526],{},[361,545,464],{},[406,547,529],{},[385,549,550,555,560,564],{},[406,551,552],{},[409,553,554],{"href":202},"Update a student on an organization",[406,556,557],{},[361,558,559],{},"PUT \u002Fv1\u002F\u003CorganizationId>\u002Fstudent\u002F\u003CstudentId>",[406,561,562,526],{},[361,563,505],{},[406,565,427],{},[357,567,568,569,571,572,574,575,578,579,581,582,584,585,588,589,592,593,596],{},"A role grants a permission \"on ",[361,570,424],{},"\" when its target is ",[361,573,424],{}," or ",[361,576,577],{},"*",", and \"on that organization\" when\nits target is that organization's slug or ",[361,580,577],{}," (",[409,583,25],{"href":26},"). Three more\nstudent operations have their own guides: ",[409,586,587],{"href":69},"passwords",",\n",[409,590,591],{"href":72},"supervisor links"," and, for a class at a time,\n",[409,594,595],{"href":66},"bulk registration",".",[598,599,601],"callout",{"type":600},"note",[357,602,603,606,607,610,611,614,615,596],{},[369,604,605],{},"Registering a roster?"," ",[361,608,609],{},"registerStudent"," takes one student per request. For 30 to 1000 of them,\n",[409,612,613],{"href":180},"createStudentImport"," takes the whole list in one request,\nchecks it before it accepts it, and registers all of them or none. See\n",[409,616,65],{"href":66},[374,618,620],{"id":619},"the-core-record-and-organization-copies","The core record and organization copies",[357,622,623],{},"A student exists in more than one place, and knowing which one an operation touches explains most of\nthe rules on this page.",[357,625,626,629,630,632,633,636,637,640,641,643,644,647],{},[369,627,628],{},"The core record"," is created when you register the student. It lives on ",[361,631,424],{},", the core\norganization, and holds the student's profile, username and password. ",[369,634,635],{},"Every student operation on\nthis page reads or writes the core record",", including the ones with an ",[361,638,639],{},"\u003CorganizationId>"," in the\npath. The ",[361,642,363],{}," you get at registration is the core record's id, and it is the ",[361,645,646],{},"\u003CstudentId>"," every\nstudent route takes.",[357,649,650,653,654,657,658,660,661,663,664,596],{},[369,651,652],{},"An organization copy"," is the record one organization (stem, hilingua, neo, gmath or coding) keeps\nof the same student. It is created the first time the student signs in to that organization, through\na ",[409,655,656],{"href":81},"sign-in link"," you create or on their own. The API cannot create one any\nother way. A copy has its own ",[361,659,363],{},", different on every organization, and carries the core record's\n",[361,662,363],{}," in ",[361,665,666],{},"mainId",[379,668,669,681],{},[382,670,671],{},[385,672,673,675,678],{},[388,674],{},[388,676,677],{},"Core record",[388,679,680],{},"Organization copy",[401,682,683,696,719,730,741],{},[385,684,685,688,693],{},[406,686,687],{},"Created",[406,689,690,691],{},"When you call ",[361,692,415],{},[406,694,695],{},"At the student's first sign-in to that organization",[385,697,698,701,708],{},[406,699,700],{},"Id",[406,702,703,705,706],{},[361,704,363],{},": the id you store and pass as ",[361,707,646],{},[406,709,710,711,713,714,716,717],{},"Its own ",[361,712,363],{}," on that organization; ",[361,715,666],{}," = the core ",[361,718,363],{},[385,720,721,724,727],{},[406,722,723],{},"Written by the student routes",[406,725,726],{},"Yes",[406,728,729],{},"No",[385,731,732,735,738],{},[406,733,734],{},"Needed for",[406,736,737],{},"Everything on this page",[406,739,740],{},"Applications, supervisor links, and the student's certificates and reports on that organization",[385,742,743,746,748],{},[406,744,745],{},"Kept in step",[406,747],{},[406,749,750],{},"Profile details are copied from the core record each time the student signs in there",[357,752,753],{},"What this means in practice:",[755,756,757,768,774],"ul",{},[758,759,760,763,764,767],"li",{},[369,761,762],{},"A new student has no copies."," Until the student has signed in to an organization, routes that\nneed the copy refuse. For example, creating an application answers ",[361,765,766],{},"409"," with a message saying the\nstudent has never signed in to that organization. The fix is always the same: create a sign-in link\nfor that organization and have the student open it.",[758,769,770,773],{},[369,771,772],{},"Your changes reach the checks this API makes at once."," Exam eligibility, for example, is judged\nfrom the core record's grade and country. An organization's own panel shows the student as its copy\nholds them, which picks up your change the next time the student signs in there.",[758,775,776,782,783,786,787,789,790,792,793,795],{},[369,777,778,779,781],{},"Match on ",[361,780,666],{}," when a record comes from an organization."," An application's ",[361,784,785],{},"user",", or the\nstudent in a supervisor-link response, is the organization copy. Its ",[361,788,363],{}," means nothing elsewhere,\nbut its ",[361,791,666],{}," is the id you know. ",[409,794,36],{"href":37}," covers this in detail.",[374,797,799],{"id":798},"which-organizations-a-student-is-entered-on","Which organizations a student is entered on",[357,801,802,805],{},[361,803,804],{},"activatedPlatformsThisSeason"," lists the organizations the student is entered on this season:",[379,807,808,818],{},[382,809,810],{},[385,811,812,815],{},[388,813,814],{},"Value",[388,816,817],{},"Meaning",[401,819,820,830],{},[385,821,822,827],{},[406,823,824],{},[361,825,826],{},"\"common\"",[406,828,829],{},"Every organization. This is the default when you register a student without the field.",[385,831,832,850],{},[406,833,834,837,838,837,841,837,844,837,847],{},[361,835,836],{},"\"stem\"",", ",[361,839,840],{},"\"hilingua\"",[361,842,843],{},"\"neo\"",[361,845,846],{},"\"gmath\"",[361,848,849],{},"\"coding\"",[406,851,852],{},"That organization.",[357,854,855,856,859,860,863,864,867,868,871,872,875,876,879],{},"The values are lower case. Anything else is refused with ",[361,857,858],{},"400"," and\n",[361,861,862],{},"each value in activatedPlatformsThisSeason must be one of the following values: common, stem, hilingua, neo, gmath, coding",",\nand that includes ",[361,865,866],{},"\"mto\"",": every student is on the core record already. Several values can be\ncombined: ",[361,869,870],{},"[\"stem\", \"neo\"]",". At registration an empty list, ",[361,873,874],{},"[]",", is accepted and enters the\nstudent on no organization: the organization routes below leave them out, and sign-in links are\nrefused with ",[361,877,878],{},"403"," until you add one.",[357,881,882],{},"The list decides which organization routes treat the student as yours:",[755,884,885,896,907],{},[758,886,887,889,890,892,893,895],{},[361,888,521],{}," and ",[361,891,541],{}," only return\nstudents whose list contains ",[361,894,826],{}," or that organization's slug.",[758,897,898,899,901,902,889,904],{},"A ",[409,900,656],{"href":81}," for an organization the student is not entered on is\nrefused with ",[361,903,878],{},[361,905,906],{},"Student is not activated for organization \u003Cslug>.",[758,908,909,910,859,913,916],{},"The organization-wide application listings (",[361,911,912],{},"GET \u002Fv1\u002F\u003CorganizationId>\u002Fapplication",[361,914,915],{},"GET \u002Fv1\u002F\u003CorganizationId>\u002Fapplication\u002Fexam-applications\u002F\u003CexamId>",") only include students entered on\nthat organization.",[918,919,921],"h3",{"id":920},"adding-organizations","Adding organizations",[357,923,924],{},"The list only ever grows. Both updates add to it, and no operation removes an organization from it:",[379,926,927,943],{},[382,928,929],{},[385,930,931,934,940],{},[388,932,933],{},"You call",[388,935,936,937,939],{},"With ",[361,938,804],{}," in the body",[388,941,942],{},"Without it",[401,944,945,957],{},[385,946,947,951,954],{},[406,948,949],{},[361,950,500],{},[406,952,953],{},"The values you send are added to the list.",[406,955,956],{},"Unchanged.",[385,958,959,963,966],{},[406,960,961],{},[361,962,559],{},[406,964,965],{},"The values you send are added to the list. The organization in the path is added only if you name it.",[406,967,968,969,596],{},"That organization is added, unless the list already contains ",[361,970,826],{},[755,972,973,976,981,993],{},[758,974,975],{},"A value the list already holds is not added twice, so sending the same list again changes nothing.",[758,977,978,980],{},[361,979,874],{}," adds nothing.",[758,982,983,986,987,889,989,992],{},[361,984,985],{},"null"," is refused with ",[361,988,858],{},[361,990,991],{},"activatedPlatformsThisSeason must be an array",", as it is at registration.",[758,994,995,996,998,999,1001],{},"A slug added to a list that holds ",[361,997,826],{}," is stored beside it. That changes nothing, because\n",[361,1000,826],{}," already covers every organization.",[357,1003,1004,1005,1009],{},"To add one organization, send just its slug, or send that organization's update route an empty body\n(",[409,1006,1008],{"href":1007},"#update-through-an-organization","below","). You never need to read the current list first.",[374,1011,173],{"id":1012},"register-a-student",[357,1014,1015,1017,1018,1021],{},[361,1016,415],{}," creates the core record and answers ",[361,1019,1020],{},"201"," with the new student.",[1023,1024,1029],"pre",{"className":1025,"code":1026,"language":1027,"meta":1028,"style":1028},"language-bash shiki shiki-themes github-light-high-contrast github-dark-high-contrast","curl -X POST \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"firstName\": \"Ada\",\n    \"lastName\": \"Lovelace\",\n    \"email\": \"ada.lovelace@example.org\",\n    \"birth\": \"14\u002F05\u002F2010\",\n    \"sex\": \"f\",\n    \"country\": \"630e0182c53dc79a6836e67e\",\n    \"grade\": \"9\",\n    \"city\": \"Berlin\",\n    \"school\": \"Berlin International School\",\n    \"phone\": \"+49 30 123 4567\"\n  }'\n","bash","",[361,1030,1031,1055,1073,1083,1092,1098,1104,1110,1116,1122,1128,1134,1140,1146,1152],{"__ignoreMap":1028},[1032,1033,1036,1040,1044,1048,1051],"span",{"class":1034,"line":1035},"line",1,[1032,1037,1039],{"class":1038},"soyes","curl",[1032,1041,1043],{"class":1042},"s-5SL"," -X",[1032,1045,1047],{"class":1046},"sT6z2"," POST",[1032,1049,1050],{"class":1046}," \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent\"",[1032,1052,1054],{"class":1053},"sHUrx"," \\\n",[1032,1056,1058,1061,1064,1068,1071],{"class":1034,"line":1057},2,[1032,1059,1060],{"class":1042},"  -H",[1032,1062,1063],{"class":1046}," \"Authorization: Bearer ",[1032,1065,1067],{"class":1066},"suds8","$TOKEN",[1032,1069,1070],{"class":1046},"\"",[1032,1072,1054],{"class":1053},[1032,1074,1076,1078,1081],{"class":1034,"line":1075},3,[1032,1077,1060],{"class":1042},[1032,1079,1080],{"class":1046}," \"Content-Type: application\u002Fjson\"",[1032,1082,1054],{"class":1053},[1032,1084,1086,1089],{"class":1034,"line":1085},4,[1032,1087,1088],{"class":1042},"  -d",[1032,1090,1091],{"class":1046}," '{\n",[1032,1093,1095],{"class":1034,"line":1094},5,[1032,1096,1097],{"class":1046},"    \"firstName\": \"Ada\",\n",[1032,1099,1101],{"class":1034,"line":1100},6,[1032,1102,1103],{"class":1046},"    \"lastName\": \"Lovelace\",\n",[1032,1105,1107],{"class":1034,"line":1106},7,[1032,1108,1109],{"class":1046},"    \"email\": \"ada.lovelace@example.org\",\n",[1032,1111,1113],{"class":1034,"line":1112},8,[1032,1114,1115],{"class":1046},"    \"birth\": \"14\u002F05\u002F2010\",\n",[1032,1117,1119],{"class":1034,"line":1118},9,[1032,1120,1121],{"class":1046},"    \"sex\": \"f\",\n",[1032,1123,1125],{"class":1034,"line":1124},10,[1032,1126,1127],{"class":1046},"    \"country\": \"630e0182c53dc79a6836e67e\",\n",[1032,1129,1131],{"class":1034,"line":1130},11,[1032,1132,1133],{"class":1046},"    \"grade\": \"9\",\n",[1032,1135,1137],{"class":1034,"line":1136},12,[1032,1138,1139],{"class":1046},"    \"city\": \"Berlin\",\n",[1032,1141,1143],{"class":1034,"line":1142},13,[1032,1144,1145],{"class":1046},"    \"school\": \"Berlin International School\",\n",[1032,1147,1149],{"class":1034,"line":1148},14,[1032,1150,1151],{"class":1046},"    \"phone\": \"+49 30 123 4567\"\n",[1032,1153,1155],{"class":1034,"line":1154},15,[1032,1156,1157],{"class":1046},"  }'\n",[1023,1159,1163],{"className":1160,"code":1161,"language":1162,"meta":1028,"style":1028},"language-json shiki shiki-themes github-light-high-contrast github-dark-high-contrast","{\n  \"success\": true,\n  \"message\": \"User registered successfully.\",\n  \"data\": {\n    \"_id\": \"6650f1a2b3c4d5e6f7a8b9c0\",\n    \"username\": \"XXB1045\",\n    \"firstName\": \"Ada\",\n    \"lastName\": \"Lovelace\",\n    \"fullName\": \"Ada Lovelace\",\n    \"email\": \"ada.lovelace@example.org\",\n    \"emailConfirmed\": false,\n    \"phone\": \"+49 30 123 4567\",\n    \"birth\": \"14\u002F05\u002F2010\",\n    \"sex\": \"f\",\n    \"country\": \"630e0182c53dc79a6836e67e\",\n    \"city\": \"6650e0a1b2c3d4e5f6a7b801\",\n    \"school\": \"6650e0a1b2c3d4e5f6a7b8c2\",\n    \"grade\": \"630e01826836e67ec53dc7a5\",\n    \"activatedPlatformsThisSeason\": [\"common\"],\n    \"createdAt\": \"2026-09-15T09:12:44.512Z\",\n    \"updatedAt\": \"2026-09-15T09:12:44.512Z\"\n  }\n}\n","json",[361,1164,1165,1170,1184,1196,1204,1216,1228,1240,1252,1264,1276,1288,1300,1312,1324,1336,1349,1362,1375,1389,1402,1413,1419],{"__ignoreMap":1028},[1032,1166,1167],{"class":1034,"line":1035},[1032,1168,1169],{"class":1066},"{\n",[1032,1171,1172,1176,1179,1182],{"class":1034,"line":1057},[1032,1173,1175],{"class":1174},"sne4z","  \"success\"",[1032,1177,1178],{"class":1066},": ",[1032,1180,1181],{"class":1042},"true",[1032,1183,588],{"class":1066},[1032,1185,1186,1189,1191,1194],{"class":1034,"line":1075},[1032,1187,1188],{"class":1174},"  \"message\"",[1032,1190,1178],{"class":1066},[1032,1192,1193],{"class":1046},"\"User registered successfully.\"",[1032,1195,588],{"class":1066},[1032,1197,1198,1201],{"class":1034,"line":1085},[1032,1199,1200],{"class":1174},"  \"data\"",[1032,1202,1203],{"class":1066},": {\n",[1032,1205,1206,1209,1211,1214],{"class":1034,"line":1094},[1032,1207,1208],{"class":1174},"    \"_id\"",[1032,1210,1178],{"class":1066},[1032,1212,1213],{"class":1046},"\"6650f1a2b3c4d5e6f7a8b9c0\"",[1032,1215,588],{"class":1066},[1032,1217,1218,1221,1223,1226],{"class":1034,"line":1100},[1032,1219,1220],{"class":1174},"    \"username\"",[1032,1222,1178],{"class":1066},[1032,1224,1225],{"class":1046},"\"XXB1045\"",[1032,1227,588],{"class":1066},[1032,1229,1230,1233,1235,1238],{"class":1034,"line":1106},[1032,1231,1232],{"class":1174},"    \"firstName\"",[1032,1234,1178],{"class":1066},[1032,1236,1237],{"class":1046},"\"Ada\"",[1032,1239,588],{"class":1066},[1032,1241,1242,1245,1247,1250],{"class":1034,"line":1112},[1032,1243,1244],{"class":1174},"    \"lastName\"",[1032,1246,1178],{"class":1066},[1032,1248,1249],{"class":1046},"\"Lovelace\"",[1032,1251,588],{"class":1066},[1032,1253,1254,1257,1259,1262],{"class":1034,"line":1118},[1032,1255,1256],{"class":1174},"    \"fullName\"",[1032,1258,1178],{"class":1066},[1032,1260,1261],{"class":1046},"\"Ada Lovelace\"",[1032,1263,588],{"class":1066},[1032,1265,1266,1269,1271,1274],{"class":1034,"line":1124},[1032,1267,1268],{"class":1174},"    \"email\"",[1032,1270,1178],{"class":1066},[1032,1272,1273],{"class":1046},"\"ada.lovelace@example.org\"",[1032,1275,588],{"class":1066},[1032,1277,1278,1281,1283,1286],{"class":1034,"line":1130},[1032,1279,1280],{"class":1174},"    \"emailConfirmed\"",[1032,1282,1178],{"class":1066},[1032,1284,1285],{"class":1042},"false",[1032,1287,588],{"class":1066},[1032,1289,1290,1293,1295,1298],{"class":1034,"line":1136},[1032,1291,1292],{"class":1174},"    \"phone\"",[1032,1294,1178],{"class":1066},[1032,1296,1297],{"class":1046},"\"+49 30 123 4567\"",[1032,1299,588],{"class":1066},[1032,1301,1302,1305,1307,1310],{"class":1034,"line":1142},[1032,1303,1304],{"class":1174},"    \"birth\"",[1032,1306,1178],{"class":1066},[1032,1308,1309],{"class":1046},"\"14\u002F05\u002F2010\"",[1032,1311,588],{"class":1066},[1032,1313,1314,1317,1319,1322],{"class":1034,"line":1148},[1032,1315,1316],{"class":1174},"    \"sex\"",[1032,1318,1178],{"class":1066},[1032,1320,1321],{"class":1046},"\"f\"",[1032,1323,588],{"class":1066},[1032,1325,1326,1329,1331,1334],{"class":1034,"line":1154},[1032,1327,1328],{"class":1174},"    \"country\"",[1032,1330,1178],{"class":1066},[1032,1332,1333],{"class":1046},"\"630e0182c53dc79a6836e67e\"",[1032,1335,588],{"class":1066},[1032,1337,1339,1342,1344,1347],{"class":1034,"line":1338},16,[1032,1340,1341],{"class":1174},"    \"city\"",[1032,1343,1178],{"class":1066},[1032,1345,1346],{"class":1046},"\"6650e0a1b2c3d4e5f6a7b801\"",[1032,1348,588],{"class":1066},[1032,1350,1352,1355,1357,1360],{"class":1034,"line":1351},17,[1032,1353,1354],{"class":1174},"    \"school\"",[1032,1356,1178],{"class":1066},[1032,1358,1359],{"class":1046},"\"6650e0a1b2c3d4e5f6a7b8c2\"",[1032,1361,588],{"class":1066},[1032,1363,1365,1368,1370,1373],{"class":1034,"line":1364},18,[1032,1366,1367],{"class":1174},"    \"grade\"",[1032,1369,1178],{"class":1066},[1032,1371,1372],{"class":1046},"\"630e01826836e67ec53dc7a5\"",[1032,1374,588],{"class":1066},[1032,1376,1378,1381,1384,1386],{"class":1034,"line":1377},19,[1032,1379,1380],{"class":1174},"    \"activatedPlatformsThisSeason\"",[1032,1382,1383],{"class":1066},": [",[1032,1385,826],{"class":1046},[1032,1387,1388],{"class":1066},"],\n",[1032,1390,1392,1395,1397,1400],{"class":1034,"line":1391},20,[1032,1393,1394],{"class":1174},"    \"createdAt\"",[1032,1396,1178],{"class":1066},[1032,1398,1399],{"class":1046},"\"2026-09-15T09:12:44.512Z\"",[1032,1401,588],{"class":1066},[1032,1403,1405,1408,1410],{"class":1034,"line":1404},21,[1032,1406,1407],{"class":1174},"    \"updatedAt\"",[1032,1409,1178],{"class":1066},[1032,1411,1412],{"class":1046},"\"2026-09-15T09:12:44.512Z\"\n",[1032,1414,1416],{"class":1034,"line":1415},22,[1032,1417,1418],{"class":1066},"  }\n",[1032,1420,1422],{"class":1034,"line":1421},23,[1032,1423,1424],{"class":1066},"}\n",[357,1426,1427,1428,1431,1432,837,1435,859,1438,1441],{},"Store ",[361,1429,1430],{},"data._id",". It is the student's id on every route from now on. Note that ",[361,1433,1434],{},"city",[361,1436,1437],{},"school",[361,1439,1440],{},"grade"," come back as ids even though the request named them: the API resolves every reference to the\nstored id before it writes anything.",[918,1443,1445],{"id":1444},"fields","Fields",[379,1447,1448,1467],{},[382,1449,1450],{},[385,1451,1452,1455,1458,1461,1464],{},[388,1453,1454],{},"Field",[388,1456,1457],{},"Type",[388,1459,1460],{},"Required",[388,1462,1463],{},"Format and rules",[388,1465,1466],{},"Example",[401,1468,1469,1489,1512,1539,1586,1613,1641,1674,1697,1721,1746,1780],{},[385,1470,1471,1476,1479,1482,1485],{},[406,1472,1473],{},[361,1474,1475],{},"firstName",[406,1477,1478],{},"string",[406,1480,1481],{},"yes",[406,1483,1484],{},"Not empty.",[406,1486,1487],{},[361,1488,1237],{},[385,1490,1491,1496,1498,1500,1508],{},[406,1492,1493],{},[361,1494,1495],{},"lastName",[406,1497,1478],{},[406,1499,1481],{},[406,1501,1502,1503,889,1505,596],{},"Not empty. Without it the registration is refused with ",[361,1504,858],{},[361,1506,1507],{},"lastName should not be empty",[406,1509,1510],{},[361,1511,1249],{},[385,1513,1514,1519,1521,1523,1535],{},[406,1515,1516],{},[361,1517,1518],{},"email",[406,1520,1478],{},[406,1522,1481],{},[406,1524,1525,1526,1529,1530,1534],{},"A valid email address, with no spaces around it (",[361,1527,1528],{},"\" ada@example.org\""," is refused as not an address). Stored in lower case. Must not belong to any other student on the platform (",[409,1531,1533],{"href":1532},"#duplicate-email-addresses","Duplicates",").",[406,1536,1537],{},[361,1538,1273],{},[385,1540,1541,1546,1548,1550,1582],{},[406,1542,1543],{},[361,1544,1545],{},"birth",[406,1547,1478],{},[406,1549,1481],{},[406,1551,1552,1555,1556,1559,1560,1563,1564,1559,1566,1569,1570,1573,1574,1577,1578,1581],{},[361,1553,1554],{},"DD\u002FMM\u002FYYYY",": two-digit day ",[361,1557,1558],{},"01","–",[361,1561,1562],{},"31",", two-digit month ",[361,1565,1558],{},[361,1567,1568],{},"12",", four-digit year, and a date that exists on the calendar. ",[361,1571,1572],{},"31\u002F02\u002F2010"," and ISO dates such as ",[361,1575,1576],{},"2010-05-14"," are refused with ",[361,1579,1580],{},"birth must be a real date in DD\u002FMM\u002FYYYY format",", at registration and on both updates.",[406,1583,1584],{},[361,1585,1309],{},[385,1587,1588,1593,1595,1597,1609],{},[406,1589,1590],{},[361,1591,1592],{},"sex",[406,1594,1478],{},[406,1596,1481],{},[406,1598,1599,1600,837,1603,574,1605,1608],{},"Exactly ",[361,1601,1602],{},"\"m\"",[361,1604,1321],{},[361,1606,1607],{},"\"n\"",", in lower case.",[406,1610,1611],{},[361,1612,1321],{},[385,1614,1615,1620,1622,1624,1637],{},[406,1616,1617],{},[361,1618,1619],{},"country",[406,1621,1478],{},[406,1623,1481],{},[406,1625,1626,1627,1629,1630,1636],{},"A country ",[361,1628,363],{}," from ",[409,1631,1633],{"href":1632},"\u002Fapi\u002Fguides\u002Freference-data#countries",[361,1634,1635],{},"GET \u002Fv1\u002Fcountry",". An id only: names and ISO codes are refused.",[406,1638,1639],{},[361,1640,1333],{},[385,1642,1643,1647,1649,1651,1669],{},[406,1644,1645],{},[361,1646,1440],{},[406,1648,1478],{},[406,1650,1481],{},[406,1652,1653,1654,1629,1656,1662,1663,986,1666,596],{},"A grade ",[361,1655,363],{},[409,1657,1659],{"href":1658},"\u002Fapi\u002Fguides\u002Freference-data#grades",[361,1660,1661],{},"GET \u002Fv1\u002Fgrade",", or the grade's name. Always a string: the number ",[361,1664,1665],{},"9",[361,1667,1668],{},"grade must be a string",[406,1670,1671],{},[361,1672,1673],{},"\"9\"",[385,1675,1676,1680,1682,1684,1692],{},[406,1677,1678],{},[361,1679,1434],{},[406,1681,1478],{},[406,1683,1481],{},[406,1685,1686,1687,1689,1690,596],{},"A city's ",[361,1688,363],{},", or its name within ",[361,1691,1619],{},[406,1693,1694],{},[361,1695,1696],{},"\"Berlin\"",[385,1698,1699,1703,1705,1707,1716],{},[406,1700,1701],{},[361,1702,1437],{},[406,1704,1478],{},[406,1706,1481],{},[406,1708,1709,1710,1689,1712,889,1714,596],{},"A school's ",[361,1711,363],{},[361,1713,1619],{},[361,1715,1434],{},[406,1717,1718],{},[361,1719,1720],{},"\"Berlin International School\"",[385,1722,1723,1728,1730,1733,1742],{},[406,1724,1725],{},[361,1726,1727],{},"phone",[406,1729,1478],{},[406,1731,1732],{},"no",[406,1734,1735,1736,986,1738,1741],{},"Any string; not validated. ",[361,1737,985],{},[361,1739,1740],{},"phone must be a string",": leave the field out instead. International format is the most useful to everyone who reads it.",[406,1743,1744],{},[361,1745,1297],{},[385,1747,1748,1752,1755,1757,1776],{},[406,1749,1750],{},[361,1751,804],{},[406,1753,1754],{},"array of strings",[406,1756,1732],{},[406,1758,1759,1761,1762,1766,1767,1770,1771,986,1773,1775],{},[361,1760,826],{}," or organization slugs (",[409,1763,1765],{"href":1764},"#which-organizations-a-student-is-entered-on","above","). Defaults to ",[361,1768,1769],{},"[\"common\"]",". ",[361,1772,985],{},[361,1774,991],{},": leave the field out instead.",[406,1777,1778],{},[361,1779,1769],{},[385,1781,1782,1787,1789,1791,1803],{},[406,1783,1784],{},[361,1785,1786],{},"password",[406,1788,1478],{},[406,1790,1732],{},[406,1792,1793,1794,421,1797,1799,1800,1802],{},"Only from an account that also holds ",[361,1795,1796],{},"auth\u002Fsignin",[361,1798,424],{},"; 5 characters to 72 bytes; see ",[409,1801,68],{"href":69},". Never returned.",[406,1804,1805],{},[361,1806,1807],{},"\"grapefruit lantern quarry\"",[357,1809,1810,1811,1814],{},"Leave ",[361,1812,1813],{},"email2"," out. It exists to catch automated form spam, and a registration that fills it in is\nrefused.",[357,1816,1817,1818,889,1820,1823,1824,837,1827,837,1830,588,1833,837,1836,837,1838,889,1841,1844],{},"Every other property is refused with ",[361,1819,858],{},[361,1821,1822],{},"property \u003Cname> should not exist",", naming it. That\nincludes fields a student record has but you may not set: ",[361,1825,1826],{},"username",[361,1828,1829],{},"fullName",[361,1831,1832],{},"emailConfirmed",[361,1834,1835],{},"supervisor",[361,1837,666],{},[361,1839,1840],{},"userType",[361,1842,1843],{},"roles",". The API sets those itself, or they belong to the\nstudent and the platform.",[357,1846,1847,1849,1850,889,1852,581,1854,1856],{},[361,1848,1829],{}," is derived from ",[361,1851,1475],{},[361,1853,1495],{},[361,1855,1261],{},"), and kept in step when either\nchanges. Certificates and reports print it.",[918,1858,1860],{"id":1859},"what-happens-in-order","What happens, in order",[357,1862,1863],{},"Each step runs only if the one before it passed, and no student is created unless every step passes.",[1865,1866,1867,1880,1891,1908,1917,1937,1947],"ol",{},[758,1868,1869,606,1872,574,1875,581,1877,1534],{},[369,1870,1871],{},"Your token and permission.",[361,1873,1874],{},"401",[361,1876,878],{},[361,1878,1879],{},"Insufficient role permissions",[758,1881,1882,606,1885,1887,1888,1890],{},[369,1883,1884],{},"The body.",[361,1886,858],{}," for a missing or malformed field, including a ",[361,1889,1545],{}," date that does not\nexist, or a property the API does not accept.",[758,1892,1893,1896,1897,1899,1900,1902,1903,1905,1906,596],{},[369,1894,1895],{},"The password permission."," If the body has a ",[361,1898,1786],{},", the account must also hold ",[361,1901,1796],{},"\non ",[361,1904,424],{},", or the answer is ",[361,1907,878],{},[758,1909,1910,1913,1914,1916],{},[369,1911,1912],{},"A duplicate on your account."," If one of your students already has this email: ",[361,1915,766],{},", with that\nstudent's id in the message.",[758,1918,1919,606,1922,837,1924,837,1926,889,1928,1930,1931,1933,1934,1534],{},[369,1920,1921],{},"Reference fields.",[361,1923,1619],{},[361,1925,1440],{},[361,1927,1434],{},[361,1929,1437],{}," are resolved to stored ids, or the\nanswer is ",[361,1932,858],{}," naming the field (",[409,1935,1008],{"href":1936},"#how-reference-fields-resolve",[758,1938,1939,1942,1943,1534],{},[369,1940,1941],{},"The username"," is created (",[409,1944,1946],{"href":1945},"#usernames","Usernames",[758,1948,1949,606,1952,1954],{},[369,1950,1951],{},"The write.",[361,1953,766],{}," if the email belongs to a student on another account.",[357,1956,1957,1958,1962],{},"When a body breaks several rules, the error message names one of them. Fix it and send again.\n",[409,1959,1961],{"href":1960},"#check-a-registration-first","Checking a registration first"," runs steps 2, 4 and 5, and the part of\nstep 6 that needs the country, without creating anyone, and names every reference that fails.",[918,1964,1966],{"id":1965},"handling-the-answers","Handling the answers",[1023,1968,1972],{"className":1969,"code":1970,"filename":308,"language":1971,"meta":1028,"style":1028},"language-js shiki shiki-themes github-light-high-contrast github-dark-high-contrast","const BASE = 'https:\u002F\u002Fapi.main-team.org\u002Fv1';\n\nexport async function registerStudent(token, student) {\n  const res = await fetch(`${BASE}\u002Fstudent`, {\n    method: 'POST',\n    headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application\u002Fjson' },\n    body: JSON.stringify(student),\n  });\n  const body = await res.json();\n  if (res.status === 201) return { created: true, student: body.data };\n\n  const { code, message, request_id } = body.error;\n  if (res.status === 409) {\n    \u002F\u002F Already one of yours: the message ends with \"(\u003CstudentId>)\".\n    const mine = message.match(\u002F\\(([0-9a-f]{24})\\)\\.$\u002F);\n    if (mine) return { created: false, existingId: mine[1] };\n    \u002F\u002F Held by a student on another account: this address cannot be used.\n    throw new Error(`Email in use elsewhere: ${student.email} (request ${request_id})`);\n  }\n  throw new Error(`${res.status} ${code}: ${message} (request ${request_id})`);\n}\n","js",[361,1973,1974,1991,1997,2026,2056,2066,2092,2108,2113,2132,2160,2164,2192,2205,2211,2258,2281,2286,2318,2322,2361],{"__ignoreMap":1028},[1032,1975,1976,1979,1982,1985,1988],{"class":1034,"line":1035},[1032,1977,1978],{"class":1053},"const",[1032,1980,1981],{"class":1042}," BASE",[1032,1983,1984],{"class":1053}," =",[1032,1986,1987],{"class":1046}," 'https:\u002F\u002Fapi.main-team.org\u002Fv1'",[1032,1989,1990],{"class":1066},";\n",[1032,1992,1993],{"class":1034,"line":1057},[1032,1994,1996],{"emptyLinePlaceholder":1995},true,"\n",[1032,1998,1999,2002,2005,2008,2012,2015,2018,2020,2023],{"class":1034,"line":1075},[1032,2000,2001],{"class":1053},"export",[1032,2003,2004],{"class":1053}," async",[1032,2006,2007],{"class":1053}," function",[1032,2009,2011],{"class":2010},"sKwhi"," registerStudent",[1032,2013,2014],{"class":1066},"(",[1032,2016,2017],{"class":1038},"token",[1032,2019,837],{"class":1066},[1032,2021,2022],{"class":1038},"student",[1032,2024,2025],{"class":1066},") {\n",[1032,2027,2028,2031,2034,2036,2039,2042,2044,2047,2050,2053],{"class":1034,"line":1085},[1032,2029,2030],{"class":1053},"  const",[1032,2032,2033],{"class":1042}," res",[1032,2035,1984],{"class":1053},[1032,2037,2038],{"class":1053}," await",[1032,2040,2041],{"class":2010}," fetch",[1032,2043,2014],{"class":1066},[1032,2045,2046],{"class":1046},"`${",[1032,2048,2049],{"class":1042},"BASE",[1032,2051,2052],{"class":1046},"}\u002Fstudent`",[1032,2054,2055],{"class":1066},", {\n",[1032,2057,2058,2061,2064],{"class":1034,"line":1094},[1032,2059,2060],{"class":1066},"    method: ",[1032,2062,2063],{"class":1046},"'POST'",[1032,2065,588],{"class":1066},[1032,2067,2068,2071,2074,2076,2079,2081,2084,2086,2089],{"class":1034,"line":1100},[1032,2069,2070],{"class":1066},"    headers: { Authorization: ",[1032,2072,2073],{"class":1046},"`Bearer ${",[1032,2075,2017],{"class":1066},[1032,2077,2078],{"class":1046},"}`",[1032,2080,837],{"class":1066},[1032,2082,2083],{"class":1046},"'Content-Type'",[1032,2085,1178],{"class":1066},[1032,2087,2088],{"class":1046},"'application\u002Fjson'",[1032,2090,2091],{"class":1066}," },\n",[1032,2093,2094,2097,2100,2102,2105],{"class":1034,"line":1106},[1032,2095,2096],{"class":1066},"    body: ",[1032,2098,2099],{"class":1042},"JSON",[1032,2101,596],{"class":1066},[1032,2103,2104],{"class":2010},"stringify",[1032,2106,2107],{"class":1066},"(student),\n",[1032,2109,2110],{"class":1034,"line":1112},[1032,2111,2112],{"class":1066},"  });\n",[1032,2114,2115,2117,2120,2122,2124,2127,2129],{"class":1034,"line":1118},[1032,2116,2030],{"class":1053},[1032,2118,2119],{"class":1042}," body",[1032,2121,1984],{"class":1053},[1032,2123,2038],{"class":1053},[1032,2125,2126],{"class":1066}," res.",[1032,2128,1162],{"class":2010},[1032,2130,2131],{"class":1066},"();\n",[1032,2133,2134,2137,2140,2143,2146,2149,2152,2155,2157],{"class":1034,"line":1124},[1032,2135,2136],{"class":1053},"  if",[1032,2138,2139],{"class":1066}," (res.status ",[1032,2141,2142],{"class":1053},"===",[1032,2144,2145],{"class":1042}," 201",[1032,2147,2148],{"class":1066},") ",[1032,2150,2151],{"class":1053},"return",[1032,2153,2154],{"class":1066}," { created: ",[1032,2156,1181],{"class":1042},[1032,2158,2159],{"class":1066},", student: body.data };\n",[1032,2161,2162],{"class":1034,"line":1130},[1032,2163,1996],{"emptyLinePlaceholder":1995},[1032,2165,2166,2168,2171,2173,2175,2178,2180,2183,2186,2189],{"class":1034,"line":1136},[1032,2167,2030],{"class":1053},[1032,2169,2170],{"class":1066}," { ",[1032,2172,361],{"class":1042},[1032,2174,837],{"class":1066},[1032,2176,2177],{"class":1042},"message",[1032,2179,837],{"class":1066},[1032,2181,2182],{"class":1042},"request_id",[1032,2184,2185],{"class":1066}," } ",[1032,2187,2188],{"class":1053},"=",[1032,2190,2191],{"class":1066}," body.error;\n",[1032,2193,2194,2196,2198,2200,2203],{"class":1034,"line":1142},[1032,2195,2136],{"class":1053},[1032,2197,2139],{"class":1066},[1032,2199,2142],{"class":1053},[1032,2201,2202],{"class":1042}," 409",[1032,2204,2025],{"class":1066},[1032,2206,2207],{"class":1034,"line":1148},[1032,2208,2210],{"class":2209},"sLBg1","    \u002F\u002F Already one of yours: the message ends with \"(\u003CstudentId>)\".\n",[1032,2212,2213,2216,2219,2221,2224,2227,2229,2232,2236,2238,2241,2244,2247,2250,2253,2255],{"class":1034,"line":1154},[1032,2214,2215],{"class":1053},"    const",[1032,2217,2218],{"class":1042}," mine",[1032,2220,1984],{"class":1053},[1032,2222,2223],{"class":1066}," message.",[1032,2225,2226],{"class":2010},"match",[1032,2228,2014],{"class":1066},[1032,2230,2231],{"class":1046},"\u002F",[1032,2233,2235],{"class":2234},"sJaa3","\\(",[1032,2237,2014],{"class":1046},[1032,2239,2240],{"class":1042},"[0-9a-f]",[1032,2242,2243],{"class":1053},"{24}",[1032,2245,2246],{"class":1046},")",[1032,2248,2249],{"class":2234},"\\)\\.",[1032,2251,2252],{"class":1053},"$",[1032,2254,2231],{"class":1046},[1032,2256,2257],{"class":1066},");\n",[1032,2259,2260,2263,2266,2268,2270,2272,2275,2278],{"class":1034,"line":1338},[1032,2261,2262],{"class":1053},"    if",[1032,2264,2265],{"class":1066}," (mine) ",[1032,2267,2151],{"class":1053},[1032,2269,2154],{"class":1066},[1032,2271,1285],{"class":1042},[1032,2273,2274],{"class":1066},", existingId: mine[",[1032,2276,2277],{"class":1042},"1",[1032,2279,2280],{"class":1066},"] };\n",[1032,2282,2283],{"class":1034,"line":1351},[1032,2284,2285],{"class":2209},"    \u002F\u002F Held by a student on another account: this address cannot be used.\n",[1032,2287,2288,2291,2294,2297,2299,2302,2304,2306,2308,2311,2313,2316],{"class":1034,"line":1364},[1032,2289,2290],{"class":1053},"    throw",[1032,2292,2293],{"class":1053}," new",[1032,2295,2296],{"class":2010}," Error",[1032,2298,2014],{"class":1066},[1032,2300,2301],{"class":1046},"`Email in use elsewhere: ${",[1032,2303,2022],{"class":1066},[1032,2305,596],{"class":1046},[1032,2307,1518],{"class":1066},[1032,2309,2310],{"class":1046},"} (request ${",[1032,2312,2182],{"class":1066},[1032,2314,2315],{"class":1046},"})`",[1032,2317,2257],{"class":1066},[1032,2319,2320],{"class":1034,"line":1377},[1032,2321,1418],{"class":1066},[1032,2323,2324,2327,2329,2331,2333,2335,2338,2340,2343,2346,2348,2351,2353,2355,2357,2359],{"class":1034,"line":1391},[1032,2325,2326],{"class":1053},"  throw",[1032,2328,2293],{"class":1053},[1032,2330,2296],{"class":2010},[1032,2332,2014],{"class":1066},[1032,2334,2046],{"class":1046},[1032,2336,2337],{"class":1066},"res",[1032,2339,596],{"class":1046},[1032,2341,2342],{"class":1066},"status",[1032,2344,2345],{"class":1046},"} ${",[1032,2347,361],{"class":1066},[1032,2349,2350],{"class":1046},"}: ${",[1032,2352,2177],{"class":1066},[1032,2354,2310],{"class":1046},[1032,2356,2182],{"class":1066},[1032,2358,2315],{"class":1046},[1032,2360,2257],{"class":1066},[1032,2362,2363],{"class":1034,"line":1404},[1032,2364,1424],{"class":1066},[1023,2366,2370],{"className":2367,"code":2368,"filename":311,"language":2369,"meta":1028,"style":1028},"language-php shiki shiki-themes github-light-high-contrast github-dark-high-contrast","\u003C?php\nconst MT_BASE = 'https:\u002F\u002Fapi.main-team.org\u002Fv1';\n\nfunction mt_register_student(string $token, array $student): array\n{\n    $ch = curl_init(MT_BASE . '\u002Fstudent');\n    curl_setopt_array($ch, [\n        CURLOPT_POST => true,\n        CURLOPT_RETURNTRANSFER => true,\n        CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token, 'Content-Type: application\u002Fjson'],\n        CURLOPT_POSTFIELDS => json_encode($student),\n        CURLOPT_TIMEOUT => 30,\n    ]);\n    $raw = curl_exec($ch);\n    $status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\n    curl_close($ch);\n    $body = json_decode($raw, true);\n\n    if ($status === 201) {\n        return ['created' => true, 'student' => $body['data']];\n    }\n    $error = $body['error'];\n    if ($status === 409) {\n        \u002F\u002F Already one of yours: the message ends with \"(\u003CstudentId>)\".\n        if (preg_match('\u002F\\(([0-9a-f]{24})\\)\\.$\u002F', $error['message'], $m)) {\n            return ['created' => false, 'existingId' => $m[1]];\n        }\n        throw new RuntimeException(\"Email in use elsewhere: {$student['email']} (request {$error['request_id']})\");\n    }\n    throw new RuntimeException(\"$status {$error['code']}: {$error['message']} (request {$error['request_id']})\");\n}\n","php",[361,2371,2372,2380,2393,2397,2424,2428,2451,2459,2472,2483,2505,2518,2530,2535,2548,2566,2573,2590,2594,2607,2637,2642,2657,2669,2675,2712,2741,2747,2777,2782,2817],{"__ignoreMap":1028},[1032,2373,2374,2377],{"class":1034,"line":1035},[1032,2375,2376],{"class":1053},"\u003C?",[1032,2378,2379],{"class":1042},"php\n",[1032,2381,2382,2384,2387,2389,2391],{"class":1034,"line":1057},[1032,2383,1978],{"class":1053},[1032,2385,2386],{"class":1042}," MT_BASE",[1032,2388,1984],{"class":1053},[1032,2390,1987],{"class":1046},[1032,2392,1990],{"class":1066},[1032,2394,2395],{"class":1034,"line":1075},[1032,2396,1996],{"emptyLinePlaceholder":1995},[1032,2398,2399,2402,2405,2407,2409,2412,2415,2418,2421],{"class":1034,"line":1085},[1032,2400,2401],{"class":1053},"function",[1032,2403,2404],{"class":2010}," mt_register_student",[1032,2406,2014],{"class":1066},[1032,2408,1478],{"class":1053},[1032,2410,2411],{"class":1066}," $token, ",[1032,2413,2414],{"class":1053},"array",[1032,2416,2417],{"class":1066}," $student)",[1032,2419,2420],{"class":1053},":",[1032,2422,2423],{"class":1053}," array\n",[1032,2425,2426],{"class":1034,"line":1094},[1032,2427,1169],{"class":1066},[1032,2429,2430,2433,2435,2438,2440,2443,2446,2449],{"class":1034,"line":1100},[1032,2431,2432],{"class":1066},"    $ch ",[1032,2434,2188],{"class":1053},[1032,2436,2437],{"class":1042}," curl_init",[1032,2439,2014],{"class":1066},[1032,2441,2442],{"class":1042},"MT_BASE",[1032,2444,2445],{"class":1053}," .",[1032,2447,2448],{"class":1046}," '\u002Fstudent'",[1032,2450,2257],{"class":1066},[1032,2452,2453,2456],{"class":1034,"line":1106},[1032,2454,2455],{"class":1042},"    curl_setopt_array",[1032,2457,2458],{"class":1066},"($ch, [\n",[1032,2460,2461,2464,2467,2470],{"class":1034,"line":1112},[1032,2462,2463],{"class":1042},"        CURLOPT_POST",[1032,2465,2466],{"class":1053}," =>",[1032,2468,2469],{"class":1042}," true",[1032,2471,588],{"class":1066},[1032,2473,2474,2477,2479,2481],{"class":1034,"line":1118},[1032,2475,2476],{"class":1042},"        CURLOPT_RETURNTRANSFER",[1032,2478,2466],{"class":1053},[1032,2480,2469],{"class":1042},[1032,2482,588],{"class":1066},[1032,2484,2485,2488,2490,2493,2496,2498,2500,2503],{"class":1034,"line":1124},[1032,2486,2487],{"class":1042},"        CURLOPT_HTTPHEADER",[1032,2489,2466],{"class":1053},[1032,2491,2492],{"class":1066}," [",[1032,2494,2495],{"class":1046},"'Authorization: Bearer '",[1032,2497,2445],{"class":1053},[1032,2499,2411],{"class":1066},[1032,2501,2502],{"class":1046},"'Content-Type: application\u002Fjson'",[1032,2504,1388],{"class":1066},[1032,2506,2507,2510,2512,2515],{"class":1034,"line":1130},[1032,2508,2509],{"class":1042},"        CURLOPT_POSTFIELDS",[1032,2511,2466],{"class":1053},[1032,2513,2514],{"class":1042}," json_encode",[1032,2516,2517],{"class":1066},"($student),\n",[1032,2519,2520,2523,2525,2528],{"class":1034,"line":1136},[1032,2521,2522],{"class":1042},"        CURLOPT_TIMEOUT",[1032,2524,2466],{"class":1053},[1032,2526,2527],{"class":1042}," 30",[1032,2529,588],{"class":1066},[1032,2531,2532],{"class":1034,"line":1142},[1032,2533,2534],{"class":1066},"    ]);\n",[1032,2536,2537,2540,2542,2545],{"class":1034,"line":1148},[1032,2538,2539],{"class":1066},"    $raw ",[1032,2541,2188],{"class":1053},[1032,2543,2544],{"class":1042}," curl_exec",[1032,2546,2547],{"class":1066},"($ch);\n",[1032,2549,2550,2553,2555,2558,2561,2564],{"class":1034,"line":1154},[1032,2551,2552],{"class":1066},"    $status ",[1032,2554,2188],{"class":1053},[1032,2556,2557],{"class":1042}," curl_getinfo",[1032,2559,2560],{"class":1066},"($ch, ",[1032,2562,2563],{"class":1042},"CURLINFO_RESPONSE_CODE",[1032,2565,2257],{"class":1066},[1032,2567,2568,2571],{"class":1034,"line":1338},[1032,2569,2570],{"class":1042},"    curl_close",[1032,2572,2547],{"class":1066},[1032,2574,2575,2578,2580,2583,2586,2588],{"class":1034,"line":1351},[1032,2576,2577],{"class":1066},"    $body ",[1032,2579,2188],{"class":1053},[1032,2581,2582],{"class":1042}," json_decode",[1032,2584,2585],{"class":1066},"($raw, ",[1032,2587,1181],{"class":1042},[1032,2589,2257],{"class":1066},[1032,2591,2592],{"class":1034,"line":1364},[1032,2593,1996],{"emptyLinePlaceholder":1995},[1032,2595,2596,2598,2601,2603,2605],{"class":1034,"line":1377},[1032,2597,2262],{"class":1053},[1032,2599,2600],{"class":1066}," ($status ",[1032,2602,2142],{"class":1053},[1032,2604,2145],{"class":1042},[1032,2606,2025],{"class":1066},[1032,2608,2609,2612,2614,2617,2619,2621,2623,2626,2628,2631,2634],{"class":1034,"line":1391},[1032,2610,2611],{"class":1053},"        return",[1032,2613,2492],{"class":1066},[1032,2615,2616],{"class":1046},"'created'",[1032,2618,2466],{"class":1053},[1032,2620,2469],{"class":1042},[1032,2622,837],{"class":1066},[1032,2624,2625],{"class":1046},"'student'",[1032,2627,2466],{"class":1053},[1032,2629,2630],{"class":1066}," $body[",[1032,2632,2633],{"class":1046},"'data'",[1032,2635,2636],{"class":1066},"]];\n",[1032,2638,2639],{"class":1034,"line":1404},[1032,2640,2641],{"class":1066},"    }\n",[1032,2643,2644,2647,2649,2651,2654],{"class":1034,"line":1415},[1032,2645,2646],{"class":1066},"    $error ",[1032,2648,2188],{"class":1053},[1032,2650,2630],{"class":1066},[1032,2652,2653],{"class":1046},"'error'",[1032,2655,2656],{"class":1066},"];\n",[1032,2658,2659,2661,2663,2665,2667],{"class":1034,"line":1421},[1032,2660,2262],{"class":1053},[1032,2662,2600],{"class":1066},[1032,2664,2142],{"class":1053},[1032,2666,2202],{"class":1042},[1032,2668,2025],{"class":1066},[1032,2670,2672],{"class":1034,"line":2671},24,[1032,2673,2674],{"class":2209},"        \u002F\u002F Already one of yours: the message ends with \"(\u003CstudentId>)\".\n",[1032,2676,2678,2681,2683,2686,2688,2691,2693,2696,2698,2700,2703,2706,2709],{"class":1034,"line":2677},25,[1032,2679,2680],{"class":1053},"        if",[1032,2682,581],{"class":1066},[1032,2684,2685],{"class":1042},"preg_match",[1032,2687,2014],{"class":1066},[1032,2689,2690],{"class":1046},"'\u002F",[1032,2692,2235],{"class":2234},[1032,2694,2695],{"class":1046},"([0-9a-f]{24})",[1032,2697,2249],{"class":2234},[1032,2699,2252],{"class":1053},[1032,2701,2702],{"class":1046},"\u002F'",[1032,2704,2705],{"class":1066},", $error[",[1032,2707,2708],{"class":1046},"'message'",[1032,2710,2711],{"class":1066},"], $m)) {\n",[1032,2713,2715,2718,2720,2722,2724,2727,2729,2732,2734,2737,2739],{"class":1034,"line":2714},26,[1032,2716,2717],{"class":1053},"            return",[1032,2719,2492],{"class":1066},[1032,2721,2616],{"class":1046},[1032,2723,2466],{"class":1053},[1032,2725,2726],{"class":1042}," false",[1032,2728,837],{"class":1066},[1032,2730,2731],{"class":1046},"'existingId'",[1032,2733,2466],{"class":1053},[1032,2735,2736],{"class":1066}," $m[",[1032,2738,2277],{"class":1042},[1032,2740,2636],{"class":1066},[1032,2742,2744],{"class":1034,"line":2743},27,[1032,2745,2746],{"class":1066},"        }\n",[1032,2748,2750,2753,2755,2758,2760,2763,2766,2769,2772,2775],{"class":1034,"line":2749},28,[1032,2751,2752],{"class":1053},"        throw",[1032,2754,2293],{"class":1053},[1032,2756,2757],{"class":1042}," RuntimeException",[1032,2759,2014],{"class":1066},[1032,2761,2762],{"class":1046},"\"Email in use elsewhere: {",[1032,2764,2765],{"class":1066},"$student",[1032,2767,2768],{"class":1046},"['email']} (request {",[1032,2770,2771],{"class":1066},"$error",[1032,2773,2774],{"class":1046},"['request_id']})\"",[1032,2776,2257],{"class":1066},[1032,2778,2780],{"class":1034,"line":2779},29,[1032,2781,2641],{"class":1066},[1032,2783,2785,2787,2789,2791,2793,2795,2798,2801,2803,2806,2808,2811,2813,2815],{"class":1034,"line":2784},30,[1032,2786,2290],{"class":1053},[1032,2788,2293],{"class":1053},[1032,2790,2757],{"class":1042},[1032,2792,2014],{"class":1066},[1032,2794,1070],{"class":1046},[1032,2796,2797],{"class":1066},"$status",[1032,2799,2800],{"class":1046}," {",[1032,2802,2771],{"class":1066},[1032,2804,2805],{"class":1046},"['code']}: {",[1032,2807,2771],{"class":1066},[1032,2809,2810],{"class":1046},"['message']} (request {",[1032,2812,2771],{"class":1066},[1032,2814,2774],{"class":1046},[1032,2816,2257],{"class":1066},[1032,2818,2820],{"class":1034,"line":2819},31,[1032,2821,1424],{"class":1066},[374,2823,2825],{"id":2824},"check-a-registration-first","Check a registration first",[357,2827,2828,2830,2831,2833,2834,2836,2837,421,2839,2841],{},[361,2829,439],{}," takes the body you would send to ",[361,2832,415],{},", without ",[361,2835,1786],{},", and\nruns the checks registration makes before it creates anything: the body's rules, a duplicate among\nyour students, and the four reference fields. It creates nothing, issues no username, and can be sent\nany number of times. It needs the permission registration needs, ",[361,2838,420],{},[361,2840,424],{},". Use it to\nvalidate a batch, or a form, before you register anyone.",[1023,2843,2845],{"className":1025,"code":2844,"language":1027,"meta":1028,"style":1028},"curl -X POST \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent\u002Fcheck\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"firstName\": \"Ada\",\n    \"lastName\": \"Lovelace\",\n    \"email\": \"ada.lovelace@example.org\",\n    \"birth\": \"14\u002F05\u002F2010\",\n    \"sex\": \"f\",\n    \"country\": \"630e0182c53dc79a6836e67e\",\n    \"grade\": \"9\",\n    \"city\": \"Berlin\",\n    \"school\": \"Berlin Harbour School\"\n  }'\n",[361,2846,2847,2860,2872,2880,2886,2890,2894,2898,2902,2906,2910,2914,2918,2923],{"__ignoreMap":1028},[1032,2848,2849,2851,2853,2855,2858],{"class":1034,"line":1035},[1032,2850,1039],{"class":1038},[1032,2852,1043],{"class":1042},[1032,2854,1047],{"class":1046},[1032,2856,2857],{"class":1046}," \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent\u002Fcheck\"",[1032,2859,1054],{"class":1053},[1032,2861,2862,2864,2866,2868,2870],{"class":1034,"line":1057},[1032,2863,1060],{"class":1042},[1032,2865,1063],{"class":1046},[1032,2867,1067],{"class":1066},[1032,2869,1070],{"class":1046},[1032,2871,1054],{"class":1053},[1032,2873,2874,2876,2878],{"class":1034,"line":1075},[1032,2875,1060],{"class":1042},[1032,2877,1080],{"class":1046},[1032,2879,1054],{"class":1053},[1032,2881,2882,2884],{"class":1034,"line":1085},[1032,2883,1088],{"class":1042},[1032,2885,1091],{"class":1046},[1032,2887,2888],{"class":1034,"line":1094},[1032,2889,1097],{"class":1046},[1032,2891,2892],{"class":1034,"line":1100},[1032,2893,1103],{"class":1046},[1032,2895,2896],{"class":1034,"line":1106},[1032,2897,1109],{"class":1046},[1032,2899,2900],{"class":1034,"line":1112},[1032,2901,1115],{"class":1046},[1032,2903,2904],{"class":1034,"line":1118},[1032,2905,1121],{"class":1046},[1032,2907,2908],{"class":1034,"line":1124},[1032,2909,1127],{"class":1046},[1032,2911,2912],{"class":1034,"line":1130},[1032,2913,1133],{"class":1046},[1032,2915,2916],{"class":1034,"line":1136},[1032,2917,1139],{"class":1046},[1032,2919,2920],{"class":1034,"line":1142},[1032,2921,2922],{"class":1046},"    \"school\": \"Berlin Harbour School\"\n",[1032,2924,2925],{"class":1034,"line":1148},[1032,2926,1157],{"class":1046},[1023,2928,2930],{"className":1160,"code":2929,"language":1162,"meta":1028,"style":1028},"{\n  \"success\": true,\n  \"message\": \"Registration checked. Nothing was created.\",\n  \"data\": {\n    \"valid\": false,\n    \"problems\": [\n      {\n        \"field\": \"school\",\n        \"message\": \"school is not a known school. This API does not create reference data.\"\n      }\n    ],\n    \"resolved\": {\n      \"country\": \"630e0182c53dc79a6836e67e\",\n      \"grade\": \"630e01826836e67ec53dc7a5\",\n      \"city\": \"6650e0a1b2c3d4e5f6a7b801\",\n      \"school\": null\n    },\n    \"duplicate\": { \"sameAccount\": false }\n  }\n}\n",[361,2931,2932,2936,2946,2957,2963,2974,2982,2987,2999,3009,3014,3019,3026,3037,3048,3059,3069,3074,3092,3096],{"__ignoreMap":1028},[1032,2933,2934],{"class":1034,"line":1035},[1032,2935,1169],{"class":1066},[1032,2937,2938,2940,2942,2944],{"class":1034,"line":1057},[1032,2939,1175],{"class":1174},[1032,2941,1178],{"class":1066},[1032,2943,1181],{"class":1042},[1032,2945,588],{"class":1066},[1032,2947,2948,2950,2952,2955],{"class":1034,"line":1075},[1032,2949,1188],{"class":1174},[1032,2951,1178],{"class":1066},[1032,2953,2954],{"class":1046},"\"Registration checked. Nothing was created.\"",[1032,2956,588],{"class":1066},[1032,2958,2959,2961],{"class":1034,"line":1085},[1032,2960,1200],{"class":1174},[1032,2962,1203],{"class":1066},[1032,2964,2965,2968,2970,2972],{"class":1034,"line":1094},[1032,2966,2967],{"class":1174},"    \"valid\"",[1032,2969,1178],{"class":1066},[1032,2971,1285],{"class":1042},[1032,2973,588],{"class":1066},[1032,2975,2976,2979],{"class":1034,"line":1100},[1032,2977,2978],{"class":1174},"    \"problems\"",[1032,2980,2981],{"class":1066},": [\n",[1032,2983,2984],{"class":1034,"line":1106},[1032,2985,2986],{"class":1066},"      {\n",[1032,2988,2989,2992,2994,2997],{"class":1034,"line":1112},[1032,2990,2991],{"class":1174},"        \"field\"",[1032,2993,1178],{"class":1066},[1032,2995,2996],{"class":1046},"\"school\"",[1032,2998,588],{"class":1066},[1032,3000,3001,3004,3006],{"class":1034,"line":1118},[1032,3002,3003],{"class":1174},"        \"message\"",[1032,3005,1178],{"class":1066},[1032,3007,3008],{"class":1046},"\"school is not a known school. This API does not create reference data.\"\n",[1032,3010,3011],{"class":1034,"line":1124},[1032,3012,3013],{"class":1066},"      }\n",[1032,3015,3016],{"class":1034,"line":1130},[1032,3017,3018],{"class":1066},"    ],\n",[1032,3020,3021,3024],{"class":1034,"line":1136},[1032,3022,3023],{"class":1174},"    \"resolved\"",[1032,3025,1203],{"class":1066},[1032,3027,3028,3031,3033,3035],{"class":1034,"line":1142},[1032,3029,3030],{"class":1174},"      \"country\"",[1032,3032,1178],{"class":1066},[1032,3034,1333],{"class":1046},[1032,3036,588],{"class":1066},[1032,3038,3039,3042,3044,3046],{"class":1034,"line":1148},[1032,3040,3041],{"class":1174},"      \"grade\"",[1032,3043,1178],{"class":1066},[1032,3045,1372],{"class":1046},[1032,3047,588],{"class":1066},[1032,3049,3050,3053,3055,3057],{"class":1034,"line":1154},[1032,3051,3052],{"class":1174},"      \"city\"",[1032,3054,1178],{"class":1066},[1032,3056,1346],{"class":1046},[1032,3058,588],{"class":1066},[1032,3060,3061,3064,3066],{"class":1034,"line":1338},[1032,3062,3063],{"class":1174},"      \"school\"",[1032,3065,1178],{"class":1066},[1032,3067,3068],{"class":1042},"null\n",[1032,3070,3071],{"class":1034,"line":1351},[1032,3072,3073],{"class":1066},"    },\n",[1032,3075,3076,3079,3082,3085,3087,3089],{"class":1034,"line":1364},[1032,3077,3078],{"class":1174},"    \"duplicate\"",[1032,3080,3081],{"class":1066},": { ",[1032,3083,3084],{"class":1174},"\"sameAccount\"",[1032,3086,1178],{"class":1066},[1032,3088,1285],{"class":1042},[1032,3090,3091],{"class":1066}," }\n",[1032,3093,3094],{"class":1034,"line":1377},[1032,3095,1418],{"class":1066},[1032,3097,3098],{"class":1034,"line":1391},[1032,3099,1424],{"class":1066},[379,3101,3102,3110],{},[382,3103,3104],{},[385,3105,3106,3108],{},[388,3107,1454],{},[388,3109,817],{},[401,3111,3112,3127,3150,3165],{},[385,3113,3114,3119],{},[406,3115,3116],{},[361,3117,3118],{},"valid",[406,3120,3121,3123,3124,3126],{},[361,3122,1181],{}," when ",[361,3125,415],{}," with the same body would pass every check made here.",[385,3128,3129,3134],{},[406,3130,3131],{},[361,3132,3133],{},"problems",[406,3135,3136,3137,3140,3141,837,3143,837,3145,837,3147,3149],{},"Every reference field that matches nothing, as ",[361,3138,3139],{},"{ field, message }",", with the message registration would refuse it with. Registration names only the first; the check names them all, in the order ",[361,3142,1619],{},[361,3144,1440],{},[361,3146,1434],{},[361,3148,1437],{},". A city or school named inside a country or city that matched nothing is not looked up, so fix the field above it first. A country whose students cannot be given a username is listed as well.",[385,3151,3152,3157],{},[406,3153,3154],{},[361,3155,3156],{},"resolved",[406,3158,3159,3160,3162,3163,596],{},"The ",[361,3161,363],{}," each reference resolved to, which is what registration would store, or ",[361,3164,985],{},[385,3166,3167,3172],{},[406,3168,3169],{},[361,3170,3171],{},"duplicate",[406,3173,3174,3177,3178,3180,3181,3184,3185,3187,3188,3190,3191,3193,3194,3196,3197,596],{},[361,3175,3176],{},"sameAccount"," is ",[361,3179,1181],{}," when one of your students already has this email address, and ",[361,3182,3183],{},"studentId"," is that student's ",[361,3186,363],{},": registration would answer ",[361,3189,766],{},". Nothing else is looked up then, so ",[361,3192,3133],{}," is empty and every ",[361,3195,3156],{}," value is ",[361,3198,985],{},[357,3200,3201,3202,3205,3206,3208,3209,3211,3212,596],{},"The answer is ",[361,3203,3204],{},"200"," whatever the lookups found. A body that breaks a field's rule is refused with\n",[361,3207,858],{},", exactly as registration refuses it, and so is ",[361,3210,1786],{},", with\n",[361,3213,3214],{},"property password should not exist",[598,3216,3217],{"type":600},[357,3218,3219,3225,3226,3228,3229,3232],{},[369,3220,3221,3224],{},[361,3222,3223],{},"valid: true"," is not a promise."," Only your own students are checked for the email address. An\naddress a student on another account holds is not looked for, so registration can still answer\n",[361,3227,766],{}," with ",[361,3230,3231],{},"That email address is already registered."," The check also cannot see a student\nregistered, or reference data changed, after it ran.",[374,3234,3236],{"id":3235},"how-reference-fields-resolve","How reference fields resolve",[357,3238,3239,837,3241,837,3243,889,3245,3247],{},[361,3240,1619],{},[361,3242,1440],{},[361,3244,1434],{},[361,3246,1437],{}," point at the platform's reference data. Whatever form you send,\nthe API looks it up and stores the matching record's id. A value that matches nothing is refused: the\nAPI never invents or creates reference data.",[379,3249,3250,3268],{},[382,3251,3252],{},[385,3253,3254,3256,3259,3262],{},[388,3255,1454],{},[388,3257,3258],{},"Accepts",[388,3260,3261],{},"A name is looked up",[388,3263,3264,3265,3267],{},"Refused with ",[361,3266,858],{}," when",[401,3269,3270,3292,3314,3336],{},[385,3271,3272,3276,3279,3282],{},[406,3273,3274],{},[361,3275,1619],{},[406,3277,3278],{},"an id only",[406,3280,3281],{},"(names are not accepted)",[406,3283,3284,3285,3288,3289],{},"not an id: ",[361,3286,3287],{},"country must be a mongodb id","; an id that matches nothing, or a country that cannot be selected: ",[361,3290,3291],{},"country is not a known country.",[385,3293,3294,3298,3301,3304],{},[406,3295,3296],{},[361,3297,1440],{},[406,3299,3300],{},"an id or a name",[406,3302,3303],{},"among all grades",[406,3305,3306,3307,3310,3311],{},"no grade has that id: ",[361,3308,3309],{},"grade is not a known grade.","; or that name: ",[361,3312,3313],{},"grade is not a known grade. This API does not create reference data.",[385,3315,3316,3320,3322,3325],{},[406,3317,3318],{},[361,3319,1434],{},[406,3321,3300],{},[406,3323,3324],{},"within the student's country",[406,3326,3327,3328,3331,3332,3335],{},"no match: ",[361,3329,3330],{},"city is not a known city."," (id) or ",[361,3333,3334],{},"city is not a known city. This API does not create reference data."," (name)",[385,3337,3338,3342,3344,3347],{},[406,3339,3340],{},[361,3341,1437],{},[406,3343,3300],{},[406,3345,3346],{},"within the student's country and city",[406,3348,3327,3349,3331,3352,3335],{},[361,3350,3351],{},"school is not a known school.",[361,3353,3354],{},"school is not a known school. This API does not create reference data.",[357,3356,3357],{},"The details:",[755,3359,3360,3366,3379,3389,3408,3418,3428],{},[758,3361,3362,3365],{},[369,3363,3364],{},"Id or name is decided per value."," A 24-character hex string is treated as an id and looked up as\none. Anything else is treated as a name. You can mix the forms freely, for example a country id with a\ncity name.",[758,3367,3368,606,3371,3374,3375,3378],{},[369,3369,3370],{},"Names ignore case and surrounding spaces.",[361,3372,3373],{},"\" tirana \""," finds ",[361,3376,3377],{},"TIRANA",". Reference names are\nstored in upper case, which is how they come back in reads.",[758,3380,3381,3384,3385,3388],{},[369,3382,3383],{},"Names are looked up inside the fields above them",", in the order country, city, school. A city\nnamed ",[361,3386,3387],{},"Springfield"," is only looked for in the student's country, and a school in that country and\ncity. An exact match always wins. Failing that, a city that is tied to no country matches, and a\nschool in the right country that is tied to no city matches. Some older entries are stored that\nway.",[758,3390,3391,3394,3395,574,3397,3399,3400,3402,3403,889,3405,3407],{},[369,3392,3393],{},"An id is only checked for existence."," A ",[361,3396,1434],{},[361,3398,1437],{}," given by id is accepted if that\nrecord exists, whether or not it lies in the student's country. When you change a student's\n",[361,3401,1619],{},", send ",[361,3404,1434],{},[361,3406,1437],{}," in the same request so the three still agree.",[758,3409,3410,606,3413,3417],{},[369,3411,3412],{},"Some countries cannot be selected.",[409,3414,3415],{"href":1632},[361,3416,1635],{},"\ndoes not list them, and a write that names one is refused exactly like an unknown id.",[758,3419,3420,3423,3424,596],{},[369,3421,3422],{},"There is no list of cities or schools."," Use the names your own records hold. If the platform\ndoes not know a real city or school, the API cannot add it: write to\n",[409,3425,3427],{"href":3426},"mailto:info@main-team.org","info@main-team.org",[758,3429,3430,3433],{},[369,3431,3432],{},"On an update",", a city or school name is resolved against the country and city in the same body\nor, when you leave them out, against the ones the student already has. You can change the school\nwithout repeating the country.",[598,3435,3436],{"type":600},[357,3437,3438,3441],{},[369,3439,3440],{},"Why the grade is strict."," Every exam is open to a set of grades, and grade ids are the same on every\norganization, so a student's grade is compared directly with the exam's. A grade the platform does not\nknow would be a student no exam could ever accept, so an unknown grade is refused, never created.",[374,3443,3445],{"id":3444},"what-the-api-never-creates","What the API never creates",[755,3447,3448,3454,3460,3469,3475,3485],{},[758,3449,3450,3453],{},[369,3451,3452],{},"Reference data."," No country, grade, city or school is ever created, whatever you send.",[758,3455,3456,3459],{},[369,3457,3458],{},"Users other than students."," Supervisors, parents and staff register through the platform. The API\nmanages students and nothing else.",[758,3461,3462,3465,3466,1534],{},[369,3463,3464],{},"Organization copies."," Only the student's first sign-in to an organization creates one\n(",[409,3467,1765],{"href":3468},"#the-core-record-and-organization-copies",[758,3470,3471,3474],{},[369,3472,3473],{},"Usernames of your choosing."," The API mints every username; you cannot set or change one.",[758,3476,3477,3480,3481,596],{},[369,3478,3479],{},"Email confirmation."," The API never marks an address as confirmed. A student confirms their own\naddress in the panel, with a 6-digit code emailed to them, and the panel asks for it on every page\nuntil they do. See ",[409,3482,3484],{"href":3483},"\u002Fapi\u002Fguides\u002Fsign-in-links#email-confirmation","Email confirmation",[758,3486,3487,3490,3491,3493],{},[369,3488,3489],{},"Messages to the student."," Registering a student through the API does not email them. Tell them\nyourself how they will get in; usually that is a ",[409,3492,656],{"href":81}," from\nyour own product.",[374,3495,1946],{"id":3496},"usernames",[357,3498,3499,3500,3502],{},"Every student gets a username when they are registered, and it is in every student response as\n",[361,3501,1826],{},". It is the identifier students and support staff use to refer to an account.",[357,3504,3505,3506,837,3509,3512,3513,3516,3517,3520,3521,3523],{},"The format is the country's two-letter code, one letter, then a number. In ",[361,3507,3508],{},"XXB1045",[361,3510,3511],{},"XX"," stands for\nthe country's code, ",[361,3514,3515],{},"B"," is the letter and ",[361,3518,3519],{},"1045"," the number. These pages write ",[361,3522,3511],{},", which is no\ncountry's code, so that no example is a real student's username.",[755,3525,3526,3541,3551,3565],{},[758,3527,3528,3531,3532,837,3535,889,3538,596],{},[369,3529,3530],{},"The letter"," is chosen at random from A to Z, leaving out ",[361,3533,3534],{},"P",[361,3536,3537],{},"S",[361,3539,3540],{},"T",[758,3542,3543,3546,3547,3550],{},[369,3544,3545],{},"The number"," counts up per country and letter, starting at ",[361,3548,3549],{},"1000",", so usernames are unique within\nthat series.",[758,3552,3553,3556,3557,3559,3560,837,3562,596],{},[369,3554,3555],{},"Usernames are upper case",", and read-only. Sending ",[361,3558,1826],{}," in any body is refused with\n",[361,3561,858],{},[361,3563,3564],{},"property username should not exist",[758,3566,3567,3570],{},[369,3568,3569],{},"A username never changes through the API",", not even when you change the student's country.",[357,3572,3573,3574,1534],{},"Because a username identifies the student to other people, it is not a secret. Never use it as, or in, a\npassword. The API refuses passwords that contain it (",[409,3575,68],{"href":69},[374,3577,3579],{"id":3578},"duplicate-email-addresses","Duplicate email addresses",[357,3581,3582],{},"An email address belongs to one student on the whole platform. Two refusals follow from that, and\nthey differ in whether they tell you who holds the address:",[379,3584,3585,3598],{},[382,3586,3587],{},[385,3588,3589,3592,3595],{},[388,3590,3591],{},"Situation",[388,3593,3594],{},"Status",[388,3596,3597],{},"Message",[401,3599,3600,3624],{},[385,3601,3602,3609,3619],{},[406,3603,3604,3605,3608],{},"One of ",[369,3606,3607],{},"your"," students already has the address",[406,3610,3611,606,3613],{},[361,3612,766],{},[409,3614,3616],{"href":3615},"\u002Fapi\u002Ferrors#conflict",[361,3617,3618],{},"conflict",[406,3620,3621],{},[361,3622,3623],{},"A student with that email is already registered to this account (6650f1a2b3c4d5e6f7a8b9c0).",[385,3625,3626,3633,3641],{},[406,3627,3628,3629,3632],{},"A student on ",[369,3630,3631],{},"another account",", or the platform's own users, has it",[406,3634,3635,606,3637],{},[361,3636,766],{},[409,3638,3639],{"href":3615},[361,3640,3618],{},[406,3642,3643],{},[361,3644,3231],{},[357,3646,3647,3648,3651],{},"In the first case, the id in the message is your existing student: fetch it with\n",[361,3649,3650],{},"GET \u002Fv1\u002Fstudent\u002F\u003Cid>",", or update it. In the second case you cannot see or claim that student. Ask for\na different address.",[357,3653,3654,3655,3658,3659,3662,3663,3665],{},"Addresses are compared without regard to letter case: ",[361,3656,3657],{},"Ada.Lovelace@Example.org"," is the same address\nas ",[361,3660,3661],{},"ada.lovelace@example.org",". An address with spaces around it is refused with ",[361,3664,858],{}," before any\ncomparison, so trim addresses on your side.",[598,3667,3669],{"type":3668},"warn",[357,3670,3671,3674,3675,3677,3678,3680,3681,3684],{},[369,3672,3673],{},"Registration is not idempotent."," Sending the same registration twice never creates two students.\nThe second attempt is refused with ",[361,3676,766],{},", which is how you know. If a registration times out,\nretry it: a ",[361,3679,766],{}," that names an id means the first attempt worked, and that id is your student. If two\nidentical registrations run at the same moment, the loser may get the message without an id. Look the\nstudent up in your list before you treat the address as taken elsewhere.\n",[409,3682,3683],{"href":49},"Retries and idempotency"," covers this pattern.",[357,3686,3687,3688,859,3690,3692],{},"An update that moves a student to an address another student already holds is refused with ",[361,3689,766],{},[361,3691,3231],{},", without an id, even when the other student is one of\nyours.",[374,3694,3696],{"id":3695},"read-students","Read students",[918,3698,3700],{"id":3699},"all-your-students","All your students",[1023,3702,3704],{"className":1025,"code":3703,"language":1027,"meta":1028,"style":1028},"curl \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent?page=1&limit=50\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[361,3705,3706,3715],{"__ignoreMap":1028},[1032,3707,3708,3710,3713],{"class":1034,"line":1035},[1032,3709,1039],{"class":1038},[1032,3711,3712],{"class":1046}," \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent?page=1&limit=50\"",[1032,3714,1054],{"class":1053},[1032,3716,3717,3719,3721,3723],{"class":1034,"line":1057},[1032,3718,1060],{"class":1042},[1032,3720,1063],{"class":1046},[1032,3722,1067],{"class":1066},[1032,3724,3725],{"class":1046},"\"\n",[1023,3727,3729],{"className":1160,"code":3728,"language":1162,"meta":1028,"style":1028},"{\n  \"success\": true,\n  \"message\": \"Students fetched successfully.\",\n  \"data\": [\n    {\n      \"_id\": \"6650f1a2b3c4d5e6f7a8b9c0\",\n      \"username\": \"XXB1045\",\n      \"firstName\": \"Ada\",\n      \"lastName\": \"Lovelace\",\n      \"fullName\": \"Ada Lovelace\",\n      \"email\": \"ada.lovelace@example.org\",\n      \"emailConfirmed\": false,\n      \"phone\": \"+49 30 123 4567\",\n      \"birth\": \"14\u002F05\u002F2010\",\n      \"sex\": \"f\",\n      \"country\": {\n        \"_id\": \"630e0182c53dc79a6836e67e\",\n        \"name\": \"GERMANY\",\n        \"iso2\": \"DE\",\n        \"iso3\": \"DEU\",\n        \"createdAt\": \"2022-08-30T12:14:26.118Z\",\n        \"updatedAt\": \"2022-08-30T12:14:26.118Z\"\n      },\n      \"city\": {\n        \"_id\": \"6650e0a1b2c3d4e5f6a7b801\",\n        \"name\": \"TIRANA\",\n        \"country\": \"630e0182c53dc79a6836e67e\"\n      },\n      \"school\": {\n        \"_id\": \"6650e0a1b2c3d4e5f6a7b8c2\",\n        \"name\": \"TIRANA INTERNATIONAL SCHOOL\",\n        \"country\": \"630e0182c53dc79a6836e67e\",\n        \"city\": \"6650e0a1b2c3d4e5f6a7b801\"\n      },\n      \"grade\": {\n        \"_id\": \"630e01826836e67ec53dc7a5\",\n        \"name\": \"9\",\n        \"createdAt\": \"2022-08-30T12:14:26.309Z\",\n        \"updatedAt\": \"2022-08-30T12:14:26.309Z\"\n      },\n      \"supervisor\": {\n        \"_id\": \"64c1d2e3f4a5b6c7d8e9f0a1\",\n        \"firstName\": \"Deniz\",\n        \"lastName\": \"Kaya\",\n        \"fullName\": \"Deniz Kaya\",\n        \"username\": \"XXT1003\"\n      },\n      \"activatedPlatformsThisSeason\": [\"common\"],\n      \"createdAt\": \"2026-09-15T09:12:44.512Z\",\n      \"updatedAt\": \"2026-09-15T09:12:44.512Z\"\n    }\n  ],\n  \"pagination\": { \"page\": 1, \"limit\": 50, \"total\": 312, \"totalPages\": 7 }\n}\n",[361,3730,3731,3735,3745,3756,3762,3767,3778,3789,3800,3811,3822,3833,3844,3855,3866,3877,3883,3894,3906,3918,3930,3942,3952,3957,3963,3973,3984,3994,3998,4004,4014,4025,4036,4047,4052,4059,4070,4081,4093,4103,4108,4116,4128,4141,4154,4167,4178,4183,4195,4207,4217,4222,4228,4275],{"__ignoreMap":1028},[1032,3732,3733],{"class":1034,"line":1035},[1032,3734,1169],{"class":1066},[1032,3736,3737,3739,3741,3743],{"class":1034,"line":1057},[1032,3738,1175],{"class":1174},[1032,3740,1178],{"class":1066},[1032,3742,1181],{"class":1042},[1032,3744,588],{"class":1066},[1032,3746,3747,3749,3751,3754],{"class":1034,"line":1075},[1032,3748,1188],{"class":1174},[1032,3750,1178],{"class":1066},[1032,3752,3753],{"class":1046},"\"Students fetched successfully.\"",[1032,3755,588],{"class":1066},[1032,3757,3758,3760],{"class":1034,"line":1085},[1032,3759,1200],{"class":1174},[1032,3761,2981],{"class":1066},[1032,3763,3764],{"class":1034,"line":1094},[1032,3765,3766],{"class":1066},"    {\n",[1032,3768,3769,3772,3774,3776],{"class":1034,"line":1100},[1032,3770,3771],{"class":1174},"      \"_id\"",[1032,3773,1178],{"class":1066},[1032,3775,1213],{"class":1046},[1032,3777,588],{"class":1066},[1032,3779,3780,3783,3785,3787],{"class":1034,"line":1106},[1032,3781,3782],{"class":1174},"      \"username\"",[1032,3784,1178],{"class":1066},[1032,3786,1225],{"class":1046},[1032,3788,588],{"class":1066},[1032,3790,3791,3794,3796,3798],{"class":1034,"line":1112},[1032,3792,3793],{"class":1174},"      \"firstName\"",[1032,3795,1178],{"class":1066},[1032,3797,1237],{"class":1046},[1032,3799,588],{"class":1066},[1032,3801,3802,3805,3807,3809],{"class":1034,"line":1118},[1032,3803,3804],{"class":1174},"      \"lastName\"",[1032,3806,1178],{"class":1066},[1032,3808,1249],{"class":1046},[1032,3810,588],{"class":1066},[1032,3812,3813,3816,3818,3820],{"class":1034,"line":1124},[1032,3814,3815],{"class":1174},"      \"fullName\"",[1032,3817,1178],{"class":1066},[1032,3819,1261],{"class":1046},[1032,3821,588],{"class":1066},[1032,3823,3824,3827,3829,3831],{"class":1034,"line":1130},[1032,3825,3826],{"class":1174},"      \"email\"",[1032,3828,1178],{"class":1066},[1032,3830,1273],{"class":1046},[1032,3832,588],{"class":1066},[1032,3834,3835,3838,3840,3842],{"class":1034,"line":1136},[1032,3836,3837],{"class":1174},"      \"emailConfirmed\"",[1032,3839,1178],{"class":1066},[1032,3841,1285],{"class":1042},[1032,3843,588],{"class":1066},[1032,3845,3846,3849,3851,3853],{"class":1034,"line":1142},[1032,3847,3848],{"class":1174},"      \"phone\"",[1032,3850,1178],{"class":1066},[1032,3852,1297],{"class":1046},[1032,3854,588],{"class":1066},[1032,3856,3857,3860,3862,3864],{"class":1034,"line":1148},[1032,3858,3859],{"class":1174},"      \"birth\"",[1032,3861,1178],{"class":1066},[1032,3863,1309],{"class":1046},[1032,3865,588],{"class":1066},[1032,3867,3868,3871,3873,3875],{"class":1034,"line":1154},[1032,3869,3870],{"class":1174},"      \"sex\"",[1032,3872,1178],{"class":1066},[1032,3874,1321],{"class":1046},[1032,3876,588],{"class":1066},[1032,3878,3879,3881],{"class":1034,"line":1338},[1032,3880,3030],{"class":1174},[1032,3882,1203],{"class":1066},[1032,3884,3885,3888,3890,3892],{"class":1034,"line":1351},[1032,3886,3887],{"class":1174},"        \"_id\"",[1032,3889,1178],{"class":1066},[1032,3891,1333],{"class":1046},[1032,3893,588],{"class":1066},[1032,3895,3896,3899,3901,3904],{"class":1034,"line":1364},[1032,3897,3898],{"class":1174},"        \"name\"",[1032,3900,1178],{"class":1066},[1032,3902,3903],{"class":1046},"\"GERMANY\"",[1032,3905,588],{"class":1066},[1032,3907,3908,3911,3913,3916],{"class":1034,"line":1377},[1032,3909,3910],{"class":1174},"        \"iso2\"",[1032,3912,1178],{"class":1066},[1032,3914,3915],{"class":1046},"\"DE\"",[1032,3917,588],{"class":1066},[1032,3919,3920,3923,3925,3928],{"class":1034,"line":1391},[1032,3921,3922],{"class":1174},"        \"iso3\"",[1032,3924,1178],{"class":1066},[1032,3926,3927],{"class":1046},"\"DEU\"",[1032,3929,588],{"class":1066},[1032,3931,3932,3935,3937,3940],{"class":1034,"line":1404},[1032,3933,3934],{"class":1174},"        \"createdAt\"",[1032,3936,1178],{"class":1066},[1032,3938,3939],{"class":1046},"\"2022-08-30T12:14:26.118Z\"",[1032,3941,588],{"class":1066},[1032,3943,3944,3947,3949],{"class":1034,"line":1415},[1032,3945,3946],{"class":1174},"        \"updatedAt\"",[1032,3948,1178],{"class":1066},[1032,3950,3951],{"class":1046},"\"2022-08-30T12:14:26.118Z\"\n",[1032,3953,3954],{"class":1034,"line":1421},[1032,3955,3956],{"class":1066},"      },\n",[1032,3958,3959,3961],{"class":1034,"line":2671},[1032,3960,3052],{"class":1174},[1032,3962,1203],{"class":1066},[1032,3964,3965,3967,3969,3971],{"class":1034,"line":2677},[1032,3966,3887],{"class":1174},[1032,3968,1178],{"class":1066},[1032,3970,1346],{"class":1046},[1032,3972,588],{"class":1066},[1032,3974,3975,3977,3979,3982],{"class":1034,"line":2714},[1032,3976,3898],{"class":1174},[1032,3978,1178],{"class":1066},[1032,3980,3981],{"class":1046},"\"TIRANA\"",[1032,3983,588],{"class":1066},[1032,3985,3986,3989,3991],{"class":1034,"line":2743},[1032,3987,3988],{"class":1174},"        \"country\"",[1032,3990,1178],{"class":1066},[1032,3992,3993],{"class":1046},"\"630e0182c53dc79a6836e67e\"\n",[1032,3995,3996],{"class":1034,"line":2749},[1032,3997,3956],{"class":1066},[1032,3999,4000,4002],{"class":1034,"line":2779},[1032,4001,3063],{"class":1174},[1032,4003,1203],{"class":1066},[1032,4005,4006,4008,4010,4012],{"class":1034,"line":2784},[1032,4007,3887],{"class":1174},[1032,4009,1178],{"class":1066},[1032,4011,1359],{"class":1046},[1032,4013,588],{"class":1066},[1032,4015,4016,4018,4020,4023],{"class":1034,"line":2819},[1032,4017,3898],{"class":1174},[1032,4019,1178],{"class":1066},[1032,4021,4022],{"class":1046},"\"TIRANA INTERNATIONAL SCHOOL\"",[1032,4024,588],{"class":1066},[1032,4026,4028,4030,4032,4034],{"class":1034,"line":4027},32,[1032,4029,3988],{"class":1174},[1032,4031,1178],{"class":1066},[1032,4033,1333],{"class":1046},[1032,4035,588],{"class":1066},[1032,4037,4039,4042,4044],{"class":1034,"line":4038},33,[1032,4040,4041],{"class":1174},"        \"city\"",[1032,4043,1178],{"class":1066},[1032,4045,4046],{"class":1046},"\"6650e0a1b2c3d4e5f6a7b801\"\n",[1032,4048,4050],{"class":1034,"line":4049},34,[1032,4051,3956],{"class":1066},[1032,4053,4055,4057],{"class":1034,"line":4054},35,[1032,4056,3041],{"class":1174},[1032,4058,1203],{"class":1066},[1032,4060,4062,4064,4066,4068],{"class":1034,"line":4061},36,[1032,4063,3887],{"class":1174},[1032,4065,1178],{"class":1066},[1032,4067,1372],{"class":1046},[1032,4069,588],{"class":1066},[1032,4071,4073,4075,4077,4079],{"class":1034,"line":4072},37,[1032,4074,3898],{"class":1174},[1032,4076,1178],{"class":1066},[1032,4078,1673],{"class":1046},[1032,4080,588],{"class":1066},[1032,4082,4084,4086,4088,4091],{"class":1034,"line":4083},38,[1032,4085,3934],{"class":1174},[1032,4087,1178],{"class":1066},[1032,4089,4090],{"class":1046},"\"2022-08-30T12:14:26.309Z\"",[1032,4092,588],{"class":1066},[1032,4094,4096,4098,4100],{"class":1034,"line":4095},39,[1032,4097,3946],{"class":1174},[1032,4099,1178],{"class":1066},[1032,4101,4102],{"class":1046},"\"2022-08-30T12:14:26.309Z\"\n",[1032,4104,4106],{"class":1034,"line":4105},40,[1032,4107,3956],{"class":1066},[1032,4109,4111,4114],{"class":1034,"line":4110},41,[1032,4112,4113],{"class":1174},"      \"supervisor\"",[1032,4115,1203],{"class":1066},[1032,4117,4119,4121,4123,4126],{"class":1034,"line":4118},42,[1032,4120,3887],{"class":1174},[1032,4122,1178],{"class":1066},[1032,4124,4125],{"class":1046},"\"64c1d2e3f4a5b6c7d8e9f0a1\"",[1032,4127,588],{"class":1066},[1032,4129,4131,4134,4136,4139],{"class":1034,"line":4130},43,[1032,4132,4133],{"class":1174},"        \"firstName\"",[1032,4135,1178],{"class":1066},[1032,4137,4138],{"class":1046},"\"Deniz\"",[1032,4140,588],{"class":1066},[1032,4142,4144,4147,4149,4152],{"class":1034,"line":4143},44,[1032,4145,4146],{"class":1174},"        \"lastName\"",[1032,4148,1178],{"class":1066},[1032,4150,4151],{"class":1046},"\"Kaya\"",[1032,4153,588],{"class":1066},[1032,4155,4157,4160,4162,4165],{"class":1034,"line":4156},45,[1032,4158,4159],{"class":1174},"        \"fullName\"",[1032,4161,1178],{"class":1066},[1032,4163,4164],{"class":1046},"\"Deniz Kaya\"",[1032,4166,588],{"class":1066},[1032,4168,4170,4173,4175],{"class":1034,"line":4169},46,[1032,4171,4172],{"class":1174},"        \"username\"",[1032,4174,1178],{"class":1066},[1032,4176,4177],{"class":1046},"\"XXT1003\"\n",[1032,4179,4181],{"class":1034,"line":4180},47,[1032,4182,3956],{"class":1066},[1032,4184,4186,4189,4191,4193],{"class":1034,"line":4185},48,[1032,4187,4188],{"class":1174},"      \"activatedPlatformsThisSeason\"",[1032,4190,1383],{"class":1066},[1032,4192,826],{"class":1046},[1032,4194,1388],{"class":1066},[1032,4196,4198,4201,4203,4205],{"class":1034,"line":4197},49,[1032,4199,4200],{"class":1174},"      \"createdAt\"",[1032,4202,1178],{"class":1066},[1032,4204,1399],{"class":1046},[1032,4206,588],{"class":1066},[1032,4208,4210,4213,4215],{"class":1034,"line":4209},50,[1032,4211,4212],{"class":1174},"      \"updatedAt\"",[1032,4214,1178],{"class":1066},[1032,4216,1412],{"class":1046},[1032,4218,4220],{"class":1034,"line":4219},51,[1032,4221,2641],{"class":1066},[1032,4223,4225],{"class":1034,"line":4224},52,[1032,4226,4227],{"class":1066},"  ],\n",[1032,4229,4231,4234,4236,4239,4241,4243,4245,4248,4250,4253,4255,4258,4260,4263,4265,4268,4270,4273],{"class":1034,"line":4230},53,[1032,4232,4233],{"class":1174},"  \"pagination\"",[1032,4235,3081],{"class":1066},[1032,4237,4238],{"class":1174},"\"page\"",[1032,4240,1178],{"class":1066},[1032,4242,2277],{"class":1042},[1032,4244,837],{"class":1066},[1032,4246,4247],{"class":1174},"\"limit\"",[1032,4249,1178],{"class":1066},[1032,4251,4252],{"class":1042},"50",[1032,4254,837],{"class":1066},[1032,4256,4257],{"class":1174},"\"total\"",[1032,4259,1178],{"class":1066},[1032,4261,4262],{"class":1042},"312",[1032,4264,837],{"class":1066},[1032,4266,4267],{"class":1174},"\"totalPages\"",[1032,4269,1178],{"class":1066},[1032,4271,4272],{"class":1042},"7",[1032,4274,3091],{"class":1066},[1032,4276,4278],{"class":1034,"line":4277},54,[1032,4279,1424],{"class":1066},[357,4281,4282,4283,4286,4287,4290,4291,4293],{},"Paginate with ",[361,4284,4285],{},"page"," (default 1) and ",[361,4288,4289],{},"limit"," (default 20, at most 100; a larger value is lowered to\n100). The list has no guaranteed order. ",[409,4292,39],{"href":40}," shows complete loops, and what\nto expect if students are registered while you page.",[357,4295,4296,4297,4299,4300,4303],{},"To find students by email address, add ",[361,4298,1518],{},": one address, or up to 100 separated by commas. Only\nyour students with one of them are listed, matched exactly and without regard to case, and\n",[361,4301,4302],{},"pagination.total"," counts the matches.",[1023,4305,4307],{"className":1025,"code":4306,"language":1027,"meta":1028,"style":1028},"curl \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent?email=ada.lovelace@example.org,grace.hopper@example.org\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[361,4308,4309,4318],{"__ignoreMap":1028},[1032,4310,4311,4313,4316],{"class":1034,"line":1035},[1032,4312,1039],{"class":1038},[1032,4314,4315],{"class":1046}," \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent?email=ada.lovelace@example.org,grace.hopper@example.org\"",[1032,4317,1054],{"class":1053},[1032,4319,4320,4322,4324,4326],{"class":1034,"line":1057},[1032,4321,1060],{"class":1042},[1032,4323,1063],{"class":1046},[1032,4325,1067],{"class":1066},[1032,4327,3725],{"class":1046},[755,4329,4330,4336,4356,4375],{},[758,4331,4332,4335],{},[369,4333,4334],{},"An address none of your students has matches nothing",", whoever else holds it. The filter never\nlooks beyond your own students.",[758,4337,4338,4348,4349,4351,4352,4355],{},[369,4339,4340,4341,4344,4345,596],{},"Encode ",[361,4342,4343],{},"+"," as ",[361,4346,4347],{},"%2B"," In a query string ",[361,4350,4343],{}," reads as a space, so ",[361,4353,4354],{},"ada+maths@example.org"," sent\nas it is arrives as no address at all and is refused.",[758,4357,4358,4361,4362,4364,4365,4367,4368,4371,4372,1534],{},[369,4359,4360],{},"An unreadable filter is refused, never ignored:"," an empty ",[361,4363,1518],{},", one given twice, an entry\nthat is not an address, or more than 100 entries answers ",[361,4366,858],{}," with\n",[361,4369,4370],{},"email must be given once, as one or more email addresses separated by commas"," (or\n",[361,4373,4374],{},"email must list at most 100 addresses",[758,4376,4377,4380],{},[369,4378,4379],{},"Addresses in a URL"," are more likely to be recorded along the way than a body. Use the filter\nwhere that is acceptable to you.",[918,4382,4384],{"id":4383},"one-student","One student",[1023,4386,4388],{"className":1025,"code":4387,"language":1027,"meta":1028,"style":1028},"curl \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent\u002F6650f1a2b3c4d5e6f7a8b9c0\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[361,4389,4390,4399],{"__ignoreMap":1028},[1032,4391,4392,4394,4397],{"class":1034,"line":1035},[1032,4393,1039],{"class":1038},[1032,4395,4396],{"class":1046}," \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent\u002F6650f1a2b3c4d5e6f7a8b9c0\"",[1032,4398,1054],{"class":1053},[1032,4400,4401,4403,4405,4407],{"class":1034,"line":1057},[1032,4402,1060],{"class":1042},[1032,4404,1063],{"class":1046},[1032,4406,1067],{"class":1066},[1032,4408,3725],{"class":1046},[357,4410,3201,4411,4413,4414,4417,4418,596],{},[361,4412,3204],{}," with the student in ",[361,4415,4416],{},"data",", shaped like one element of the list above, and the\nmessage ",[361,4419,4420],{},"Student fetched successfully",[357,4422,4423,4424,837,4427,4430,4431,4433,4434,1534],{},"A student that is not yours answers ",[361,4425,4426],{},"404 not_found",[361,4428,4429],{},"Student not found!",", the same as an id that\nmatches no student. An id that is not 24 hex characters is ",[361,4432,858],{},"\n(",[361,4435,4436],{},"Invalid value for '_id': expected ObjectId.",[918,4438,4440],{"id":4439},"students-on-one-organization","Students on one organization",[357,4442,4443,889,4445,4447,4448,4451,4452,4454,4455,4457,4458,837,4460,4462],{},[361,4444,521],{},[361,4446,541],{}," return the same\ncore records, filtered to the students entered on that organization\n(",[409,4449,4450],{"href":1764},"Which organizations","). The responses have the same\nshape as the flat routes. The single read takes the same ",[361,4453,646],{},", the core ",[361,4456,363],{},", and answers\n",[361,4459,4426],{},[361,4461,4429],{},", when the student is not yours or not entered on that\norganization.",[357,4464,4465,4466,596],{},"Use these routes when your account's permissions are scoped to an organization, or when you want\nexactly the students an organization treats as yours. For your full list, use ",[361,4467,459],{},[357,4469,4470,4471,4474,4475,3177,4478,574,4480,4482,4483,4485,4486,889,4488,4490,4491,4494,4495,4497,4498,4501,4502,4504,4505,859,4507,4510,4511,4513,4514,596],{},"The organization list also says, for each student, whether they have ",[369,4472,4473],{},"signed in"," to that\norganization at least once: ",[361,4476,4477],{},"signedIn",[361,4479,1181],{},[361,4481,1285],{},". The organization keeps its own record of\na student from that first sign-in (",[409,4484,1765],{"href":3468},"), and\n",[409,4487,231],{"href":87},[409,4489,591],{"href":72}," there need\nit. Add ",[361,4492,4493],{},"signedIn=false"," to list only the students who still have to sign in, and send each a\n",[409,4496,656],{"href":81},"; add ",[361,4499,4500],{},"signedIn=true"," for the students ready for\napplications. The filter narrows ",[361,4503,4302],{}," too. Any other value is refused with ",[361,4506,858],{},[361,4508,4509],{},"signedIn must be true or false",". The single read, ",[361,4512,541],{},",\ndoes not carry ",[361,4515,4477],{},[1023,4517,4519],{"className":1025,"code":4518,"language":1027,"meta":1028,"style":1028},"curl \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002F64b7f0c2a1d3e4f5a6b7c8d9\u002Fstudent?signedIn=false\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[361,4520,4521,4530],{"__ignoreMap":1028},[1032,4522,4523,4525,4528],{"class":1034,"line":1035},[1032,4524,1039],{"class":1038},[1032,4526,4527],{"class":1046}," \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002F64b7f0c2a1d3e4f5a6b7c8d9\u002Fstudent?signedIn=false\"",[1032,4529,1054],{"class":1053},[1032,4531,4532,4534,4536,4538],{"class":1034,"line":1057},[1032,4533,1060],{"class":1042},[1032,4535,1063],{"class":1046},[1032,4537,1067],{"class":1066},[1032,4539,3725],{"class":1046},[374,4541,4543],{"id":4542},"fields-returned","Fields returned",[357,4545,4546,4547,4549],{},"A student comes back with at most these fields, on every route that returns one. A field the student\ndoes not have, such as a ",[361,4548,1727],{}," never given, is left out rather than sent empty.",[379,4551,4552,4562],{},[382,4553,4554],{},[385,4555,4556,4558,4560],{},[388,4557,1454],{},[388,4559,1457],{},[388,4561,817],{},[401,4563,4564,4575,4589,4602,4615,4630,4641,4657,4668,4680,4699,4717,4745,4759,4770],{},[385,4565,4566,4570,4572],{},[406,4567,4568],{},[361,4569,363],{},[406,4571,1478],{},[406,4573,4574],{},"The student's id. On the student routes, the core record's id.",[385,4576,4577,4581,4583],{},[406,4578,4579],{},[361,4580,666],{},[406,4582,1478],{},[406,4584,4585,4586,4588],{},"On an organization copy, the core record's ",[361,4587,363],{},". The student routes return the core record, where it is usually absent.",[385,4590,4591,4595,4597],{},[406,4592,4593],{},[361,4594,1826],{},[406,4596,1478],{},[406,4598,4599,4600,1534],{},"Minted at registration; read-only (",[409,4601,1946],{"href":1945},[385,4603,4604,4610,4612],{},[406,4605,4606,837,4608],{},[361,4607,1475],{},[361,4609,1495],{},[406,4611,1478],{},[406,4613,4614],{},"As you set them.",[385,4616,4617,4621,4623],{},[406,4618,4619],{},[361,4620,1829],{},[406,4622,1478],{},[406,4624,4625,889,4627,4629],{},[361,4626,1475],{},[361,4628,1495],{}," joined by a space; derived.",[385,4631,4632,4636,4638],{},[406,4633,4634],{},[361,4635,1518],{},[406,4637,1478],{},[406,4639,4640],{},"Trimmed, lower case.",[385,4642,4643,4647,4650],{},[406,4644,4645],{},[361,4646,1832],{},[406,4648,4649],{},"boolean",[406,4651,4652,4654,4655,596],{},[361,4653,1181],{}," once the student has proved the address is theirs. Starts ",[361,4656,1285],{},[385,4658,4659,4663,4665],{},[406,4660,4661],{},[361,4662,1727],{},[406,4664,1478],{},[406,4666,4667],{},"As you set it.",[385,4669,4670,4674,4676],{},[406,4671,4672],{},[361,4673,1545],{},[406,4675,1478],{},[406,4677,4678,596],{},[361,4679,1554],{},[385,4681,4682,4686,4688],{},[406,4683,4684],{},[361,4685,1592],{},[406,4687,1478],{},[406,4689,4690,837,4693,574,4696,596],{},[361,4691,4692],{},"m",[361,4694,4695],{},"f",[361,4697,4698],{},"n",[385,4700,4701,4711,4714],{},[406,4702,4703,837,4705,837,4707,837,4709],{},[361,4704,1619],{},[361,4706,1434],{},[361,4708,1437],{},[361,4710,1440],{},[406,4712,4713],{},"object on reads, id on writes",[406,4715,4716],{},"On the read routes, the full reference record. On registration and updates, its id.",[385,4718,4719,4723,4725],{},[406,4720,4721],{},[361,4722,1835],{},[406,4724,4713],{},[406,4726,4727,4728,837,4730,837,4732,837,4734,889,4736,4738,4739,4742,4743,1534],{},"The supervisor on the core record, as ",[361,4729,363],{},[361,4731,1475],{},[361,4733,1495],{},[361,4735,1829],{},[361,4737,1826],{},". Links made per organization do ",[369,4740,4741],{},"not"," appear here (",[409,4744,71],{"href":72},[385,4746,4747,4752,4754],{},[406,4748,4749],{},[361,4750,4751],{},"partner",[406,4753,4713],{},[406,4755,4756,4757,596],{},"A partner account the student is attached to on the platform, shaped like ",[361,4758,1835],{},[385,4760,4761,4765,4767],{},[406,4762,4763],{},[361,4764,804],{},[406,4766,1754],{},[406,4768,4769],{},"The organizations the student is entered on.",[385,4771,4772,4780,4783],{},[406,4773,4774,837,4777],{},[361,4775,4776],{},"createdAt",[361,4778,4779],{},"updatedAt",[406,4781,4782],{},"ISO 8601 timestamp",[406,4784],{},[357,4786,4787,4788,4790,4791,581,4793,1534],{},"Nothing else a student record holds is ever returned: not the password, and not your account's\ndetails. Treat the list as open-ended all the same, and ignore fields you do not recognize\n(",[409,4789,54],{"href":55},"). The organization list adds one field to each student that is not\npart of the record, ",[361,4792,4477],{},[409,4794,4440],{"href":4795},"#students-on-one-organization",[374,4797,495],{"id":4798},"update-a-student",[357,4800,4801,4803],{},[361,4802,500],{}," changes the fields you send and leaves every other field as it is. No\nfield is required, but each one you send follows its registration rule.",[1023,4805,4807],{"className":1025,"code":4806,"language":1027,"meta":1028,"style":1028},"curl -X PUT \"https:\u002F\u002Fapi.main-team.org\u002Fv1\u002Fstudent\u002F6650f1a2b3c4d5e6f7a8b9c0\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"grade\": \"10\", \"school\": \"Berlin Science High School\" }'\n",[361,4808,4809,4822,4834,4842],{"__ignoreMap":1028},[1032,4810,4811,4813,4815,4818,4820],{"class":1034,"line":1035},[1032,4812,1039],{"class":1038},[1032,4814,1043],{"class":1042},[1032,4816,4817],{"class":1046}," PUT",[1032,4819,4396],{"class":1046},[1032,4821,1054],{"class":1053},[1032,4823,4824,4826,4828,4830,4832],{"class":1034,"line":1057},[1032,4825,1060],{"class":1042},[1032,4827,1063],{"class":1046},[1032,4829,1067],{"class":1066},[1032,4831,1070],{"class":1046},[1032,4833,1054],{"class":1053},[1032,4835,4836,4838,4840],{"class":1034,"line":1075},[1032,4837,1060],{"class":1042},[1032,4839,1080],{"class":1046},[1032,4841,1054],{"class":1053},[1032,4843,4844,4846],{"class":1034,"line":1085},[1032,4845,1088],{"class":1042},[1032,4847,4848],{"class":1046}," '{ \"grade\": \"10\", \"school\": \"Berlin Science High School\" }'\n",[1023,4850,4852],{"className":1160,"code":4851,"language":1162,"meta":1028,"style":1028},"{\n  \"success\": true,\n  \"message\": \"Student updated successfully.\",\n  \"data\": {\n    \"_id\": \"6650f1a2b3c4d5e6f7a8b9c0\",\n    \"username\": \"XXB1045\",\n    \"firstName\": \"Ada\",\n    \"lastName\": \"Lovelace\",\n    \"fullName\": \"Ada Lovelace\",\n    \"email\": \"ada.lovelace@example.org\",\n    \"emailConfirmed\": false,\n    \"phone\": \"+49 30 123 4567\",\n    \"birth\": \"14\u002F05\u002F2010\",\n    \"sex\": \"f\",\n    \"country\": \"630e0182c53dc79a6836e67e\",\n    \"city\": \"6650e0a1b2c3d4e5f6a7b801\",\n    \"school\": \"6650e0a1b2c3d4e5f6a7b8d7\",\n    \"grade\": \"630e01826836e67ec53dc7a6\",\n    \"activatedPlatformsThisSeason\": [\"common\"],\n    \"createdAt\": \"2026-09-15T09:12:44.512Z\",\n    \"updatedAt\": \"2026-09-16T07:40:02.931Z\"\n  }\n}\n",[361,4853,4854,4858,4868,4879,4885,4895,4905,4915,4925,4935,4945,4955,4965,4975,4985,4995,5005,5016,5027,5037,5047,5056,5060],{"__ignoreMap":1028},[1032,4855,4856],{"class":1034,"line":1035},[1032,4857,1169],{"class":1066},[1032,4859,4860,4862,4864,4866],{"class":1034,"line":1057},[1032,4861,1175],{"class":1174},[1032,4863,1178],{"class":1066},[1032,4865,1181],{"class":1042},[1032,4867,588],{"class":1066},[1032,4869,4870,4872,4874,4877],{"class":1034,"line":1075},[1032,4871,1188],{"class":1174},[1032,4873,1178],{"class":1066},[1032,4875,4876],{"class":1046},"\"Student updated successfully.\"",[1032,4878,588],{"class":1066},[1032,4880,4881,4883],{"class":1034,"line":1085},[1032,4882,1200],{"class":1174},[1032,4884,1203],{"class":1066},[1032,4886,4887,4889,4891,4893],{"class":1034,"line":1094},[1032,4888,1208],{"class":1174},[1032,4890,1178],{"class":1066},[1032,4892,1213],{"class":1046},[1032,4894,588],{"class":1066},[1032,4896,4897,4899,4901,4903],{"class":1034,"line":1100},[1032,4898,1220],{"class":1174},[1032,4900,1178],{"class":1066},[1032,4902,1225],{"class":1046},[1032,4904,588],{"class":1066},[1032,4906,4907,4909,4911,4913],{"class":1034,"line":1106},[1032,4908,1232],{"class":1174},[1032,4910,1178],{"class":1066},[1032,4912,1237],{"class":1046},[1032,4914,588],{"class":1066},[1032,4916,4917,4919,4921,4923],{"class":1034,"line":1112},[1032,4918,1244],{"class":1174},[1032,4920,1178],{"class":1066},[1032,4922,1249],{"class":1046},[1032,4924,588],{"class":1066},[1032,4926,4927,4929,4931,4933],{"class":1034,"line":1118},[1032,4928,1256],{"class":1174},[1032,4930,1178],{"class":1066},[1032,4932,1261],{"class":1046},[1032,4934,588],{"class":1066},[1032,4936,4937,4939,4941,4943],{"class":1034,"line":1124},[1032,4938,1268],{"class":1174},[1032,4940,1178],{"class":1066},[1032,4942,1273],{"class":1046},[1032,4944,588],{"class":1066},[1032,4946,4947,4949,4951,4953],{"class":1034,"line":1130},[1032,4948,1280],{"class":1174},[1032,4950,1178],{"class":1066},[1032,4952,1285],{"class":1042},[1032,4954,588],{"class":1066},[1032,4956,4957,4959,4961,4963],{"class":1034,"line":1136},[1032,4958,1292],{"class":1174},[1032,4960,1178],{"class":1066},[1032,4962,1297],{"class":1046},[1032,4964,588],{"class":1066},[1032,4966,4967,4969,4971,4973],{"class":1034,"line":1142},[1032,4968,1304],{"class":1174},[1032,4970,1178],{"class":1066},[1032,4972,1309],{"class":1046},[1032,4974,588],{"class":1066},[1032,4976,4977,4979,4981,4983],{"class":1034,"line":1148},[1032,4978,1316],{"class":1174},[1032,4980,1178],{"class":1066},[1032,4982,1321],{"class":1046},[1032,4984,588],{"class":1066},[1032,4986,4987,4989,4991,4993],{"class":1034,"line":1154},[1032,4988,1328],{"class":1174},[1032,4990,1178],{"class":1066},[1032,4992,1333],{"class":1046},[1032,4994,588],{"class":1066},[1032,4996,4997,4999,5001,5003],{"class":1034,"line":1338},[1032,4998,1341],{"class":1174},[1032,5000,1178],{"class":1066},[1032,5002,1346],{"class":1046},[1032,5004,588],{"class":1066},[1032,5006,5007,5009,5011,5014],{"class":1034,"line":1351},[1032,5008,1354],{"class":1174},[1032,5010,1178],{"class":1066},[1032,5012,5013],{"class":1046},"\"6650e0a1b2c3d4e5f6a7b8d7\"",[1032,5015,588],{"class":1066},[1032,5017,5018,5020,5022,5025],{"class":1034,"line":1364},[1032,5019,1367],{"class":1174},[1032,5021,1178],{"class":1066},[1032,5023,5024],{"class":1046},"\"630e01826836e67ec53dc7a6\"",[1032,5026,588],{"class":1066},[1032,5028,5029,5031,5033,5035],{"class":1034,"line":1377},[1032,5030,1380],{"class":1174},[1032,5032,1383],{"class":1066},[1032,5034,826],{"class":1046},[1032,5036,1388],{"class":1066},[1032,5038,5039,5041,5043,5045],{"class":1034,"line":1391},[1032,5040,1394],{"class":1174},[1032,5042,1178],{"class":1066},[1032,5044,1399],{"class":1046},[1032,5046,588],{"class":1066},[1032,5048,5049,5051,5053],{"class":1034,"line":1404},[1032,5050,1407],{"class":1174},[1032,5052,1178],{"class":1066},[1032,5054,5055],{"class":1046},"\"2026-09-16T07:40:02.931Z\"\n",[1032,5057,5058],{"class":1034,"line":1415},[1032,5059,1418],{"class":1066},[1032,5061,5062],{"class":1034,"line":1421},[1032,5063,1424],{"class":1066},[357,5065,5066,5067,5069,5070,5073],{},"The same fields as registration are accepted, except ",[361,5068,1786],{},", which has\n",[409,5071,5072],{"href":69},"its own route",". Rules to know:",[755,5075,5076,5109,5130,5143,5154,5170,5182,5190],{},[758,5077,5078,5081,5082,5084,5085,5087,5088,5090,5091,4344,5093,837,5095,574,5097,837,5099,5101,5102,837,5104,859,5106,5108],{},[369,5079,5080],{},"The formats still apply"," to whatever you send: ",[361,5083,1545],{}," as a ",[361,5086,1554],{}," date that exists\n(",[361,5089,1572],{}," is refused), ",[361,5092,1592],{},[361,5094,4692],{},[361,5096,4695],{},[361,5098,4698],{},[361,5100,1619],{}," as an id, and ",[361,5103,1440],{},[361,5105,1434],{},[361,5107,1437],{}," resolving to something that exists.",[758,5110,5111,606,5122,574,5125,5127,5128,596],{},[369,5112,5113,837,5115,837,5117,889,5119,5121],{},[361,5114,1475],{},[361,5116,1495],{},[361,5118,1545],{},[361,5120,1592],{}," can be changed but not cleared.",[361,5123,5124],{},"\"\"",[361,5126,985],{}," is\nrefused with the field's rule, for example ",[361,5129,1507],{},[758,5131,5132,606,5139,986,5141,596],{},[369,5133,5134,5136,5137,596],{},[361,5135,1727],{}," is cleared with ",[361,5138,5124],{},[361,5140,985],{},[361,5142,1740],{},[758,5144,5145,5150,5151,1534],{},[369,5146,5147,5149],{},[361,5148,804],{}," is added to the stored list",", never written over it\n(",[409,5152,921],{"href":5153},"#adding-organizations",[758,5155,5156,606,5161,986,5163,5166,5167,596],{},[369,5157,5158,5160],{},[361,5159,1518],{}," cannot be removed.",[361,5162,985],{},[361,5164,5165],{},"email must be a valid email address",", and\nan invalid address with ",[361,5168,5169],{},"email must be an email",[758,5171,5172,5175,5176,5178,5179,5181],{},[369,5173,5174],{},"Changing the email withdraws confirmation."," A new address has not been proved to belong to\nanyone, so ",[361,5177,1832],{}," goes back to ",[361,5180,1285],{},", and the panel asks the student to confirm the new\naddress before they can use it again. Sending the address the student already has, in any letter\ncase, is not a change and leaves confirmation alone. That makes it safe to send a whole profile on\nevery sync.",[758,5183,5184,5189],{},[369,5185,5186,5187],{},"Renaming updates ",[361,5188,1829],{},", whether you change one name or both.",[758,5191,5192,986,5196,5198,5199,588,5201,5203],{},[369,5193,5194],{},[361,5195,1786],{},[361,5197,3214],{},". So are ",[361,5200,1826],{},[361,5202,1832],{}," and every other field registration does not accept.",[357,5205,5206,5207,5210,5211,837,5217,5219,5220,5222,5223,5225,5226,1534],{},"Refusals: ",[361,5208,5209],{},"404",", code ",[409,5212,5214],{"href":5213},"\u002Fapi\u002Ferrors#not_found",[361,5215,5216],{},"not_found",[361,5218,4429],{}," when the student is\nnot yours (or does not exist). ",[361,5221,858],{}," for a malformed id or a field that breaks its rule. ",[361,5224,766],{}," for an\nemail another student holds (",[409,5227,1533],{"href":1532},[357,5229,5230],{},"The response is the student after the change. As with registration, reference fields come back as ids.",[918,5232,5234],{"id":5233},"update-through-an-organization","Update through an organization",[357,5236,5237,5239,5240,5243],{},[361,5238,559],{}," writes the ",[369,5241,5242],{},"same core record",", with the same fields,\nrules and refusals as the flat update. Two things differ:",[755,5245,5246,5254],{},[758,5247,5248,3177,5251,5253],{},[369,5249,5250],{},"The permission",[361,5252,505],{}," on the organization in the path, so an account whose roles\nare scoped to one organization can still keep its students' details current.",[758,5255,5256,5259,5260,5262,5263,5265,5266,5268],{},[369,5257,5258],{},"It enters the student on that organization."," Without ",[361,5261,804],{}," in the body,\nthe organization in the path is added to the student's list, unless the list already contains\n",[361,5264,826],{},". Updating the same student again adds nothing further. This is how you give a student\naccess to an organization before creating a ",[409,5267,656],{"href":81}," for it.",[357,5270,5271],{},"The student does not need to be entered on the organization already, and the call does not touch the\norganization's copy of the student. The copy picks up the changes at the student's next sign-in there.",[357,5273,5274,5275,5278,5279,5281,5282,5284],{},"The body may be empty. ",[361,5276,5277],{},"{}"," enters the student on the organization, changes nothing else, and answers\n",[361,5280,3204],{}," with the student. If you send ",[361,5283,804],{},", its values are added instead, and\nthis organization is added only if you name it.",[374,5286,5288],{"id":5287},"flat-and-per-organization-operations-compared","Flat and per-organization operations compared",[379,5290,5291,5309],{},[382,5292,5293],{},[385,5294,5295,5297,5303],{},[388,5296],{},[388,5298,5299,5300,2246],{},"Flat (",[361,5301,5302],{},"\u002Fv1\u002Fstudent…",[388,5304,5305,5306,2246],{},"Per organization (",[361,5307,5308],{},"\u002Fv1\u002F\u003CorganizationId>\u002Fstudent…",[401,5310,5311,5320,5336,5346,5356,5367,5380],{},[385,5312,5313,5316,5318],{},[406,5314,5315],{},"Record",[406,5317,628],{},[406,5319,628],{},[385,5321,5322,5325,5331],{},[406,5323,5324],{},"Permission target",[406,5326,5327,574,5329],{},[361,5328,424],{},[361,5330,577],{},[406,5332,5333,5334],{},"That organization's slug or ",[361,5335,577],{},[385,5337,5338,5341,5343],{},[406,5339,5340],{},"Register",[406,5342,726],{},[406,5344,5345],{},"No; register on the flat route",[385,5347,5348,5351,5353],{},[406,5349,5350],{},"List and read",[406,5352,3700],{},[406,5354,5355],{},"Your students entered on that organization",[385,5357,5358,5361,5364],{},[406,5359,5360],{},"Update",[406,5362,5363],{},"Changes the fields you send",[406,5365,5366],{},"Changes the fields you send, and enters the student on that organization",[385,5368,5369,5372,5377],{},[406,5370,5371],{},"Set a password",[406,5373,5374],{},[361,5375,5376],{},"PUT \u002Fv1\u002Fstudent\u002F\u003CstudentId>\u002Fpassword",[406,5378,5379],{},"Not available",[385,5381,5382,5385,5387],{},[406,5383,5384],{},"Link a supervisor",[406,5386,5379],{},[406,5388,5389],{},[361,5390,5391],{},"PUT \u002Fv1\u002F\u003CorganizationId>\u002Fstudent\u002F\u003CstudentId>\u002Fsupervisor",[374,5393,42],{"id":5394},"errors",[379,5396,5397,5414],{},[382,5398,5399],{},[385,5400,5401,5403,5406,5408,5411],{},[388,5402,3594],{},[388,5404,5405],{},"Code",[388,5407,3597],{},[388,5409,5410],{},"Cause",[388,5412,5413],{},"Fix",[401,5415,5416,5440,5474,5503,5538,5566,5593,5627,5658,5684,5708,5739,5761,5793,5816],{},[385,5417,5418,5422,5430,5434,5437],{},[406,5419,5420],{},[361,5421,858],{},[406,5423,5424],{},[409,5425,5427],{"href":5426},"\u002Fapi\u002Ferrors#bad_request",[361,5428,5429],{},"bad_request",[406,5431,5432],{},[361,5433,1822],{},[406,5435,5436],{},"A field the route does not accept.",[406,5438,5439],{},"Remove it.",[385,5441,5442,5446,5452,5468,5471],{},[406,5443,5444],{},[361,5445,858],{},[406,5447,5448],{},[409,5449,5450],{"href":5426},[361,5451,5429],{},[406,5453,5454,837,5457,837,5459,837,5461,837,5463,837,5465,5467],{},[361,5455,5456],{},"\u003Cfield> should not be empty",[361,5458,5169],{},[361,5460,5165],{},[361,5462,1580],{},[361,5464,3287],{},[361,5466,1668],{},", …",[406,5469,5470],{},"A field is missing or malformed.",[406,5472,5473],{},"Fix the field named.",[385,5475,5476,5480,5486,5490,5497],{},[406,5477,5478],{},[361,5479,858],{},[406,5481,5482],{},[409,5483,5484],{"href":5426},[361,5485,5429],{},[406,5487,5488],{},[361,5489,1740],{},[406,5491,5492,5494,5495,596],{},[361,5493,1727],{}," was sent as ",[361,5496,985],{},[406,5498,5499,5500,5502],{},"Leave it out, or on an update send ",[361,5501,5124],{}," to clear it.",[385,5504,5505,5509,5515,5522,5532],{},[406,5506,5507],{},[361,5508,858],{},[406,5510,5511],{},[409,5512,5513],{"href":5426},[361,5514,5429],{},[406,5516,5517,837,5519],{},[361,5518,991],{},[361,5520,5521],{},"each value in activatedPlatformsThisSeason must be one of the following values: …",[406,5523,5524,5525,5527,5528,5531],{},"The list is ",[361,5526,985],{},", or holds a value other than ",[361,5529,5530],{},"common"," and the five slugs.",[406,5533,5534,5535,596],{},"Leave it out, or send slugs from ",[409,5536,5537],{"href":1764},"the list above",[385,5539,5540,5544,5550,5560,5563],{},[406,5541,5542],{},[361,5543,858],{},[406,5545,5546],{},[409,5547,5548],{"href":5426},[361,5549,5429],{},[406,5551,5552,5555,5556,5559],{},[361,5553,5554],{},"\u003Cfield> is not a known \u003Cfield>."," (and ",[361,5557,5558],{},"This API does not create reference data."," for a name)",[406,5561,5562],{},"A reference value matches nothing, or names a country that cannot be selected.",[406,5564,5565],{},"Take ids from the reference routes; check spelling and the student's country.",[385,5567,5568,5572,5578,5582,5587],{},[406,5569,5570],{},[361,5571,858],{},[406,5573,5574],{},[409,5575,5576],{"href":5426},[361,5577,5429],{},[406,5579,5580],{},[361,5581,4436],{},[406,5583,5584,5586],{},[361,5585,646],{}," is not 24 hex characters.",[406,5588,5589,5590,5592],{},"Use the ",[361,5591,363],{}," from registration.",[385,5594,5595,5599,5605,5611,5619],{},[406,5596,5597],{},[361,5598,858],{},[406,5600,5601],{},[409,5602,5603],{"href":5426},[361,5604,5429],{},[406,5606,5607,837,5609],{},[361,5608,4370],{},[361,5610,4374],{},[406,5612,3159,5613,5615,5616,5618],{},[361,5614,1518],{}," filter of ",[361,5617,459],{}," could not be read.",[406,5620,5621,5622,5624,5625,596],{},"Send one comma-separated list of up to 100 addresses, with ",[361,5623,4343],{}," encoded as ",[361,5626,4347],{},[385,5628,5629,5633,5639,5643,5650],{},[406,5630,5631],{},[361,5632,858],{},[406,5634,5635],{},[409,5636,5637],{"href":5426},[361,5638,5429],{},[406,5640,5641],{},[361,5642,4509],{},[406,5644,3159,5645,5615,5647,5649],{},[361,5646,4477],{},[361,5648,521],{}," is another value.",[406,5651,5652,5653,574,5655,5657],{},"Send ",[361,5654,1181],{},[361,5656,1285],{},", or leave it out.",[385,5659,5660,5664,5670,5674,5681],{},[406,5661,5662],{},[361,5663,858],{},[406,5665,5666],{},[409,5667,5668],{"href":5426},[361,5669,5429],{},[406,5671,5672],{},[361,5673,3214],{},[406,5675,5676,5678,5679,596],{},[361,5677,1786],{}," was sent to ",[361,5680,439],{},[406,5682,5683],{},"Leave it out; send it with the registration.",[385,5685,5686,5690,5698,5702,5705],{},[406,5687,5688],{},[361,5689,878],{},[406,5691,5692],{},[409,5693,5695],{"href":5694},"\u002Fapi\u002Ferrors#forbidden",[361,5696,5697],{},"forbidden",[406,5699,5700],{},[361,5701,1879],{},[406,5703,5704],{},"The account lacks the permission, or holds it on another organization.",[406,5706,5707],{},"Ask the operator for the role.",[385,5709,5710,5714,5720,5725,5734],{},[406,5711,5712],{},[361,5713,878],{},[406,5715,5716],{},[409,5717,5718],{"href":5694},[361,5719,5697],{},[406,5721,5722],{},[361,5723,5724],{},"Setting a student's password needs the auth\u002Fsignin permission on mto, …",[406,5726,5727,5729,5730,421,5732,596],{},[361,5728,1786],{}," in a registration without ",[361,5731,1796],{},[361,5733,424],{},[406,5735,5736,5737,596],{},"See ",[409,5738,68],{"href":69},[385,5740,5741,5745,5751,5755,5758],{},[406,5742,5743],{},[361,5744,5209],{},[406,5746,5747],{},[409,5748,5749],{"href":5213},[361,5750,5216],{},[406,5752,5753],{},[361,5754,4429],{},[406,5756,5757],{},"A read or update of a student that is not yours or does not exist, or a read through an organization the student has no access to.",[406,5759,5760],{},"Check the id and the account.",[385,5762,5763,5767,5773,5778,5785],{},[406,5764,5765],{},[361,5766,5209],{},[406,5768,5769],{},[409,5770,5771],{"href":5213},[361,5772,5216],{},[406,5774,5775],{},[361,5776,5777],{},"Organization not found!",[406,5779,5780,5782,5783,596],{},[361,5781,639],{}," is not an organization ",[361,5784,363],{},[406,5786,5589,5787,1629,5789,5792],{},[361,5788,363],{},[361,5790,5791],{},"GET \u002Fv1\u002Forganization",", never the slug.",[385,5794,5795,5799,5805,5810,5813],{},[406,5796,5797],{},[361,5798,766],{},[406,5800,5801],{},[409,5802,5803],{"href":3615},[361,5804,3618],{},[406,5806,5807],{},[361,5808,5809],{},"A student with that email is already registered to this account (\u003Cid>).",[406,5811,5812],{},"The address is one of your students'.",[406,5814,5815],{},"Use that student.",[385,5817,5818,5822,5828,5832,5835],{},[406,5819,5820],{},[361,5821,766],{},[406,5823,5824],{},[409,5825,5826],{"href":3615},[361,5827,3618],{},[406,5829,5830],{},[361,5831,3231],{},[406,5833,5834],{},"The address belongs to a student elsewhere.",[406,5836,5837],{},"Ask for another address.",[374,5839,5841],{"id":5840},"related","Related",[755,5843,5844,5850,5855,5860,5865],{},[758,5845,5846,5849],{},[409,5847,5848],{"href":101},"Tutorial: register a student and apply for an exam",": the whole\nflow end to end, in Node.js and PHP.",[758,5851,5852,5854],{},[409,5853,74],{"href":75},": countries, grades and organizations.",[758,5856,5857,5859],{},[409,5858,80],{"href":81},": how a student gets into the panel, and how their first\nsign-in creates an organization's copy.",[758,5861,5862,5864],{},[409,5863,65],{"href":66},": 30 to 1000 students in one request, all of\nthem or none.",[758,5866,5867,889,5869,596],{},[409,5868,68],{"href":69},[409,5870,71],{"href":72},[5872,5873,5874],"style",{},"html pre.shiki code .soyes, html code.shiki .soyes{--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .s-5SL, html code.shiki .s-5SL{--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .sT6z2, html code.shiki .sT6z2{--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .sHUrx, html code.shiki .sHUrx{--shiki-default:#A0111F;--shiki-dark:#FF9492}html pre.shiki code .suds8, html code.shiki .suds8{--shiki-default:#0E1116;--shiki-dark:#F0F3F6}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);}html pre.shiki code .sne4z, html code.shiki .sne4z{--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .sKwhi, html code.shiki .sKwhi{--shiki-default:#622CBC;--shiki-dark:#DBB7FF}html pre.shiki code .sLBg1, html code.shiki .sLBg1{--shiki-default:#66707B;--shiki-dark:#BDC4CC}html pre.shiki code .sJaa3, html code.shiki .sJaa3{--shiki-default:#024C1A;--shiki-default-font-weight:bold;--shiki-dark:#72F088;--shiki-dark-font-weight:bold}",{"title":1028,"searchDepth":1057,"depth":1075,"links":5876},[5877,5878,5879,5882,5887,5888,5889,5890,5891,5892,5897,5898,5901,5902,5903],{"id":376,"depth":1057,"text":377},{"id":619,"depth":1057,"text":620},{"id":798,"depth":1057,"text":799,"children":5880},[5881],{"id":920,"depth":1075,"text":921},{"id":1012,"depth":1057,"text":173,"children":5883},[5884,5885,5886],{"id":1444,"depth":1075,"text":1445},{"id":1859,"depth":1075,"text":1860},{"id":1965,"depth":1075,"text":1966},{"id":2824,"depth":1057,"text":2825},{"id":3235,"depth":1057,"text":3236},{"id":3444,"depth":1057,"text":3445},{"id":3496,"depth":1057,"text":1946},{"id":3578,"depth":1057,"text":3579},{"id":3695,"depth":1057,"text":3696,"children":5893},[5894,5895,5896],{"id":3699,"depth":1075,"text":3700},{"id":4383,"depth":1075,"text":4384},{"id":4439,"depth":1075,"text":4440},{"id":4542,"depth":1057,"text":4543},{"id":4798,"depth":1057,"text":495,"children":5899},[5900],{"id":5233,"depth":1075,"text":5234},{"id":5287,"depth":1057,"text":5288},{"id":5394,"depth":1057,"text":42},{"id":5840,"depth":1057,"text":5841},"Register students, read and update them, and understand the core record, organization copies, usernames, reference fields and duplicate emails.","md",{},[609,5908,5909,5910,5911,5912,5913,5914],"checkStudentRegistration","listStudents","getStudent","updateStudent","listOrgStudents","getOrgStudent","updateOrgStudent","10",{"title":62,"description":5904},"api\u002Fguides\u002Fstudents","Lz5r-1UVlrV86d48Aq8BNlEtbbYGv0V7qccxi54rRJM",[5920,5925,5928,5931,5934,5937,5941,5944],{"operationId":609,"slug":5921,"method":141,"path":5922,"tag":62,"summary":173,"deprecated":134,"public":134,"permission":5923,"scope":5924,"order":1130},"register-student","\u002Fv1\u002Fstudent","student\u002Fcreate:$org:$ID","flat",{"operationId":5908,"slug":5926,"method":141,"path":5927,"tag":62,"summary":176,"deprecated":134,"public":134,"permission":5923,"scope":5924,"order":1136},"check-student-registration","\u002Fv1\u002Fstudent\u002Fcheck",{"operationId":5909,"slug":5929,"method":133,"path":5922,"tag":62,"summary":170,"deprecated":134,"public":134,"permission":5930,"scope":5924,"order":1124},"list-students","student\u002Fread:$org:$ID",{"operationId":5910,"slug":5932,"method":133,"path":5933,"tag":62,"summary":185,"deprecated":134,"public":134,"permission":5930,"scope":5924,"order":1154},"get-student","\u002Fv1\u002Fstudent\u002F{studentId}",{"operationId":5911,"slug":5935,"method":190,"path":5933,"tag":62,"summary":188,"deprecated":134,"public":134,"permission":5936,"scope":5924,"order":1338},"update-student","student\u002Fupdate:$org:$ID",{"operationId":5912,"slug":5938,"method":133,"path":5939,"tag":62,"summary":195,"deprecated":134,"public":134,"permission":5930,"scope":5940,"order":1364},"list-org-students","\u002Fv1\u002F{organizationId}\u002Fstudent","organization",{"operationId":5913,"slug":5942,"method":133,"path":5943,"tag":62,"summary":198,"deprecated":134,"public":134,"permission":5930,"scope":5940,"order":1377},"get-org-student","\u002Fv1\u002F{organizationId}\u002Fstudent\u002F{studentId}",{"operationId":5914,"slug":5945,"method":190,"path":5943,"tag":62,"summary":201,"deprecated":134,"public":134,"permission":5936,"scope":5940,"order":1391},"update-org-student",1791554615051]