pdf-quiz-generator/backend/tests/api-contract.json
Daniel e2919e73c2
Some checks failed
Tests / backend (push) Failing after 8s
Tests / frontend (push) Failing after 31s
Tests / e2e (push) Failing after 42s
feat: no passwords here — sign-in belongs to the provider
The account settings offered "Change password", and there is no password
to change: accounts live at PedsHub SSO, which is also where a passkey,
an address or a second factor is set. A form that writes a credential
nothing checks is worse than no form — it invites somebody to secure
their account by a route that does not secure it. The panel now keeps
the display name and points at the provider for the rest.

Retired with it: GET /auth/verify-email, POST /auth/resend-verification,
POST /auth/forgot-password, POST /auth/reset-password, the new_password
branch of PUT /auth/me, the two schemas behind them, and the three pages
— VerifyEmailPage, ForgotPasswordPage, ResetPasswordPage — with their
routes and the links into them. An account with no password cannot
forget one.

POST /auth/login stays, still refused while sso_only is set. It is the
way back in if the provider is ever unreachable, together with the
DEFAULT_ADMIN_EMAIL seed at startup, and removing it would leave no door
at all on a bad day. The test that walked five password doors now walks
that one and asserts the other four answer 404 rather than 403 — gone,
not guarded.

Verified live: all four endpoints 404, and the account panel shows a
name field and "Manage your account ↗" to
sso.pedshub.com/if/user/#/settings, with no password field anywhere.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqXevQJhxFrM7jJg82cgZN
2026-09-13 15:50:38 +02:00

2960 lines
55 KiB
JSON

