[{"data":1,"prerenderedAt":1069},["ShallowReactive",2],{"api-nav":3,"api-changelog:1-0-0":351},[4,28,57,95,115,301,317,331],{"id":5,"title":6,"links":7,"groups":27},"start","Start here",[8,11,15,18,21,24],{"title":9,"to":10},"Overview","\u002Fapi",{"title":12,"to":13,"status":14},"Quickstart","\u002Fapi\u002Fquickstart","available",{"title":16,"to":17,"status":14},"Environments","\u002Fapi\u002Fenvironments",{"title":19,"to":20,"status":14},"Authentication","\u002Fapi\u002Fauthentication",{"title":22,"to":23,"status":14},"Organizations","\u002Fapi\u002Forganizations",{"title":25,"to":26,"status":14},"Permissions","\u002Fapi\u002Fpermissions",[],{"id":29,"title":30,"links":31,"groups":56},"concepts","Concepts",[32,35,38,41,44,47,50,53],{"title":33,"to":34,"status":14},"Requests and responses","\u002Fapi\u002Frequests-and-responses",{"title":36,"to":37,"status":14},"Identifiers","\u002Fapi\u002Fidentifiers",{"title":39,"to":40,"status":14},"Pagination","\u002Fapi\u002Fpagination",{"title":42,"to":43},"Errors","\u002Fapi\u002Ferrors",{"title":45,"to":46,"status":14},"Rate limits","\u002Fapi\u002Frate-limits",{"title":48,"to":49,"status":14},"Retries","\u002Fapi\u002Fretries-and-idempotency",{"title":51,"to":52,"status":14},"Security","\u002Fapi\u002Fsecurity",{"title":54,"to":55,"status":14},"Versioning","\u002Fapi\u002Fversioning",[],{"id":58,"title":59,"links":60,"groups":94},"resources","Guides",[61,64,67,70,73,76,79,82,85,88,91],{"title":62,"to":63,"status":14},"Students","\u002Fapi\u002Fguides\u002Fstudents",{"title":65,"to":66,"status":14},"Bulk registration","\u002Fapi\u002Fguides\u002Fbulk-registration",{"title":68,"to":69,"status":14},"Passwords","\u002Fapi\u002Fguides\u002Fpasswords",{"title":71,"to":72,"status":14},"Supervisors","\u002Fapi\u002Fguides\u002Fsupervisors",{"title":74,"to":75,"status":14},"Reference data","\u002Fapi\u002Fguides\u002Freference-data",{"title":77,"to":78,"status":14},"API account","\u002Fapi\u002Fguides\u002Fapi-account",{"title":80,"to":81,"status":14},"Sign-in links","\u002Fapi\u002Fguides\u002Fsign-in-links",{"title":83,"to":84,"status":14},"Exams","\u002Fapi\u002Fguides\u002Fexams",{"title":86,"to":87,"status":14},"Applications","\u002Fapi\u002Fguides\u002Fapplications",{"title":89,"to":90,"status":14},"Group challenges","\u002Fapi\u002Fguides\u002Fgroup-challenges",{"title":92,"to":93,"status":14},"Certificates and reports","\u002Fapi\u002Fguides\u002Fcertificates-and-reports",[],{"id":96,"title":97,"links":98,"groups":114},"tutorials","Tutorials",[99,102,105,108,111],{"title":100,"to":101,"status":14},"Register and apply","\u002Fapi\u002Ftutorials\u002Fregister-and-apply",{"title":103,"to":104,"status":14},"Send a student to the panel","\u002Fapi\u002Ftutorials\u002Fsend-student-to-panel",{"title":106,"to":107,"status":14},"Change an application","\u002Fapi\u002Ftutorials\u002Fchange-an-application",{"title":109,"to":110,"status":14},"Collect results","\u002Fapi\u002Ftutorials\u002Fcollect-results",{"title":112,"to":113,"status":14},"Token handling","\u002Fapi\u002Ftutorials\u002Ftoken-handling",[],{"id":116,"title":117,"links":118,"groups":125},"reference","Reference",[119,122],{"title":120,"to":121},"All endpoints","\u002Fapi\u002Freference",{"title":123,"to":124},"Sandbox console","\u002Fapi\u002Fconsole",[126,135,145,166,206,212,230,255,271],{"tag":127,"slug":128,"links":129},"Health","health",[130],{"title":131,"to":132,"method":133,"deprecated":134},"Check that the API is up","\u002Fapi\u002Freference\u002Fget-health","GET",false,{"tag":77,"slug":136,"links":137},"api-account",[138,142],{"title":139,"to":140,"method":141,"deprecated":134},"Revoke the token you send, before it expires","\u002Fapi\u002Freference\u002Frevoke-token","POST",{"title":143,"to":144,"method":133,"deprecated":134},"Fetch the API account your token belongs to","\u002Fapi\u002Freference\u002Fget-current-api-account",{"tag":74,"slug":146,"links":147},"reference-data",[148,151,154,157,160,163],{"title":149,"to":150,"method":133,"deprecated":134},"List the countries a student can be registered in","\u002Fapi\u002Freference\u002Flist-countries",{"title":152,"to":153,"method":133,"deprecated":134},"Fetch one country by its id","\u002Fapi\u002Freference\u002Fget-country",{"title":155,"to":156,"method":133,"deprecated":134},"List the grades a student can be registered with","\u002Fapi\u002Freference\u002Flist-grades",{"title":158,"to":159,"method":133,"deprecated":134},"Fetch one grade by its id","\u002Fapi\u002Freference\u002Fget-grade",{"title":161,"to":162,"method":133,"deprecated":134},"List the organizations and their ids","\u002Fapi\u002Freference\u002Flist-organizations",{"title":164,"to":165,"method":133,"deprecated":134},"Fetch one organization by its id","\u002Fapi\u002Freference\u002Fget-organization",{"tag":62,"slug":167,"links":168},"students",[169,172,175,178,181,184,187,191,194,197,200,203],{"title":170,"to":171,"method":133,"deprecated":134},"List your students","\u002Fapi\u002Freference\u002Flist-students",{"title":173,"to":174,"method":141,"deprecated":134},"Register a student","\u002Fapi\u002Freference\u002Fregister-student",{"title":176,"to":177,"method":141,"deprecated":134},"Check a registration without registering the student","\u002Fapi\u002Freference\u002Fcheck-student-registration",{"title":179,"to":180,"method":141,"deprecated":134},"Register many students at once","\u002Fapi\u002Freference\u002Fcreate-student-import",{"title":182,"to":183,"method":133,"deprecated":134},"Follow a batch of students you sent","\u002Fapi\u002Freference\u002Fget-student-import",{"title":185,"to":186,"method":133,"deprecated":134},"Fetch one of your students","\u002Fapi\u002Freference\u002Fget-student",{"title":188,"to":189,"method":190,"deprecated":134},"Update one of your students","\u002Fapi\u002Freference\u002Fupdate-student","PUT",{"title":192,"to":193,"method":190,"deprecated":134},"Set the sign-in password of one of your students","\u002Fapi\u002Freference\u002Fset-student-password",{"title":195,"to":196,"method":133,"deprecated":134},"List your students who can use this organization","\u002Fapi\u002Freference\u002Flist-org-students",{"title":198,"to":199,"method":133,"deprecated":134},"Fetch one of your students, if they can use this organization","\u002Fapi\u002Freference\u002Fget-org-student",{"title":201,"to":202,"method":190,"deprecated":134},"Update one of your students and give them access to this organization","\u002Fapi\u002Freference\u002Fupdate-org-student",{"title":204,"to":205,"method":190,"deprecated":134},"Link one of your students to a supervisor on this organization","\u002Fapi\u002Freference\u002Flink-student-supervisor",{"tag":80,"slug":207,"links":208},"sign-in-links",[209],{"title":210,"to":211,"method":141,"deprecated":134},"Create a single-use sign-in link for one of your students","\u002Fapi\u002Freference\u002Fcreate-signin-link",{"tag":83,"slug":213,"links":214},"exams",[215,218,221,224,227],{"title":216,"to":217,"method":133,"deprecated":134},"List the exams open for applications","\u002Fapi\u002Freference\u002Flist-exams",{"title":219,"to":220,"method":133,"deprecated":134},"List an organization’s exam categories","\u002Fapi\u002Freference\u002Flist-exam-categories",{"title":222,"to":223,"method":133,"deprecated":134},"Fetch one exam category","\u002Fapi\u002Freference\u002Fget-exam-category",{"title":225,"to":226,"method":133,"deprecated":134},"List the exams one of your students can apply to","\u002Fapi\u002Freference\u002Flist-available-exams",{"title":228,"to":229,"method":133,"deprecated":134},"Fetch one exam that is open for applications","\u002Fapi\u002Freference\u002Fget-exam",{"tag":86,"slug":231,"links":232},"applications",[233,236,239,242,245,248,251],{"title":234,"to":235,"method":133,"deprecated":134},"List your students’ applications in this organization","\u002Fapi\u002Freference\u002Flist-applications",{"title":237,"to":238,"method":141,"deprecated":134},"Enter one of your students for an exam","\u002Fapi\u002Freference\u002Fcreate-application",{"title":240,"to":241,"method":133,"deprecated":134},"List your students’ applications for one exam","\u002Fapi\u002Freference\u002Flist-exam-applications",{"title":243,"to":244,"method":133,"deprecated":134},"List one of your students’ applications in this organization","\u002Fapi\u002Freference\u002Flist-student-applications",{"title":246,"to":247,"method":133,"deprecated":134},"Fetch one of your students’ applications","\u002Fapi\u002Freference\u002Fget-application",{"title":249,"to":250,"method":190,"deprecated":134},"Move one of your students’ applications to another exam","\u002Fapi\u002Freference\u002Fmove-application",{"title":252,"to":253,"method":254,"deprecated":134},"Withdraw one of your students from an exam","\u002Fapi\u002Freference\u002Fdelete-application","DELETE",{"tag":256,"slug":257,"links":258},"Documents","documents",[259,262,265,268],{"title":260,"to":261,"method":133,"deprecated":134},"Download a certificate file","\u002Fapi\u002Freference\u002Fdownload-certificate",{"title":263,"to":264,"method":133,"deprecated":134},"List one of your students’ released certificates","\u002Fapi\u002Freference\u002Flist-student-certificates",{"title":266,"to":267,"method":133,"deprecated":134},"Download a result report file","\u002Fapi\u002Freference\u002Fdownload-report",{"title":269,"to":270,"method":133,"deprecated":134},"List one of your students’ released result reports","\u002Fapi\u002Freference\u002Flist-student-reports",{"tag":89,"slug":272,"links":273},"group-challenges",[274,277,280,283,286,289,292,295,298],{"title":275,"to":276,"method":133,"deprecated":134},"List the group challenges an organization runs","\u002Fapi\u002Freference\u002Flist-group-challenges",{"title":278,"to":279,"method":133,"deprecated":134},"Fetch one group challenge","\u002Fapi\u002Freference\u002Fget-group-challenge",{"title":281,"to":282,"method":133,"deprecated":134},"List the groups your students are in for a group challenge","\u002Fapi\u002Freference\u002Flist-group-challenge-groups",{"title":284,"to":285,"method":133,"deprecated":134},"Fetch one group, with its steps and files","\u002Fapi\u002Freference\u002Fget-group-challenge-group",{"title":287,"to":288,"method":133,"deprecated":134},"List what has happened in one group","\u002Fapi\u002Freference\u002Flist-group-challenge-activity",{"title":290,"to":291,"method":141,"deprecated":134},"Send a group’s finished work for one of your students","\u002Fapi\u002Freference\u002Fsubmit-group-challenge-work",{"title":293,"to":294,"method":141,"deprecated":134},"Submit one step of a group for one of your students","\u002Fapi\u002Freference\u002Fsubmit-group-challenge-step",{"title":296,"to":297,"method":133,"deprecated":134},"List your students’ eligibility and groups for a group challenge","\u002Fapi\u002Freference\u002Flist-group-challenge-students",{"title":299,"to":300,"method":133,"deprecated":134},"Fetch one of your students’ eligibility and group for a group challenge","\u002Fapi\u002Freference\u002Fget-group-challenge-student",{"id":302,"title":303,"links":304,"groups":316},"clients","Clients",[305,307,310,313],{"title":9,"to":306,"status":14},"\u002Fapi\u002Fclients",{"title":308,"to":309,"status":14},"Node.js","\u002Fapi\u002Fclients\u002Fnode",{"title":311,"to":312,"status":14},"PHP","\u002Fapi\u002Fclients\u002Fphp",{"title":314,"to":315,"status":14},"Build your own","\u002Fapi\u002Fclients\u002Fbuild-your-own",[],{"id":318,"title":319,"links":320,"groups":330},"agents","AI agents",[321,324,327],{"title":322,"to":323},"AI connections","\u002Fapi\u002Fmcp",{"title":325,"to":326},"What it can do","\u002Fapi\u002Fmcp\u002Ftools",{"title":328,"to":329},"Agent skills","\u002Fapi\u002Fskills",[],{"id":332,"title":333,"links":334,"groups":350},"help","Help",[335,338,341,344,347],{"title":336,"to":337,"status":14},"Glossary","\u002Fapi\u002Fglossary",{"title":339,"to":340,"status":14},"FAQ","\u002Fapi\u002Ffaq",{"title":342,"to":343,"status":14},"Troubleshooting","\u002Fapi\u002Ftroubleshooting",{"title":345,"to":346,"status":14},"Support","\u002Fapi\u002Fsupport",{"title":348,"to":349},"Changelog","\u002Fapi\u002Fchangelog",[],{"entry":352,"body":465,"newer":1065,"older":1068},{"path":353,"version":354,"date":355,"breaking":134,"summary":356,"description":357,"changes":358,"longForm":464,"preview":134},"\u002Fapi\u002Fchangelog\u002F1-0-0","1.0.0","2026-09-15","Initial release of the v1 partner API, with 35 operations for students, sign-in links, exams, applications, certificates and reports.","The first release of the Main Team API. Every operation, and the behaviors your integration can rely on from the start.",[359,364,369,378,390,394,402,412,419,422,425,428,431,434,437,440,443,446,449,452,455,458,461],{"type":360,"breaking":134,"text":361,"operations":362},"added","Health: `getHealth`.",[363],"getHealth",{"type":360,"breaking":134,"text":365,"operations":366},"API account: `getCurrentApiAccount`, `revokeToken`.",[367,368],"getCurrentApiAccount","revokeToken",{"type":360,"breaking":134,"text":370,"operations":371},"Reference data: `listCountries`, `getCountry`, `listGrades`, `getGrade`, `listOrganizations`, `getOrganization`.",[372,373,374,375,376,377],"listCountries","getCountry","listGrades","getGrade","listOrganizations","getOrganization",{"type":360,"breaking":134,"text":379,"operations":380},"Students: `listStudents`, `getStudent`, `registerStudent`, `updateStudent`, `setStudentPassword`, `listOrgStudents`, `getOrgStudent`, `updateOrgStudent`, `linkStudentSupervisor`.",[381,382,383,384,385,386,387,388,389],"listStudents","getStudent","registerStudent","updateStudent","setStudentPassword","listOrgStudents","getOrgStudent","updateOrgStudent","linkStudentSupervisor",{"type":360,"breaking":134,"text":391,"operations":392},"Sign-in links: `createSigninLink`.",[393],"createSigninLink",{"type":360,"breaking":134,"text":395,"operations":396},"Exams: `listExamCategories`, `getExamCategory`, `listExams`, `listAvailableExams`, `getExam`.",[397,398,399,400,401],"listExamCategories","getExamCategory","listExams","listAvailableExams","getExam",{"type":360,"breaking":134,"text":403,"operations":404},"Applications: `listApplications`, `listExamApplications`, `listStudentApplications`, `getApplication`, `createApplication`, `moveApplication`, `deleteApplication`.",[405,406,407,408,409,410,411],"listApplications","listExamApplications","listStudentApplications","getApplication","createApplication","moveApplication","deleteApplication",{"type":360,"breaking":134,"text":413,"operations":414},"Documents: `listStudentCertificates`, `downloadCertificate`, `listStudentReports`, `downloadReport`.",[415,416,417,418],"listStudentCertificates","downloadCertificate","listStudentReports","downloadReport",{"type":360,"breaking":134,"text":420,"operations":421},"Authentication with self-signed HS256 tokens, where `kid` and `sub` are the apiKey, and `iat` and `exp` are required with a lifetime of at most 3600 seconds and 30 seconds of clock tolerance. Every authentication failure answers the same `401 unauthorized`.",[],{"type":360,"breaking":134,"text":423,"operations":424},"Permissions by role, checked against the organization each request acts on. An operation with no permission granted answers `403 forbidden`.",[],{"type":360,"breaking":134,"text":426,"operations":427},"Response envelopes: `{ success, message, data, pagination? }` on success, and `{ error: { code, message, documentation_url, request_id } }` on failure, with an `X-Request-Id` header on every response. `documentation_url` is the code's entry on the partner documentation, `https:\u002F\u002Fhub.main-team.org\u002Fapi\u002Ferrors#\u003Ccode>`.",[],{"type":360,"breaking":134,"text":429,"operations":430},"Pagination with `page` (default 1) and `limit` (default 20, at most 100).",[],{"type":360,"breaking":134,"text":432,"operations":433},"A rate limit of 100 requests per 60 seconds for each account and each operation, with `Retry-After` and `X-RateLimit-*` headers. Each operation has its own budget. Going over answers `429 too_many_requests` with the message \"Too many requests to this operation. Wait the number of seconds in Retry-After, then try again.\"",[],{"type":360,"breaking":134,"text":435,"operations":436},"`createSigninLink`: sign-in links that are valid for 120 seconds and work once, for a student with access to that organization.",[393],{"type":360,"breaking":134,"text":438,"operations":439},"`getStudent`, `getOrgStudent`, `getCountry`, `getGrade`, `getOrganization` and `getExamCategory` answer `404 not_found` for an id they cannot show, as every single read does. A student of another account answers like a missing one.",[382,387,373,375,377,398],{"type":360,"breaking":134,"text":441,"operations":442},"`getApplication`, `moveApplication` and `deleteApplication` answer `404` with \"Application not found!\" alike for a missing application and one of another account's student.",[408,410,411],{"type":360,"breaking":134,"text":444,"operations":445},"`listOrganizations` and `getOrganization` serve the five organizations that run exams: `stem`, `hilingua`, `neo`, `gmath` and `coding`. On every operation with `organizationId` in its path, the id of any other organization, `mto`'s included, answers `404 not_found` with \"Organization not found!\", as an id that names no organization does.",[376,377],{"type":360,"breaking":134,"text":447,"operations":448},"`getCurrentApiAccount` returns the account's `roles`, each with `effect`, `action`, `target` and, when set, `authorized`, to compare with an operation's `x-permission`.",[367],{"type":360,"breaking":134,"text":450,"operations":451},"`registerStudent` requires `firstName`, `lastName`, `email`, `birth`, `sex`, `country`, `grade`, `city` and `school`, with `birth` a date that exists, as DD\u002FMM\u002FYYYY, and names a missing field in its `400` (\"lastName should not be empty\"). `updateStudent` and `updateOrgStudent` hold the fields they are sent to the same rules, and refuse `null` for `firstName`, `lastName`, `birth`, `sex` and `phone`. `registerStudent` refuses a `null` `phone` too.",[383,384,388],{"type":360,"breaking":134,"text":453,"operations":454},"`activatedPlatformsThisSeason` on `registerStudent`, `updateStudent` and `updateOrgStudent` takes `common`, `stem`, `hilingua`, `neo`, `gmath` and `coding`. The two updates add to the student's list and never remove from it. `updateOrgStudent` without the field, even with an empty body, adds its own organization, unless the list already holds `common`. All three refuse `null` for it with `400`; `registerStudent` without it stores `[\"common\"]`.",[383,384,388],{"type":360,"breaking":134,"text":456,"operations":457},"Passwords: a `password` at `registerStudent`, and `setStudentPassword`, need `auth\u002Fsignin` on `mto`. A password is 5 characters to 72 bytes and contains none of the student's own details. `setStudentPassword` answers `409` once the student has confirmed their email address.",[383,385],{"type":360,"breaking":134,"text":459,"operations":460},"`linkStudentSupervisor` answers every refusal with the same `404` \"Not found!\".",[389],{"type":360,"breaking":134,"text":462,"operations":463},"`createApplication` is safe to repeat: the same student and exam answer `200` with the existing application.",[409],true,{"type":466,"value":467,"toc":1050},"minimark",[468,477,482,485,624,628,633,722,725,819,822,848,850,947,951,980,984,1030,1033],[469,470,471,472,476],"p",{},"The first release of the Main Team API. Every path is under ",[473,474,475],"code",{},"https:\u002F\u002Fapi.main-team.org\u002Fv1",". Nothing here replaces an earlier version: each behavior below is how the API works from day one, listed so you can see the rules your integration will meet in one place. Each item links to the page that explains it.",[478,479,481],"h2",{"id":480},"operations","Operations",[469,483,484],{},"35 operations in eight groups:",[486,487,488,500],"table",{},[489,490,491],"thead",{},[492,493,494,498],"tr",{},[495,496,497],"th",{},"Group",[495,499,481],{},[501,502,503,513,524,542,566,574,590,610],"tbody",{},[492,504,505,508],{},[506,507,127],"td",{},[506,509,510],{},[511,512,363],"a",{"href":132},[492,514,515,517],{},[506,516,77],{},[506,518,519,521,522],{},[511,520,367],{"href":144},", ",[511,523,368],{"href":140},[492,525,526,528],{},[506,527,74],{},[506,529,530,521,532,521,534,521,536,521,538,521,540],{},[511,531,372],{"href":150},[511,533,373],{"href":153},[511,535,374],{"href":156},[511,537,375],{"href":159},[511,539,376],{"href":162},[511,541,377],{"href":165},[492,543,544,546],{},[506,545,62],{},[506,547,548,521,550,521,552,521,554,521,556,521,558,521,560,521,562,521,564],{},[511,549,381],{"href":171},[511,551,382],{"href":186},[511,553,383],{"href":174},[511,555,384],{"href":189},[511,557,385],{"href":193},[511,559,386],{"href":196},[511,561,387],{"href":199},[511,563,388],{"href":202},[511,565,389],{"href":205},[492,567,568,570],{},[506,569,80],{},[506,571,572],{},[511,573,393],{"href":211},[492,575,576,578],{},[506,577,83],{},[506,579,580,521,582,521,584,521,586,521,588],{},[511,581,397],{"href":220},[511,583,398],{"href":223},[511,585,399],{"href":217},[511,587,400],{"href":226},[511,589,401],{"href":229},[492,591,592,594],{},[506,593,86],{},[506,595,596,521,598,521,600,521,602,521,604,521,606,521,608],{},[511,597,405],{"href":235},[511,599,406],{"href":241},[511,601,407],{"href":244},[511,603,408],{"href":247},[511,605,409],{"href":238},[511,607,410],{"href":250},[511,609,411],{"href":253},[492,611,612,614],{},[506,613,256],{},[506,615,616,521,618,521,620,521,622],{},[511,617,415],{"href":264},[511,619,416],{"href":261},[511,621,417],{"href":270},[511,623,418],{"href":267},[478,625,627],{"id":626},"notable-behaviors","Notable behaviors",[629,630,632],"h3",{"id":631},"authentication-and-access","Authentication and access",[634,635,636,668,673,688,711,719],"ul",{},[637,638,639,640,521,643,646,647,650,651,521,654,646,657,660,661,664,665,667],"li",{},"You sign your own tokens: HS256 with your ",[473,641,642],{},"apiSecret",[473,644,645],{},"kid"," and ",[473,648,649],{},"sub"," set to your ",[473,652,653],{},"apiKey",[473,655,656],{},"iat",[473,658,659],{},"exp"," required, at most 3600 seconds apart, with 30 seconds of clock tolerance. Every authentication failure answers the same ",[473,662,663],{},"401 unauthorized",". See ",[511,666,19],{"href":20},".",[637,669,670,672],{},[511,671,368],{"href":140}," ends one token early. Role changes and deactivation of your account take effect within 60 seconds.",[637,674,675,676,679,680,683,684,664,686,667],{},"Every operation except the health check needs a permission from your roles, checked against the organization the request acts on; operations without an organization in their path act on ",[473,677,678],{},"mto",". Setting a password needs ",[473,681,682],{},"auth\u002Fsignin"," on ",[473,685,678],{},[511,687,25],{"href":26},[637,689,690,693,694,697,698,700,701,704,705,708,709,667],{},[473,691,692],{},"{organizationId}"," in a path is the organization's ",[473,695,696],{},"_id"," from ",[511,699,376],{"href":162},", never its slug. An unknown id answers ",[473,702,703],{},"404"," with ",[473,706,707],{},"Organization not found!",", after the token is checked. See ",[511,710,22],{"href":23},[637,712,713,715,716,718],{},[511,714,376],{"href":162}," lists the five organizations that run exams: stem, hilingua, neo, gmath and coding. ",[473,717,678],{},", the core record, is not listed: the operations without an organization in their path act on it.",[637,720,721],{},"Your account sees only the students it registered and the records reached through them. Another account's record answers like a missing one.",[629,723,33],{"id":724},"requests-and-responses",[634,726,727,740,765,784,794,807],{},[637,728,729,730,733,734,737,738,667],{},"JSON bodies in UTF-8, at most 100 kB (",[473,731,732],{},"413"," above that). A field the operation does not accept is refused with ",[473,735,736],{},"400"," naming it. See ",[511,739,33],{"href":34},[637,741,742,743,746,747,750,751,754,755,521,758,761,762,764],{},"Success responses use ",[473,744,745],{},"{ success, message, data, pagination? }","; errors use ",[473,748,749],{},"{ error: { code, message, documentation_url, request_id } }",", where ",[473,752,753],{},"documentation_url"," is the code's entry on the ",[511,756,757],{"href":43},"errors page",[473,759,760],{},"https:\u002F\u002Fhub.main-team.org\u002Fapi\u002Ferrors#\u003Ccode>",". ",[511,763,367],{"href":144}," returns the account without the envelope, and the downloads return the file itself.",[637,766,767,768,771,772,521,774,521,776,521,778,521,780,646,782,667],{},"Every single read answers ",[473,769,770],{},"404 not_found"," for a record it cannot show, including ",[511,773,382],{"href":186},[511,775,387],{"href":199},[511,777,373],{"href":153},[511,779,375],{"href":159},[511,781,377],{"href":165},[511,783,398],{"href":223},[637,785,786,787,790,791,667],{},"Every response carries ",[473,788,789],{},"X-Request-Id",". Quote it when you contact ",[511,792,793],{"href":346},"support",[637,795,796,797,800,801,804,805,667],{},"Lists take ",[473,798,799],{},"page"," (default 1) and ",[473,802,803],{},"limit"," (default 20, at most 100; larger values are clamped). See ",[511,806,39],{"href":40},[637,808,809,810,646,813,816,817,667],{},"Two catalog codes, ",[473,811,812],{},"invalid_email",[473,814,815],{},"unprocessable_entity",", are reserved: no operation returns them in 1.0.0. See ",[511,818,42],{"href":43},[629,820,45],{"id":821},"rate-limits",[634,823,824,829],{},[637,825,826,827,667],{},"100 requests per 60 seconds per account and per operation, whichever organization is in the path. Each operation is counted on its own. See ",[511,828,45],{"href":46},[637,830,831,832,704,835,838,839,521,842,646,845,667],{},"Going over answers ",[473,833,834],{},"429",[473,836,837],{},"Retry-After"," and the message \"Too many requests to this operation. Wait the number of seconds in Retry-After, then try again.\", and blocks that operation for 60 seconds. Counted responses carry ",[473,840,841],{},"X-RateLimit-Limit",[473,843,844],{},"X-RateLimit-Remaining",[473,846,847],{},"X-RateLimit-Reset",[629,849,62],{"id":167},[634,851,852,864,867,909,936,939],{},[637,853,854,855,858,859,861,862,667],{},"Registration is not idempotent. An email address already registered to your account answers ",[473,856,857],{},"409"," with that student's id; one held by anyone else answers ",[473,860,857],{}," without an id. See ",[511,863,62],{"href":63},[637,865,866],{},"Every student gets a username at registration, which the API never changes.",[637,868,869,870,521,873,521,876,521,879,521,882,521,885,521,888,521,891,646,894,897,898,900,901,904,905,908],{},"Registration requires ",[473,871,872],{},"firstName",[473,874,875],{},"lastName",[473,877,878],{},"email",[473,880,881],{},"birth",[473,883,884],{},"sex",[473,886,887],{},"country",[473,889,890],{},"grade",[473,892,893],{},"city",[473,895,896],{},"school",", and ",[473,899,881],{}," must be a date that exists, as ",[473,902,903],{},"DD\u002FMM\u002FYYYY",". Both updates hold the fields you send to the same rules, and refuse ",[473,906,907],{},"null"," for a field a student can't be without.",[637,910,911,912,915,916,919,920,521,923,521,926,521,929,646,932,935],{},"A student can use every organization by default (",[473,913,914],{},"activatedPlatformsThisSeason: [\"common\"]","). The list takes ",[473,917,918],{},"common"," and the slugs ",[473,921,922],{},"stem",[473,924,925],{},"hilingua",[473,927,928],{},"neo",[473,930,931],{},"gmath",[473,933,934],{},"coding",". Updates only add to it and never remove anything. Updating a student through an organization without the field, even with an empty body, gives the student access to that organization.",[637,937,938],{},"Changing a student's email address withdraws its confirmation until the student confirms the new address.",[637,940,941,942,944,945,667],{},"Passwords are at least 5 characters and at most 72 bytes, may not contain the student's name, username or email address, and can no longer be set once the student has confirmed their email address (",[473,943,857],{},"). See ",[511,946,68],{"href":69},[629,948,950],{"id":949},"sign-in-links-and-organization-copies","Sign-in links and organization copies",[634,952,953,965,972],{},[637,954,955,956,959,960,664,963,667],{},"A sign-in link works once and for 120 seconds. Its optional ",[473,957,958],{},"redirect"," must be a path on the organization's site that starts with a single ",[473,961,962],{},"\u002F",[511,964,80],{"href":81},[637,966,967,968,971],{},"A student without access to the organization gets ",[473,969,970],{},"403",". An unconfirmed email address does not block a link; the panel asks the student to confirm it and lets them choose to do it later.",[637,973,974,975,977,978,667],{},"An organization creates its own copy of a student at their first sign-in there. Until then, applications, the student's application, certificate and report lists on that organization answer ",[473,976,857],{},", and a supervisor link answers ",[473,979,703],{},[629,981,983],{"id":982},"exams-and-applications","Exams and applications",[634,985,986,994,1006,1009,1015],{},[637,987,988,989,991,992,667],{},"Only open exams are listed or can be read by id. The exam picker, ",[511,990,400],{"href":226},", offers one student exactly what they may apply for. See ",[511,993,83],{"href":84},[637,995,996,997,704,1000,1003,1004,667],{},"Creating the same application again answers ",[473,998,999],{},"200",[473,1001,1002],{},"Application already exists."," and the existing application. See ",[511,1005,86],{"href":87},[637,1007,1008],{},"A move is refused once the exam has started, and checked against the same rules as a new application. A paid application moves only to an exam with the same price. An AI Challenge application cannot be moved once the student has used part of their image quota.",[637,1010,1011,1012,1014],{},"An application with a settled payment cannot be deleted (",[473,1013,857],{},"). The API records payments but never charges or refunds anyone.",[637,1016,1017,521,1019,646,1021,1023,1024,704,1026,1029],{},[511,1018,408],{"href":247},[511,1020,410],{"href":250},[511,1022,411],{"href":253}," answer ",[473,1025,703],{},[473,1027,1028],{},"Application not found!"," alike for an application that does not exist and one of another account's student.",[629,1031,92],{"id":1032},"certificates-and-reports",[634,1034,1035],{},[637,1036,1037,1038,1040,1041,1044,1045,1047,1048,667],{},"Only released documents are listed or downloaded. A download by ",[473,1039,696],{}," or ",[473,1042,1043],{},"shortId"," answers one ",[473,1046,703],{}," for a document that is missing, not released, not yours or has no file. See ",[511,1049,92],{"href":93},{"title":1051,"searchDepth":1052,"depth":1053,"links":1054},"",2,3,[1055,1056],{"id":480,"depth":1052,"text":481},{"id":626,"depth":1052,"text":627,"children":1057},[1058,1059,1060,1061,1062,1063,1064],{"id":631,"depth":1053,"text":632},{"id":724,"depth":1053,"text":33},{"id":821,"depth":1053,"text":45},{"id":167,"depth":1053,"text":62},{"id":949,"depth":1053,"text":950},{"id":982,"depth":1053,"text":983},{"id":1032,"depth":1053,"text":92},{"path":1066,"version":1067},"\u002Fapi\u002Fchangelog\u002F1-0-1","1.0.1",null,1791554613405]