{"openapi":"3.0.3","info":{"title":"HackBlitz AutoPed API","description":"Public academic data and team-scoped sandbox APIs for HackBlitz.","version":"hackblitz-v1"},"servers":[{"url":"/"}],"security":[{"HackBlitzKey":[]}],"components":{"securitySchemes":{"HackBlitzKey":{"name":"X-HackBlitz-Key","in":"header","type":"apiKey"},"HackBlitzBearer":{"type":"http","scheme":"bearer"}}},"paths":{"/api/public/meta":{"get":{"summary":"Read API availability","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"version":"hackblitz-v1","publicApiAvailable":true,"sandboxAvailable":true,"publicEndpoints":["/api/public/programmes","/api/public/studyplans","/api/public/search"],"sandboxEndpoints":["/api/sandbox/me","/api/sandbox/students"]}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}}}},"/api/public/programmes":{"get":{"summary":"List study programmes","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"acronym":"IE","name":"Computer Science in English","field":"Computer Science","cycle":"BACHELOR","apiUrl":"/api/public/programmes/IE"},{"acronym":"CS","name":"CyberSecurity","field":"Computer Science","cycle":"MASTER","apiUrl":"/api/public/programmes/CS"}],"page":1,"size":10,"totalItems":11}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"example":"AI"},{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer"},"example":10}]}},"/api/public/studyplans":{"get":{"summary":"List study plans","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":"6a03a0972355ae3a04d2f36c","programmeAcronym":"IE","validFromYear":2025,"validToYear":2028,"publicUrl":"/studyplans/6a03a0972355ae3a04d2f36c","apiUrl":"/api/public/studyplans/6a03a0972355ae3a04d2f36c"}],"page":1,"size":10,"totalItems":20}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"example":"IE"},{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer"},"example":10}]}},"/api/public/studyplans/{id}":{"get":{"summary":"Read one study plan with subjects","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"id":"6a03a0972355ae3a04d2f36c","programmeAcronym":"IE","validFromYear":2025,"validToYear":2028,"publicUrl":"/studyplans/6a03a0972355ae3a04d2f36c","apiUrl":"/api/public/studyplans/6a03a0972355ae3a04d2f36c","subjects":[{"id":"15076","name":"Algorithms and Data Structures 1","studyProgramme":"IE","year":1,"semester":1,"credits":6,"choice":"DO","kind":"DF","apiUrl":"/api/public/subjects/15076"},{"id":"15114","name":"Artificial Intelligence","studyProgramme":"IE","year":2,"semester":2,"credits":4,"choice":"DO","kind":"DF","apiUrl":"/api/public/subjects/15114"},{"id":"15148","name":"Security and Cryptography","studyProgramme":"IE","year":3,"semester":2,"credits":5,"choice":"DOP","kind":"DS","apiUrl":"/api/public/subjects/15148"}],"escoOccupationCodes":["2512.2","2512.3","2512.4"]}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"6a03a0972355ae3a04d2f36c"}]}},"/api/public/studyplans/{id}/graph":{"get":{"summary":"Read a study plan graph","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"studyPlanId":"6a03a0972355ae3a04d2f36c","nodes":[{"id":"6a03a0972355ae3a04d2f36c","type":"studyPlan","label":"IE"},{"id":"15114","type":"subject","label":"Artificial Intelligence"}],"edges":[{"source":"6a03a0972355ae3a04d2f36c","target":"15114","type":"contains"}]}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"6a03a0972355ae3a04d2f36c"}]}},"/api/public/subjects":{"get":{"summary":"List subjects","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":"15125","name":"Introduction To Cybersecurity","studyProgramme":"IE","year":2,"semester":2,"credits":4,"choice":"DOP","kind":"DS","apiUrl":"/api/public/subjects/15125"}],"page":1,"size":10,"totalItems":2184}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"example":"security"},{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer"},"example":10}]}},"/api/public/subjects/{id}":{"get":{"summary":"Read one subject","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"subject":{"id":"15125","name":"Introduction To Cybersecurity","studyProgramme":"IE","year":2,"semester":2,"credits":4,"choice":"DOP","kind":"DS","apiUrl":"/api/public/subjects/15125"},"syllabi":[{"id":"14662-drive","subjectId":"14662","subjectName":"Introduction To Cybersecurity","studyProgramme":"IE","courseCoordinator":{"email":"cristian.cira@e-uvt.ro","firstName":"Cristian","lastName":"Cira","academicTitle":"Lector Dr","displayName":"Lector Dr Cristian Cira","publicUrl":"/teachers?teacher=cristian.cira@e-uvt.ro","apiUrl":"/api/public/teachers?email=cristian.cira@e-uvt.ro"},"apiUrl":"/api/public/syllabi/14662-drive"}],"studyPlans":[{"id":"6a03a0972355ae3a04d2f36c","programmeAcronym":"IE","validFromYear":2025,"validToYear":2028,"publicUrl":"/studyplans/6a03a0972355ae3a04d2f36c","apiUrl":"/api/public/studyplans/6a03a0972355ae3a04d2f36c"}]}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"15125"}]}},"/api/public/subjects/{id}/connections":{"get":{"summary":"Read study plan and syllabus links for a subject","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"subjectId":"15125","syllabi":[{"id":"14662-drive","subjectId":"14662","subjectName":"Introduction To Cybersecurity","studyProgramme":"IE","courseCoordinator":{"email":"cristian.cira@e-uvt.ro","firstName":"Cristian","lastName":"Cira","academicTitle":"Lector Dr","displayName":"Lector Dr Cristian Cira","publicUrl":"/teachers?teacher=cristian.cira@e-uvt.ro","apiUrl":"/api/public/teachers?email=cristian.cira@e-uvt.ro"},"apiUrl":"/api/public/syllabi/14662-drive"}],"studyPlans":[{"id":"6a03a0972355ae3a04d2f36c","programmeAcronym":"IE","validFromYear":2025,"validToYear":2028,"publicUrl":"/studyplans/6a03a0972355ae3a04d2f36c","apiUrl":"/api/public/studyplans/6a03a0972355ae3a04d2f36c"}]}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"15125"}]}},"/api/public/syllabi":{"get":{"summary":"List published syllabi","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":"14662-drive","subjectId":"14662","subjectName":"Introduction To Cybersecurity","studyProgramme":"IE","courseCoordinator":{"email":"cristian.cira@e-uvt.ro","firstName":"Cristian","lastName":"Cira","academicTitle":"Lector Dr","displayName":"Lector Dr Cristian Cira","publicUrl":"/teachers?teacher=cristian.cira@e-uvt.ro","apiUrl":"/api/public/teachers?email=cristian.cira@e-uvt.ro"},"apiUrl":"/api/public/syllabi/14662-drive"}],"page":1,"size":10,"totalItems":9}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"example":"Machine Learning"},{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer"},"example":10}]}},"/api/public/syllabi/{id}":{"get":{"summary":"Read one syllabus","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"id":"14662-drive","subject":{"id":"14662","name":"Introduction To Cybersecurity","studyProgramme":"IE","year":2,"semester":2,"credits":4,"choice":"DOP","kind":"DS","apiUrl":"/api/public/subjects/14662"},"studyProgramme":"IE","courseCoordinator":{"email":"cristian.cira@e-uvt.ro","firstName":"Cristian","lastName":"Cira","academicTitle":"Lector Dr","displayName":"Lector Dr Cristian Cira","publicUrl":"/teachers?teacher=cristian.cira@e-uvt.ro","apiUrl":"/api/public/teachers?email=cristian.cira@e-uvt.ro"},"seminarCoordinators":[],"knowledgeOutcomes":["Understand basic concepts and technologies used in cybersecurity."],"skillOutcomes":["Recognize security risks and apply prevention or mitigation techniques."],"responsibilityOutcomes":["Apply security concepts responsibly in practical software contexts."],"corroboration":null,"onlinePlatform":null,"apiUrl":"/api/public/syllabi/14662-drive"}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"14662-drive"}]}},"/api/public/teachers":{"get":{"summary":"List teachers","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"email":"cristian.cira@e-uvt.ro","firstName":"Cristian","lastName":"Cira","academicTitle":"Lector Dr","displayName":"Lector Dr Cristian Cira","publicUrl":"/teachers?teacher=cristian.cira@e-uvt.ro","apiUrl":"/api/public/teachers?email=cristian.cira@e-uvt.ro"}],"page":1,"size":10,"totalItems":1}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"example":"cira"},{"name":"email","in":"query","required":false,"schema":{"type":"string"},"example":"cristian.cira@e-uvt.ro"},{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer"},"example":10}]}},"/api/public/thesis/seasons":{"get":{"summary":"List thesis seasons","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":"6a03aa711f4c937ae4511a0a","name":"Promotia 2027","studyCycle":"BACHELOR","active":true,"apiUrl":"/api/public/thesis/seasons"}],"page":1,"size":10,"totalItems":1}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer"},"example":10}]}},"/api/public/thesis/topics":{"get":{"summary":"List published thesis topics","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"items":[{"id":"6a03a9761f4c937ae4511a08","seasonId":"6a03a7221f4c937ae4511522","seasonName":"Promotia 2026","title":"Quantum resistant algorithms","description":"Explore algorithms and implementation trade-offs for post-quantum security.","teacherEmail":"cosmin.bonchis@e-uvt.ro","capacity":1,"studyCycle":"MASTER","programsAccepted":[],"publicationStatus":"PUBLISHED","apiUrl":"/api/public/thesis/topics/6a03a9761f4c937ae4511a08"}],"page":1,"size":10,"totalItems":5}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"example":"quantum"},{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer"},"example":10}]}},"/api/public/thesis/topics/{id}":{"get":{"summary":"Read one thesis topic","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"id":"6a03a9761f4c937ae4511a08","seasonId":"6a03a7221f4c937ae4511522","seasonName":"Promotia 2026","title":"Quantum resistant algorithms","description":"Explore algorithms and implementation trade-offs for post-quantum security.","teacherEmail":"cosmin.bonchis@e-uvt.ro","capacity":1,"studyCycle":"MASTER","programsAccepted":[],"publicationStatus":"PUBLISHED","apiUrl":"/api/public/thesis/topics/6a03a9761f4c937ae4511a08"}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"6a03a9761f4c937ae4511a08"}]}},"/api/public/search":{"get":{"summary":"Search public academic data","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"query":"security","items":[{"type":"subject","id":"15148","title":"Security and Cryptography","description":"IE","apiUrl":"/api/public/subjects/15148","publicUrl":null},{"type":"thesisTopic","id":"6a03a7541f4c937ae45115ad","title":"Cybersecurity applications","description":"ransomware, botnet, phishing detection","apiUrl":"/api/public/thesis/topics/6a03a7541f4c937ae45115ad","publicUrl":null}],"page":1,"size":10,"totalItems":82}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"example":"security"},{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer"},"example":10}]}},"/api/public/career/explore":{"get":{"summary":"Explore subjects related to an occupation","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"occupation":"software developer","studyPlanId":"6a03a0972355ae3a04d2f36c","relatedSubjects":[{"id":"15077","name":"Programming 1","studyProgramme":"IE","year":1,"semester":1,"credits":6,"choice":"DO","kind":"DF","apiUrl":"/api/public/subjects/15077"},{"id":"15113","name":"Software Engineering","studyProgramme":"IE","year":2,"semester":2,"credits":4,"choice":"DO","kind":"DS","apiUrl":"/api/public/subjects/15113"}],"thesisTopics":[{"id":"6a03a9761f4c937ae4511a08","seasonId":"6a03a7221f4c937ae4511522","seasonName":"Promotia 2026","title":"Quantum resistant algorithms","description":"Explore algorithms and implementation trade-offs for post-quantum security.","teacherEmail":"cosmin.bonchis@e-uvt.ro","capacity":1,"studyCycle":"MASTER","programsAccepted":[],"publicationStatus":"PUBLISHED","apiUrl":"/api/public/thesis/topics/6a03a9761f4c937ae4511a08"}]}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"occupation","in":"query","required":false,"schema":{"type":"string"},"example":"software developer"},{"name":"studyPlanId","in":"query","required":false,"schema":{"type":"string"},"example":"6a03a0972355ae3a04d2f36c"}]}},"/api/sandbox/me":{"get":{"summary":"Read the current team identity","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"sandbox":true,"teamId":"team-1","teamName":"Team Ada","keyId":"key-1"}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}}}},"/api/sandbox/students":{"get":{"summary":"List sandbox students for the team","responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"sandbox":true,"studentId":"sandbox-student-1","name":"Mara Popescu","email":"sandbox-1-team-1@hackblitz.local","studyCycle":"BACHELOR","programme":"IE","year":1,"studyPlanId":"6a03a0972355ae3a04d2f36c","interests":["AI","cybersecurity"],"preferredDomains":["software","security"],"knownSkills":["Java","Python","web apps"],"careerGoals":["Build secure AI-powered software systems"],"languagePreferences":["en","ro"]}]}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}}}},"/api/sandbox/students/{studentId}/profile":{"get":{"summary":"Read a sandbox student profile","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"sandbox":true,"studentId":"sandbox-student-1","name":"Mara Popescu","email":"sandbox-1-team-1@hackblitz.local","studyCycle":"BACHELOR","programme":"IE","year":1,"studyPlanId":"6a03a0972355ae3a04d2f36c","interests":["AI","cybersecurity"],"preferredDomains":["software","security"],"knownSkills":["Java","Python","web apps"],"careerGoals":["Build secure AI-powered software systems"],"languagePreferences":["en","ro"]}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"}]},"put":{"summary":"Update a sandbox student profile","parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"name":"Mara Popescu","studyPlanId":"6a03a0972355ae3a04d2f36c","interests":["AI","cybersecurity"],"preferredDomains":["software","security"],"knownSkills":["Java","Python","web apps"],"careerGoals":["Build secure AI-powered software systems"],"languagePreferences":["en","ro"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"sandbox":true,"studentId":"sandbox-student-1","name":"Mara Popescu","email":"sandbox-1-team-1@hackblitz.local","studyCycle":"BACHELOR","programme":"IE","year":1,"studyPlanId":"6a03a0972355ae3a04d2f36c","interests":["AI","cybersecurity"],"preferredDomains":["software","security"],"knownSkills":["Java","Python","web apps"],"careerGoals":["Build secure AI-powered software systems"],"languagePreferences":["en","ro"]}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}}}},"/api/sandbox/students/{studentId}/saved-items":{"get":{"summary":"List saved items for a sandbox student","responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"sandbox":true,"id":"saved-1","studentId":"sandbox-student-1","itemType":"thesisTopic","itemId":"6a03a9761f4c937ae4511a08","title":"Quantum resistant algorithms","note":"Interesting bridge between cybersecurity and quantum computing.","createdAt":"2026-05-23T10:00:00Z"}]}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"}]},"post":{"summary":"Save a public API item for a sandbox student","parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"itemType":"thesisTopic","itemId":"6a03a9761f4c937ae4511a08","title":"Quantum resistant algorithms","note":"Interesting bridge between cybersecurity and quantum computing."}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"sandbox":true,"id":"saved-1","studentId":"sandbox-student-1","itemType":"thesisTopic","itemId":"6a03a9761f4c937ae4511a08","title":"Quantum resistant algorithms","note":"Interesting bridge between cybersecurity and quantum computing.","createdAt":"2026-05-23T10:00:00Z"}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}}}},"/api/sandbox/students/{studentId}/saved-items/{id}":{"delete":{"summary":"Delete a saved item","parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"},{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"saved-1"}],"responses":{"204":{"description":"Deleted"},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"404":{"description":"Sandbox resource not found","content":{"application/json":{"example":{"code":"NOT_FOUND","message":"Sandbox resource not found","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}}}},"/api/sandbox/students/{studentId}/career-profile":{"get":{"summary":"Read a sandbox career profile","responses":{"200":{"description":"OK","content":{"application/json":{"example":{"sandbox":true,"studentId":"sandbox-student-1","targetOccupations":["software developer","cybersecurity analyst"],"strengths":["personal software projects","web development"],"gaps":["cryptography foundations","ML evaluation"],"notes":"Focus on secure AI-powered software systems.","updatedAt":"2026-05-23T10:00:00Z"}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"}]},"put":{"summary":"Update a sandbox career profile","parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"targetOccupations":["software developer","cybersecurity analyst"],"strengths":["personal software projects","web development"],"gaps":["cryptography foundations","ML evaluation"],"notes":"Focus on secure AI-powered software systems."}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"sandbox":true,"studentId":"sandbox-student-1","targetOccupations":["software developer","cybersecurity analyst"],"strengths":["personal software projects","web development"],"gaps":["cryptography foundations","ML evaluation"],"notes":"Focus on secure AI-powered software systems.","updatedAt":"2026-05-23T10:00:00Z"}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}}}},"/api/sandbox/students/{studentId}/thesis-applications":{"get":{"summary":"List mock thesis applications","responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"sandbox":true,"id":"application-1","studentId":"sandbox-student-1","topicId":"6a03a9761f4c937ae4511a08","motivation":"I want to connect cybersecurity, cryptography, and practical software implementation.","rank":1,"status":"SUBMITTED","createdAt":"2026-05-23T10:00:00Z","updatedAt":"2026-05-23T10:00:00Z"}]}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"}]},"post":{"summary":"Create a mock thesis application","parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"topicId":"6a03a9761f4c937ae4511a08","motivation":"I want to connect cybersecurity, cryptography, and practical software implementation.","rank":1}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"sandbox":true,"id":"application-1","studentId":"sandbox-student-1","topicId":"6a03a9761f4c937ae4511a08","motivation":"I want to connect cybersecurity, cryptography, and practical software implementation.","rank":1,"status":"SUBMITTED","createdAt":"2026-05-23T10:00:00Z","updatedAt":"2026-05-23T10:00:00Z"}}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}}}},"/api/sandbox/students/{studentId}/thesis-applications/{id}":{"delete":{"summary":"Delete a mock thesis application","parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"},{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"application-1"}],"responses":{"204":{"description":"Deleted"},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"404":{"description":"Sandbox resource not found","content":{"application/json":{"example":{"code":"NOT_FOUND","message":"Sandbox resource not found","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}}}},"/api/sandbox/students/{studentId}/activity":{"get":{"summary":"List sandbox activity","responses":{"200":{"description":"OK","content":{"application/json":{"example":[{"sandbox":true,"id":"activity-1","studentId":"sandbox-student-1","action":"SAVED_ITEM_CREATED","summary":"Saved thesis topic Quantum resistant algorithms","createdAt":"2026-05-23T10:00:00Z"}]}}},"401":{"description":"Missing or invalid HackBlitz API key","content":{"application/json":{"example":{"code":"HACKBLITZ_KEY_REQUIRED","message":"Missing or invalid HackBlitz API key","retryAfterSeconds":null}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"example":{"code":"RATE_LIMITED","message":"HackBlitz rate limit exceeded","retryAfterSeconds":30}}}}},"parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"string"},"example":"sandbox-student-1"}]}}}}