{
"routes": {
"DELETE /api/v1/access/{user_id}/grants/{kind}/{target_id}": {
"body": false,
"params": [
"path:kind",
"path:target_id",
"path:user_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/admin/models/{model_id}": {
"body": false,
"params": [
"path:model_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/admin/users/{user_id}": {
"body": false,
"params": [
"path:user_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/ai/conversations/{conversation_id}": {
"body": false,
"params": [
"path:conversation_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/articles/trash/{article_id}": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/articles/{article_id}": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"DELETE /api/v1/articles/{article_id}/claims/{claim_id}": {
"body": false,
"params": [
"path:article_id",
"path:claim_id",
"query:keep_links?"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/articles/{article_id}/links/{question_id}": {
"body": false,
"params": [
"path:article_id",
"path:question_id",
"query:section_id?"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/articles/{article_id}/notes/{section_id}": {
"body": false,
"params": [
"path:article_id",
"path:section_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/attempts/progress/{attempt_id}": {
"body": false,
"params": [
"path:attempt_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/auth/sessions/{family}": {
"body": false,
"params": [
"path:family"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/categories/{category_id}": {
"body": false,
"params": [
"path:category_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/collections/{collection_id}": {
"body": false,
"params": [
"path:collection_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/collections/{collection_id}/articles/{article_id}": {
"body": false,
"params": [
"path:article_id",
"path:collection_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/collections/{collection_id}/questions/{question_id}": {
"body": false,
"params": [
"path:collection_id",
"path:question_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/documents/{document_id}": {
"body": false,
"params": [
"path:document_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/documents/{document_id}/sections/{section_id}": {
"body": false,
"params": [
"path:document_id",
"path:section_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/drafts/batches/{batch_id}": {
"body": false,
"params": [
"path:batch_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/drafts/{draft_id}": {
"body": false,
"params": [
"path:draft_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/exams/{exam_id}/assign": {
"body": true,
"params": [
"path:exam_id"
],
"responses": [
"200",
"422"
]
},
"DELETE /api/v1/favorites/{question_id}": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/feedback/articles/reports/{feedback_id}": {
"body": false,
"params": [
"path:feedback_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/feedback/{feedback_id}": {
"body": false,
"params": [
"path:feedback_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/flashcards/cards/{card_id}": {
"body": false,
"params": [
"path:card_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/flashcards/cards/{card_id}/links/article/{article_id}": {
"body": false,
"params": [
"path:article_id",
"path:card_id",
"query:article_section_id?"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/flashcards/cards/{card_id}/links/question/{question_id}": {
"body": false,
"params": [
"path:card_id",
"path:question_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/flashcards/{deck_id}": {
"body": false,
"params": [
"path:deck_id",
"query:permanent?"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/flashcards/{deck_id}/share": {
"body": false,
"params": [
"path:deck_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/folders/{folder_id}": {
"body": false,
"params": [
"path:folder_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/folders/{folder_id}/questions/{question_id}": {
"body": false,
"params": [
"path:folder_id",
"path:question_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/media/libraries/{library_id}/grants/{user_id}": {
"body": false,
"params": [
"path:library_id",
"path:user_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/media/{media_id}": {
"body": false,
"params": [
"path:media_id",
"query:force?"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/question-categories/{cat_id}": {
"body": false,
"params": [
"path:cat_id",
"query:move_to?"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/question-categories/{cat_id}/grants/{user_id}": {
"body": false,
"params": [
"path:cat_id",
"path:user_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/questions/figures/{figure_id}": {
"body": false,
"params": [
"path:figure_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/questions/{question_id}": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/questions/{question_id}/permanent": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/quizzes/jobs/{job_id}": {
"body": false,
"params": [
"path:job_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/quizzes/{quiz_id}": {
"body": false,
"params": [
"path:quiz_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/quizzes/{quiz_id}/permanent": {
"body": false,
"params": [
"path:quiz_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/quizzes/{quiz_id}/questions/{question_id}": {
"body": false,
"params": [
"path:question_id",
"path:quiz_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/quizzes/{quiz_id}/share-link": {
"body": false,
"params": [
"path:quiz_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/study-plans/blocks/{block_id}": {
"body": false,
"params": [
"path:block_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/study-plans/reading/{link_id}": {
"body": false,
"params": [
"path:link_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/study-plans/{plan_id}": {
"body": false,
"params": [
"path:plan_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/study-tools/lab-values/{entry_id}": {
"body": false,
"params": [
"path:entry_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/study-tools/lab-values/{entry_id}/cards/{card_id}": {
"body": false,
"params": [
"path:card_id",
"path:entry_id"
],
"responses": [
"204",
"422"
]
},
"DELETE /api/v1/tags/{tag_id}": {
"body": false,
"params": [
"path:tag_id",
"query:move_to?"
],
"responses": [
"204",
"422"
]
},
"GET /api/health": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/access/": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/access/tree": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/admin/classification-snapshots": {
"body": false,
"params": [
"query:limit?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/admin/embedding/health": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/admin/models": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/admin/models/available": {
"body": false,
"params": [
"query:task?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/admin/settings": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/admin/users": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/ai/conversations": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/ai/conversations/{conversation_id}": {
"body": false,
"params": [
"path:conversation_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/": {
"body": false,
"params": [
"query:category_id?",
"query:q?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/ai-sources": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/articles/by-slug/{slug}": {
"body": false,
"params": [
"path:slug"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/editorial/queue": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/articles/job/{job_id}": {
"body": false,
"params": [
"path:job_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/link-targets": {
"body": false,
"params": [
"query:limit?",
"query:q?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/preview/{slug}": {
"body": false,
"params": [
"path:slug"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/recent": {
"body": false,
"params": [
"query:limit?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/trash": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/articles/{article_id}": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/{article_id}/cards": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/{article_id}/claims": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/{article_id}/links/from-category": {
"body": false,
"params": [
"path:article_id",
"query:category_id",
"query:include_subtopics?",
"query:section_id?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/{article_id}/notes": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/{article_id}/questions": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/{article_id}/revisions": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/articles/{article_id}/revisions/{revision_id}": {
"body": false,
"params": [
"path:article_id",
"path:revision_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/attempts/": {
"body": false,
"params": [
"query:quiz_id?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/attempts/history": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/attempts/in-progress": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/attempts/progress": {
"body": false,
"params": [
"query:quiz_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/attempts/quiz/{quiz_id}/analysis": {
"body": false,
"params": [
"path:quiz_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/attempts/quiz/{quiz_id}/in-progress": {
"body": false,
"params": [
"path:quiz_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/attempts/stats/dashboard": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/attempts/{attempt_id}": {
"body": false,
"params": [
"path:attempt_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/attempts/{attempt_id}/analysis": {
"body": false,
"params": [
"path:attempt_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/attempts/{attempt_id}/recommendations": {
"body": false,
"params": [
"path:attempt_id",
"query:group?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/auth/me": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/auth/me/settings": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/auth/sessions": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/auth/sso/callback": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/auth/sso/config": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/auth/sso/login": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/categories/": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/collections/": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/collections/for-article/{article_id}": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/collections/{collection_id}/articles": {
"body": false,
"params": [
"path:collection_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/collections/{collection_id}/questions": {
"body": false,
"params": [
"path:collection_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/contact/submissions": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/documents/": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/documents/{document_id}": {
"body": false,
"params": [
"path:document_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/documents/{document_id}/processing-steps": {
"body": false,
"params": [
"path:document_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/documents/{document_id}/status": {
"body": false,
"params": [
"path:document_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/drafts/batches": {
"body": false,
"params": [
"query:status?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/drafts/batches/{batch_id}": {
"body": false,
"params": [
"path:batch_id",
"query:status?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/exams/": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/exams/{exam_id}/blueprint": {
"body": false,
"params": [
"path:exam_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/favorites": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/feedback/articles/{article_id}": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/feedback/articles/{article_id}/mine": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/feedback/open": {
"body": false,
"params": [
"query:limit?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/feedback/questions/{question_id}": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/feedback/questions/{question_id}/mine": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/flashcards/": {
"body": false,
"params": [
"query:category_id?",
"query:include_deleted?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/flashcards/cards/browse": {
"body": false,
"params": [
"query:deck_id?",
"query:limit?",
"query:offset?",
"query:q?",
"query:tag_ids?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/flashcards/cards/browse/ids": {
"body": false,
"params": [
"query:deck_id?",
"query:q?",
"query:tag_ids?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/flashcards/cards/linked": {
"body": false,
"params": [
"query:article_id?",
"query:question_id?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/flashcards/cards/{card_id}/links": {
"body": false,
"params": [
"path:card_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/flashcards/questions/{question_id}/cards": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/flashcards/shared": {
"body": false,
"params": [
"query:limit?",
"query:offset?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/flashcards/trash": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/flashcards/{deck_id}": {
"body": false,
"params": [
"path:deck_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/flashcards/{deck_id}/study": {
"body": false,
"params": [
"path:deck_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/folders/": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/folders/{folder_id}/questions": {
"body": false,
"params": [
"path:folder_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/media/": {
"body": false,
"params": [
"query:library_id?",
"query:limit?",
"query:offset?",
"query:q?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/media/by-path": {
"body": false,
"params": [
"query:path"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/media/libraries": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/mynote": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/public/stats": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/question-categories/": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/question-categories/grantable-users": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/question-categories/grants": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/question-categories/my-grants": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/questions/bank": {
"body": false,
"params": [
"query:article_ids?",
"query:category_id?",
"query:category_ids?",
"query:difficulty?",
"query:favorites_only?",
"query:folder_id?",
"query:limit?",
"query:needs?",
"query:offset?",
"query:q?",
"query:quiz_id?",
"query:tag_ids?",
"query:uncategorized?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/bank/ids": {
"body": false,
"params": [
"query:category_id?",
"query:category_ids?",
"query:favorites_only?",
"query:folder_id?",
"query:q?",
"query:quiz_id?",
"query:tag_ids?",
"query:uncategorized?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/builder/count": {
"body": false,
"params": [
"query:article_ids?",
"query:category_ids?",
"query:difficulty?",
"query:state?",
"query:system_ids?",
"query:tag_ids?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/builder/prepared": {
"body": false,
"params": [
"query:count?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/detail/{question_id}": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/detail/{question_id}/figures": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/detail/{question_id}/note": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/detail/{question_id}/versions": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/export/qti": {
"body": false,
"params": [
"query:question_ids?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/images": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/questions/import/sample": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/questions/manage/summary": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/questions/trash": {
"body": false,
"params": [
"query:limit?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/questions/{question_id}/articles": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/quizzes/": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/quizzes/job/{job_id}": {
"body": false,
"params": [
"path:job_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/quizzes/jobs": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/quizzes/search": {
"body": false,
"params": [
"query:mode?",
"query:q"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/quizzes/sessions": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/quizzes/share-policy": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/quizzes/trash": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/quizzes/{quiz_id}": {
"body": false,
"params": [
"path:quiz_id",
"query:attempt_id?",
"query:study?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/quizzes/{quiz_id}/questions": {
"body": false,
"params": [
"path:quiz_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/quizzes/{quiz_id}/review": {
"body": false,
"params": [
"path:quiz_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/search": {
"body": false,
"params": [
"query:kinds?",
"query:limit?",
"query:q?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/search/suggest": {
"body": false,
"params": [
"query:limit?",
"query:q?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/share/{token}": {
"body": false,
"params": [
"path:token"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/study-plans/": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/study-plans/{plan_id}": {
"body": false,
"params": [
"path:plan_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/study-tools/answer-split": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/study-tools/attempts/{attempt_id}/questions/{question_id}/responses": {
"body": false,
"params": [
"path:attempt_id",
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/study-tools/completion": {
"body": false,
"params": [
"query:days?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/study-tools/lab-values": {
"body": false,
"params": [
"query:include_drafts?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/study-tools/performance-by-category": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/study-tools/performance-over-time": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/study-tools/readiness": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/study-tools/recommendations": {
"body": false,
"params": [
"query:group?",
"query:limit?"
],
"responses": [
"200",
"422"
]
},
"GET /api/v1/tags": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/teach/models": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/teach/policy": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/teach/prompt": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /api/v1/tts/voices": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"GET /uploads/{path}": {
"body": false,
"params": [
"path:path",
"query:attempt_id?",
"query:w?"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/ai/conversations/{conversation_id}": {
"body": true,
"params": [
"path:conversation_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/articles/{article_id}": {
"body": true,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/categories/quizzes/{quiz_id}": {
"body": false,
"params": [
"path:quiz_id",
"query:category_id?"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/collections/{collection_id}": {
"body": true,
"params": [
"path:collection_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/drafts/batches/{batch_id}": {
"body": true,
"params": [
"path:batch_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/drafts/{draft_id}": {
"body": true,
"params": [
"path:draft_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/exams/{exam_id}": {
"body": true,
"params": [
"path:exam_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/feedback/articles/reports/{feedback_id}": {
"body": true,
"params": [
"path:feedback_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/feedback/{feedback_id}": {
"body": true,
"params": [
"path:feedback_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/flashcards/{deck_id}": {
"body": true,
"params": [
"path:deck_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/folders/{folder_id}": {
"body": true,
"params": [
"path:folder_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/media/{media_id}": {
"body": true,
"params": [
"path:media_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/question-categories/{cat_id}": {
"body": true,
"params": [
"path:cat_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/questions/figures/{figure_id}": {
"body": true,
"params": [
"path:figure_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/questions/{question_id}": {
"body": true,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/questions/{question_id}/category": {
"body": false,
"params": [
"path:question_id",
"query:category_id?"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/questions/{question_id}/restore": {
"body": false,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/quizzes/{quiz_id}": {
"body": true,
"params": [
"path:quiz_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/quizzes/{quiz_id}/publish": {
"body": false,
"params": [
"path:quiz_id",
"query:published?"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/quizzes/{quiz_id}/questions/{question_id}": {
"body": true,
"params": [
"path:question_id",
"path:quiz_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/quizzes/{quiz_id}/restore": {
"body": false,
"params": [
"path:quiz_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/quizzes/{quiz_id}/share": {
"body": false,
"params": [
"path:quiz_id",
"query:shared"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/study-plans/blocks/{block_id}": {
"body": true,
"params": [
"path:block_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/study-plans/{plan_id}": {
"body": true,
"params": [
"path:plan_id"
],
"responses": [
"200",
"422"
]
},
"PATCH /api/v1/tags/{tag_id}": {
"body": true,
"params": [
"path:tag_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/access/{user_id}/grants": {
"body": true,
"params": [
"path:user_id"
],
"responses": [
"201",
"422"
]
},
"POST /api/v1/admin/classification-snapshots/{snapshot_id}/rollback": {
"body": false,
"params": [
"path:snapshot_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/admin/embedding/regenerate": {
"body": false,
"params": [
"query:stale_only?"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/admin/embedding/test": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"POST /api/v1/admin/litellm/models": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/admin/models": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/admin/models/{model_id}/test": {
"body": false,
"params": [
"path:model_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/admin/rerank/test": {
"body": false,
"params": [],
"responses": [
"200"
]
},
"POST /api/v1/admin/tts/voices": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/ai/conversations": {
"body": false,
"params": [],
"responses": [
"201"
]
},
"POST /api/v1/ai/conversations/{conversation_id}/messages": {
"body": true,
"params": [
"path:conversation_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/ai/conversations/{conversation_id}/practice": {
"body": true,
"params": [
"path:conversation_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/articles/": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/articles/ai-draft": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/articles/{article_id}/ai-cards": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/articles/{article_id}/ai-refine": {
"body": true,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/articles/{article_id}/links/from-category": {
"body": true,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/articles/{article_id}/publish": {
"body": true,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/articles/{article_id}/restore": {
"body": false,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/articles/{article_id}/revisions/{revision_id}/restore": {
"body": false,
"params": [
"path:article_id",
"path:revision_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/articles/{article_id}/status": {
"body": true,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/attempts/progress": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/attempts/reset-all": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/attempts/start": {
"body": false,
"params": [
"query:fresh?",
"query:mode?",
"query:quiz_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/attempts/{attempt_id}/submit": {
"body": true,
"params": [
"path:attempt_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/auth/login": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/auth/logout": {
"body": true,
"params": [],
"responses": [
"204",
"422"
]
},
"POST /api/v1/auth/refresh": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/auth/sso/exchange": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/categories/": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/collections/": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/contact": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/documents/upload": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/documents/{document_id}/sections": {
"body": true,
"params": [
"path:document_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/drafts/accept": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/drafts/reject": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/drafts/{draft_id}/reopen": {
"body": false,
"params": [
"path:draft_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/exams/": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/exams/{exam_id}/assign": {
"body": true,
"params": [
"path:exam_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/favorites": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/feedback/articles/{article_id}": {
"body": true,
"params": [
"path:article_id"
],
"responses": [
"201",
"422"
]
},
"POST /api/v1/feedback/questions/{question_id}": {
"body": true,
"params": [
"path:question_id"
],
"responses": [
"201",
"422"
]
},
"POST /api/v1/flashcards/": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/flashcards/cards/{card_id}/review": {
"body": true,
"params": [
"path:card_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/flashcards/decks/{deck_id}/cards": {
"body": true,
"params": [
"path:deck_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/flashcards/manual": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/flashcards/{deck_id}/rate": {
"body": true,
"params": [
"path:deck_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/flashcards/{deck_id}/restore": {
"body": false,
"params": [
"path:deck_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/folders/": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/folders/{folder_id}/questions": {
"body": true,
"params": [
"path:folder_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/media/libraries": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/media/libraries/{library_id}/grants": {
"body": true,
"params": [
"path:library_id"
],
"responses": [
"201",
"422"
]
},
"POST /api/v1/media/upload": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/nextcloud/download": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/nextcloud/files": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/nextcloud/test": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/question-categories/": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/question-categories/{cat_id}/create-quiz": {
"body": false,
"params": [
"path:cat_id",
"query:count?",
"query:mode?",
"query:time_limit_minutes?",
"query:title"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/question-categories/{cat_id}/grants": {
"body": true,
"params": [
"path:cat_id"
],
"responses": [
"201",
"422"
]
},
"POST /api/v1/questions/builder": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/builder/describe": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/builder/from-upload": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/builder/prepared": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/bulk": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/bulk-category": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/create": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/detail/{question_id}/figures": {
"body": true,
"params": [
"path:question_id"
],
"responses": [
"201",
"422"
]
},
"POST /api/v1/questions/detail/{question_id}/versions/{version_id}/restore": {
"body": false,
"params": [
"path:question_id",
"path:version_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/from-bank": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/import/qti": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/import/upload": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/questions/upload-image": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/quizzes/": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/quizzes/job/{job_id}/cancel": {
"body": false,
"params": [
"path:job_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/quizzes/{quiz_id}/share-link": {
"body": false,
"params": [
"path:quiz_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/quizzes/{quiz_id}/shuffle": {
"body": false,
"params": [
"path:quiz_id",
"query:shuffle_options?"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/study-plans/": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/study-plans/blocks/{block_id}/articles": {
"body": true,
"params": [
"path:block_id"
],
"responses": [
"201",
"422"
]
},
"POST /api/v1/study-plans/blocks/{block_id}/move": {
"body": true,
"params": [
"path:block_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/study-plans/blocks/{block_id}/start": {
"body": false,
"params": [
"path:block_id",
"query:mode?"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/study-plans/from-blueprint": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/study-plans/reading/{link_id}/read": {
"body": false,
"params": [
"path:link_id",
"query:read?"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/study-plans/{plan_id}/blocks": {
"body": true,
"params": [
"path:plan_id"
],
"responses": [
"201",
"422"
]
},
"POST /api/v1/study-plans/{plan_id}/blocks/order": {
"body": true,
"params": [
"path:plan_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/study-tools/lab-values": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/tags/": {
"body": true,
"params": [],
"responses": [
"201",
"422"
]
},
"POST /api/v1/tags/{tag_id}/questions": {
"body": true,
"params": [
"path:tag_id"
],
"responses": [
"200",
"422"
]
},
"POST /api/v1/teach/chat": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/tts/speak": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"POST /api/v1/tts/transcribe": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/access/{user_id}/role": {
"body": true,
"params": [
"path:user_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/admin/models/{model_id}": {
"body": true,
"params": [
"path:model_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/admin/settings": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/admin/users/{user_id}/role": {
"body": true,
"params": [
"path:user_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/admin/users/{user_id}/unthrottle": {
"body": true,
"params": [
"path:user_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/articles/{article_id}/links": {
"body": true,
"params": [
"path:article_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/articles/{article_id}/notes/{section_id}": {
"body": true,
"params": [
"path:article_id",
"path:section_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/auth/me": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/auth/me/settings": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/collections/{collection_id}/articles/{article_id}": {
"body": false,
"params": [
"path:article_id",
"path:collection_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/collections/{collection_id}/questions/{question_id}": {
"body": false,
"params": [
"path:collection_id",
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/contact/submissions/{submission_id}/read": {
"body": false,
"params": [
"path:submission_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/exams/active": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/exams/{exam_id}/blueprint/{blueprint_id}/categories": {
"body": true,
"params": [
"path:blueprint_id",
"path:exam_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/flashcards/cards/{card_id}": {
"body": true,
"params": [
"path:card_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/flashcards/cards/{card_id}/links/article": {
"body": true,
"params": [
"path:card_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/flashcards/cards/{card_id}/links/question": {
"body": true,
"params": [
"path:card_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/flashcards/{deck_id}/share": {
"body": false,
"params": [
"path:deck_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/mynote": {
"body": true,
"params": [],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/questions/detail/{question_id}/note": {
"body": true,
"params": [
"path:question_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/study-tools/lab-values/{entry_id}": {
"body": true,
"params": [
"path:entry_id"
],
"responses": [
"200",
"422"
]
},
"PUT /api/v1/study-tools/lab-values/{entry_id}/cards/{card_id}": {
"body": false,
"params": [
"path:card_id",
"path:entry_id"
],
"responses": [
"200",
"422"
]
}
},
"version": "3.0.0"
}