{"module":"content","surface":"1edtech","service":"platform3 Content 1EdTech API","standard":"QTI","standardVersion":"3.0","interop":["Common Cartridge 1.3","IMS Content Packaging 1.1"],"status":"ok","canonicalPathPrefix":"/content/1edtech/implementation/api","compatibilityAliases":["/content/alpha/implementation/api"],"pathFormat":"Root-absolute paths. Call them from the deployment origin exactly as printed, including /content/1edtech/implementation/api.","docs":{"qtiArchitecture":"https://platform3-andymontgomery-9773s-projects.vercel.app/qti/1edtech/architecture","qtiDataDictionary":"https://platform3-andymontgomery-9773s-projects.vercel.app/qti/1edtech/data_dictionary","qtiCustomerWebsite":"https://platform3-andymontgomery-9773s-projects.vercel.app/qti/1edtech/customer_website","officialQti":"https://www.1edtech.org/standards/qti","contentAlphaCompatibilityDocs":{"architecture":"https://platform3-andymontgomery-9773s-projects.vercel.app/content/alpha/architecture","dataDictionary":"https://platform3-andymontgomery-9773s-projects.vercel.app/content/alpha/data_dictionary","customerWebsite":"https://platform3-andymontgomery-9773s-projects.vercel.app/content/alpha/customer_website"}},"qtiResources":["assessmentItem","assessmentTest","assessmentStimulus"],"quickstart":{"mintDemoToken":"POST /content/1edtech/implementation/api/dev/mint?tenantId=demo","listAssessmentItems":"GET /content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-items","getAssessmentItem":"GET /content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-items/{contentId}","getAssessmentItemWithAnswerKeys":"GET /content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-items/{contentId}?includeAnswerKeys=true","listAssessmentTests":"GET /content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-tests","getAssessmentTest":"GET /content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-tests/{contentId}","listAssessmentStimuli":"GET /content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-stimuli","exportCommonCartridge":"POST /content/1edtech/implementation/api/tenants/{tenantId}/common-cartridge/exports"},"endpoints":[{"id":"endpoint-mint-demo-token","method":"POST","path":"/content/1edtech/implementation/api/dev/mint?tenantId=demo","aliases":["/content/1edtech/implementation/api/demo-token?tenantId=demo"],"summary":"Mint a public demo JWT scoped to tenantId=demo.","auth":"none","response":"demo_token"},{"id":"endpoint-list-assessment-items","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-items","summary":"List persisted QTI assessmentItem resources without Alpha school-language renames.","auth":"read:content","filters":["modifiedSince","cursor","limit"],"response":"page<assessmentItem>"},{"id":"endpoint-get-assessment-item","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-items/{contentId}","summary":"Read one QTI assessmentItem authoring projection, including responseDeclaration, simpleChoice rows, rubricBlock, and modalFeedback.","auth":"read:content","filters":["includeAnswerKeys"],"response":"assessmentItem"},{"id":"endpoint-list-assessment-tests","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-tests","summary":"List persisted QTI assessmentTest resources.","auth":"read:content","filters":["modifiedSince","cursor","limit"],"response":"page<assessmentTest>"},{"id":"endpoint-get-assessment-test","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-tests/{contentId}","summary":"Read one QTI assessmentTest resource rooted at qti-assessment-test.","auth":"read:content","response":"assessmentTest"},{"id":"endpoint-list-assessment-stimuli","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/qti/assessment-stimuli","summary":"List persisted QTI assessmentStimulus resources.","auth":"read:content","filters":["modifiedSince","cursor","limit"],"response":"page<assessmentStimulus>"},{"id":"endpoint-export-common-cartridge","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/common-cartridge/exports","summary":"Export the selected Content scope as Common Cartridge using the same lossless package path as the Alpha compatibility route.","auth":"read:content","request":"common_cartridge_export.create","response":"common_cartridge_export"},{"id":"endpoint-download-common-cartridge","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/common-cartridge/exports/{exportId}/download","summary":"Download the generated Common Cartridge or IMSCP transport bytes.","auth":"read:content","response":"imscc bytes"},{"id":"alpha-compatibility-endpoint-list-content-items","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items","summary":"List student-touchable Content items with typed filters, catalog facet filters, and cursor paging.","auth":"read:content","filters":["content_kind","subtype","dok","assessment_role","subject_id","alpha_subject_id","target_grade_id","curriculum_node_id","usage_scope","test_type","is_mastery_gate","source_system","source_record_id","source_activity_ref","facet","modifiedSince","subject","grade_band","language","accessibility_profile","rights_license","provenance","quality_rating","kc_refs","standards_framework_refs","expected_xp_band","modality"],"response":"page<content_item>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-create-content-item","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items","summary":"Create a non-QTI Content item with required expected_xp and an initial student-safe version.","auth":"author:content","request":"content_item.create","response":"content_item","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-import-timeback-production","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/imports/timeback-production","summary":"Accept source-shaped TimeBack production content rows and normalize them server-side into flat Content assets.","description":"Graph-bearing records use Alpha's exclusive tenant fence before a fresh idempotency claim. A write may affect at most 1,024 active banks; each bank may contain at most 1,024 active members and 4,096 joined question/KC facts. Inclusive cap-plus-one rejection returns typed 409 with bank_members or form_graph and rolls back graph, item timestamp/ETag, and fresh ledger state. Retire or split before retry; completed HTTP replay is mutation- and budget-free after ledger arbitration.","auth":"author:content","request":"timeback_production_import.create","response":"timeback_production_import","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-get-content-item","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}","summary":"Read one Content item and its ETag.","auth":"read:content","response":"content_item","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-get-test-spec-blueprint","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/blueprint","summary":"Read the first-class test_spec blueprint sidecar.","auth":"read:content","response":"test_spec","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-test-bank-members","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/bank-members","summary":"Read the latest exact fixed-form bank membership after fail-closed validation of every active shared-store row and the 1,024-member/4,096-joined-fact ceilings; mutation is owned by Content Alpha.","auth":"read:content","response":"test_bank_members","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-update-content-item","method":"PATCH","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}","summary":"Update editable Content metadata using If-Match.","auth":"author:content","request":"content_item.patch","response":"content_item","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-content-versions","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/versions","summary":"List immutable versions for one Content item.","auth":"read:content","response":"page<content_version>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-create-content-version","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/versions","summary":"Create an immutable student-view or authoring version.","auth":"author:content","request":"content_version.create","response":"content_version","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-get-content-version","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/versions/{versionId}","summary":"Read one immutable Content version.","auth":"read:content","response":"content_version","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-get-student-view","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/student-view","summary":"Read the blank student-safe projection; answer keys require includeAnswerKeys=true plus read:answer_key.","auth":"read:content","response":"student_view","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-answer-slots","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/answer-slots","summary":"List blank answer slots, optionally with scoped answer keys.","auth":"read:content","response":"page<answer_slot>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-answer-keys","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/answer-keys","summary":"List teacher-only answer keys for a blank instrument. Requires read:answer_key and delegates to the QTI answer-key view.","auth":"read:answer_key","response":"page<answer_key>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-assessment-components","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/assessment-components","summary":"List first-class QTI structure, question refs, distractors, rubrics, and preauthored feedback for the blank test or question.","auth":"read:content","filters":["component_role"],"response":"page<assessment_component>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-get-scoring-plan","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/scoring-plan","summary":"Read QTI scoring-plan provenance for the blank instrument.","auth":"read:content","response":"page<scoring_plan>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-media","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/media","summary":"List first-party media assets attached to one Content item.","auth":"read:content","response":"page<media_asset>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-attach-media","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/media","summary":"Attach a media asset and return an authenticated first-party delivery_url.","auth":"author:content","request":"media_asset.create","response":"media_asset","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-deliver-media","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentLocator}/media/{mediaLocator}","summary":"Fetch bytes for a media_asset.delivery_url value.","auth":"read:content","response":"media bytes","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-content-references","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/references","summary":"List uniform references from one Content asset to other Content assets; Content references never nest payloads.","auth":"read:content","response":"page<content_reference>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-create-content-reference","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/references","summary":"Create a typed reference from one Content asset to another Content asset.","description":"Active compatibility reference writes use Alpha's exclusive tenant graph fence, including revivals, cardinality-neutral upserts, and exact active tuple replays. One write may affect at most 1,024 active banks; each bank may contain at most 1,024 active members and 4,096 joined question/KC facts. Inclusive cap-plus-one rejection returns typed 409 with bank_members or form_graph and changes no graph, item timestamp/ETag, or fresh ledger state. Retire or split before retry; completed HTTP replay is mutation- and budget-free after ledger arbitration.","auth":"author:content","request":"content_reference.create","response":"content_reference","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-get-external-link","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/external-link","summary":"Read governed outside URL facts for content_kind=external_link.","auth":"read:content","response":"external_link","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-set-external-link","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/external-link","summary":"Set governed outside URL facts without storing secrets.","auth":"author:content","request":"external_link.set","response":"external_link","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-curriculum-links","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/curriculum-links","summary":"Read the frozen legacy Content-to-Curriculum link archive.","auth":"read:content","response":"page<content_curriculum_link>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-export-common-cartridge","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/exports/common-cartridge","aliases":["/content/1edtech/implementation/api/tenants/{tenantId}/alpha/exports/common-cartridge"],"summary":"Generate a transport-only Common Cartridge or IMSCP package from Curriculum plus Content references.","auth":"read:content","request":"common_cartridge_export.create","response":"common_cartridge_export","allowedValues":{"format":["common_cartridge_1_3","common_cartridge_v1p3","imscp_v1p1"]},"compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-download-common-cartridge","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/exports/common-cartridge/{exportId}/download","aliases":["/content/1edtech/implementation/api/tenants/{tenantId}/alpha/exports/common-cartridge/{exportId}/download"],"summary":"Download generated Common Cartridge transport bytes.","auth":"read:content","response":"imscc bytes","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-catalog-facets","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/catalog-facets","summary":"List the twelve named governed catalog discovery facets.","auth":"read:content","response":"page<content_catalog_facet>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-create-catalog-facet","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/catalog-facets","summary":"Create one of the twelve named governed catalog discovery facets in an unseeded tenant.","auth":"author:content","request":"content_catalog_facet.create","response":"content_catalog_facet","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-catalog-facet-assignments","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/catalog-facets","summary":"List sidecar catalog facet assignments for a Content item.","auth":"read:content","response":"page<content_catalog_facet_assignment>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-create-catalog-facet-assignment","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/catalog-facets","summary":"Assign a governed sidecar catalog facet value.","auth":"author:content","request":"content_catalog_facet_assignment.create","response":"content_catalog_facet_assignment","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-get-effectiveness","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/effectiveness","summary":"Read derived content-effectiveness rollup; apps do not increment it.","auth":"read:content","response":"content_effectiveness","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-get-trust","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/trust","summary":"Read safe trust and validation evidence.","auth":"read:content","response":"content_trust_evidence","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-publish-content","method":"POST","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/items/{contentId}/publish","summary":"Publish one exact immutable test_spec, test_bank, or article after server-owned kind checks; callers cannot set trust and unsupported video fails closed.","auth":"publish:content plus service, reviewer, or operator role","request":"content_publication.create","response":"content_publication","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-get-trust-status","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/trust-status","summary":"List trust evidence rows by trust_status.","auth":"read:content","response":"page<content_trust_evidence>","compatibilitySurface":"alpha"},{"id":"alpha-compatibility-endpoint-list-policies","method":"GET","path":"/content/1edtech/implementation/api/tenants/{tenantId}/alpha/content/policies","summary":"List Content policy config used by derived reads and write-time catalog defaults.","auth":"read:content","response":"page<content_policy>","compatibilitySurface":"alpha"}],"behaviorContracts":["This 1EdTech route preserves QTI field vocabulary: assessmentItem, assessmentTest, assessmentStimulus, responseDeclaration, correctResponse, simpleChoice, rubricBlock, modalFeedback, and Common Cartridge.","Blank instrument authoring facts are readable here; student responses, scored results, attempts, and AI grading audit are not Content records.","correctResponse and mapping are withheld unless includeAnswerKeys=true and the bearer token has read:answer_key.","assessmentItem discovery is limited to rows whose latest version is rooted at qti-assessment-item; placeholder package-import rows are not exposed as empty QTI items.","assessmentTest discovery is limited to content_kind=test rows whose latest version is rooted at qti-assessment-test; assessment sidecars on questions are not projected as QTI tests.","The route reads the same QTI-backed persistence as the Alpha Content route; it is not a second store and does not rename QTI objects into school-language Alpha names.","Approved Content Alpha compatibility operations are advertised explicitly under this 1EdTech mount. Requests outside the exact native-plus-compatibility route inventory fail closed instead of becoming undocumented endpoints."],"allowedFilters":["modifiedSince","cursor","limit","includeAnswerKeys"],"allowedValues":{"qtiResource":["assessmentItem","assessmentTest","assessmentStimulus"],"qtiRootElement":["qti-assessment-item","qti-assessment-test","qti-assessment-stimulus"],"assessmentComponentElement":["qti-assessment-section","qti-assessment-item-ref","qti-choice-interaction","qti-simple-choice","qti-rubric-block","qti-modal-feedback"],"qtiCardinality":["single","multiple","ordered","record"],"qtiBaseType":["boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri"],"commonCartridgeFormat":["common_cartridge_1_3","common_cartridge_v1p3","imscp_v1p1"]},"requestExamples":{"fetchSeedAssessmentItem":{"method":"GET","path":"GET /content/1edtech/implementation/api/tenants/demo/qti/assessment-items/58612cab-9c46-426c-8c20-0e9f19c807c5?includeAnswerKeys=true","proves":["responseDeclaration","correctResponse","all simpleChoice rows","distractor evidence","rubricBlock","correct/incorrect modalFeedback"]},"exportCommonCartridge":{"course_component_id":"cur_comp_math_7_linear_equations","curriculum_node_id":"case:math:7.ee.b.4","format":"common_cartridge_1_3","round_trip_check":true}},"authoringProof":{"seedTenantId":"demo","seedAssessmentItemId":"58612cab-9c46-426c-8c20-0e9f19c807c5","seedAssessmentTestId":"c6e3166b-d8a0-4564-9f19-38670f08ff1b","studentSafeRead":"GET /content/1edtech/implementation/api/tenants/demo/qti/assessment-items/58612cab-9c46-426c-8c20-0e9f19c807c5","answerKeyRead":"GET /content/1edtech/implementation/api/tenants/demo/qti/assessment-items/58612cab-9c46-426c-8c20-0e9f19c807c5?includeAnswerKeys=true","assessmentTestRead":"GET /content/1edtech/implementation/api/tenants/demo/qti/assessment-tests/c6e3166b-d8a0-4564-9f19-38670f08ff1b","evidence":{"responseDeclaration":"assessmentItem.responseDeclarations[0].identifier = RESPONSE","simpleChoices":"assessmentItem.itemBody.simpleChoices identifiers choiceA, choiceB, and choiceC","distractors":"assessmentItem.assessmentComponents has role=distractor for choiceB and choiceC","rubric":"assessmentItem.rubricBlocks[0].elementName = qti-rubric-block","preauthoredFeedback":"assessmentItem.modalFeedback identifiers correct and incorrect are qti-modal-feedback rows authored before the attempt","answerKey":"assessmentItem.responseDeclarations[0].correctResponse appears only with includeAnswerKeys=true and read:answer_key","canonicalXml":"canonicalXml preserves the qti-assessment-item document but withholds qti-correct-response and qti-mapping unless includeAnswerKeys=true and the bearer has read:answer_key."}}}