{"openapi":"3.1.0","info":{"title":"StudioMeyer Academy API","version":"1.0.0","description":"REST and MCP share registered operations, input/output schemas and authorization. Personal keys cannot spend credits."},"servers":[{"url":"https://studiomeyer.academy"}],"paths":{"/v1/start":{"get":{"operationId":"start","description":"Read the available learning paths and public starting links.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"mappingStatus":{"type":"string","enum":["pending","confirmed"]},"mappingNote":{"type":"string"},"modules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"lessons":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false}},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"isContentContainer":{"type":"boolean"}},"required":["id","order","title","description","status","lessons","originalReferences","steps","isContentContainer"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"capstone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false},{"type":"null"}]},"moduleMapping":{"type":"string","enum":["pending","confirmed"]},"nextPathIds":{"type":"array","items":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},"recommendedEntry":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false},{"type":"null"}]},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}}},"required":["id","locale","title","description","href","status","mappingStatus","mappingNote","modules","steps","capstone","moduleMapping","nextPathIds","recommendedEntry","originalReferences"],"additionalProperties":false}},"links":{"type":"array","items":{"type":"object","properties":{"rel":{"type":"string"},"method":{"type":"string","enum":["GET","POST","PATCH","DELETE"]},"href":{"type":"string"}},"required":["rel","method","href"],"additionalProperties":false}}},"required":["paths","links"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"mappingStatus":{"type":"string","enum":["pending","confirmed"]},"mappingNote":{"type":"string"},"modules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"lessons":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false}},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"isContentContainer":{"type":"boolean"}},"required":["id","order","title","description","status","lessons","originalReferences","steps","isContentContainer"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"capstone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false},{"type":"null"}]},"moduleMapping":{"type":"string","enum":["pending","confirmed"]},"nextPathIds":{"type":"array","items":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},"recommendedEntry":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false},{"type":"null"}]},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}}},"required":["id","locale","title","description","href","status","mappingStatus","mappingNote","modules","steps","capstone","moduleMapping","nextPathIds","recommendedEntry","originalReferences"],"additionalProperties":false}},"links":{"type":"array","items":{"type":"object","properties":{"rel":{"type":"string"},"method":{"type":"string","enum":["GET","POST","PATCH","DELETE"]},"href":{"type":"string"}},"required":["rel","method","href"],"additionalProperties":false}}},"required":["paths","links"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/paths":{"get":{"operationId":"paths","description":"List the four learning paths with confirmed original references.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"mappingStatus":{"type":"string","enum":["pending","confirmed"]},"mappingNote":{"type":"string"},"modules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"lessons":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false}},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"isContentContainer":{"type":"boolean"}},"required":["id","order","title","description","status","lessons","originalReferences","steps","isContentContainer"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"capstone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false},{"type":"null"}]},"moduleMapping":{"type":"string","enum":["pending","confirmed"]},"nextPathIds":{"type":"array","items":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},"recommendedEntry":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false},{"type":"null"}]},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}}},"required":["id","locale","title","description","href","status","mappingStatus","mappingNote","modules","steps","capstone","moduleMapping","nextPathIds","recommendedEntry","originalReferences"],"additionalProperties":false}}},"required":["paths"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"mappingStatus":{"type":"string","enum":["pending","confirmed"]},"mappingNote":{"type":"string"},"modules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"lessons":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false}},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"isContentContainer":{"type":"boolean"}},"required":["id","order","title","description","status","lessons","originalReferences","steps","isContentContainer"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"capstone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false},{"type":"null"}]},"moduleMapping":{"type":"string","enum":["pending","confirmed"]},"nextPathIds":{"type":"array","items":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},"recommendedEntry":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false},{"type":"null"}]},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}}},"required":["id","locale","title","description","href","status","mappingStatus","mappingNote","modules","steps","capstone","moduleMapping","nextPathIds","recommendedEntry","originalReferences"],"additionalProperties":false}}},"required":["paths"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/paths/{pathSlug}":{"get":{"operationId":"path","description":"Read the current learning path, ordered steps and explicit module mapping status.","deprecated":false,"parameters":[{"name":"pathSlug","in":"path","required":true,"schema":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"path":{"type":"object","properties":{"id":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"mappingStatus":{"type":"string","enum":["pending","confirmed"]},"mappingNote":{"type":"string"},"modules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"lessons":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false}},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"isContentContainer":{"type":"boolean"}},"required":["id","order","title","description","status","lessons","originalReferences","steps","isContentContainer"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"capstone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false},{"type":"null"}]},"moduleMapping":{"type":"string","enum":["pending","confirmed"]},"nextPathIds":{"type":"array","items":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},"recommendedEntry":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false},{"type":"null"}]},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}}},"required":["id","locale","title","description","href","status","mappingStatus","mappingNote","modules","steps","capstone","moduleMapping","nextPathIds","recommendedEntry","originalReferences"],"additionalProperties":false},"confirmedLessons":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"moduleMapping":{"type":"string","enum":["pending","confirmed"]}},"required":["path","confirmedLessons","moduleMapping"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pathId":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},"required":["pathId"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"path":{"type":"object","properties":{"id":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"mappingStatus":{"type":"string","enum":["pending","confirmed"]},"mappingNote":{"type":"string"},"modules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"lessons":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false}},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"isContentContainer":{"type":"boolean"}},"required":["id","order","title","description","status","lessons","originalReferences","steps","isContentContainer"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"capstone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false},{"type":"null"}]},"moduleMapping":{"type":"string","enum":["pending","confirmed"]},"nextPathIds":{"type":"array","items":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},"recommendedEntry":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"id":{"type":"string"},"href":{"type":"string"},"status":{"type":"string","const":"available"},"originLabel":{"type":"string"},"originalReference":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"required":["level","slug","locale","title","order","id","href","status","originLabel","originalReference"],"additionalProperties":false},{"type":"null"}]},"originalReferences":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}}},"required":["id","locale","title","description","href","status","mappingStatus","mappingNote","modules","steps","capstone","moduleMapping","nextPathIds","recommendedEntry","originalReferences"],"additionalProperties":false},"confirmedLessons":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false}},"moduleMapping":{"type":"string","enum":["pending","confirmed"]}},"required":["path","confirmedLessons","moduleMapping"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/paths/{pathSlug}/modules/{moduleSlug}":{"get":{"operationId":"module","description":"Read an existing module and its ordered published content; technical content containers are labelled.","deprecated":false,"parameters":[{"name":"pathSlug","in":"path","required":true,"schema":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},{"name":"moduleSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pathId":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"moduleId":{"type":"string"},"title":{"type":"string"},"lessons":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"isContentContainer":{"type":"boolean"}},"required":["pathId","moduleId","title","lessons","steps","isContentContainer"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pathId":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"moduleId":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["pathId","moduleId"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pathId":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"moduleId":{"type":"string"},"title":{"type":"string"},"lessons":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"slug":{"type":"string"},"level":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"moduleId":{"type":"string"},"order":{"type":"number"},"optional":{"type":"boolean"},"deepDiveOf":{"type":["string","null"]},"href":{"type":"string"},"originalHref":{"type":"string"},"originalReference":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"href":{"type":"string"}},"required":["kind","level","slug","locale","href"],"additionalProperties":false},{"type":"null"}]}},"required":["id","kind","type","slug","level","locale","title","moduleId","order","optional","deepDiveOf","href","originalHref","originalReference"],"additionalProperties":false}},"isContentContainer":{"type":"boolean"}},"required":["pathId","moduleId","title","lessons","steps","isContentContainer"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/lessons/{lessonSlug}":{"get":{"operationId":"lesson","description":"Read a public lesson using its unambiguous level and slug.","deprecated":false,"parameters":[{"name":"lessonSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:lesson:[1-6]:)?[a-z0-9][a-z0-9_.-]*$"},"description":"Stable lesson:<level>:<slug> identifier, or slug with explicit level query parameter. Ambiguous slugs are rejected."},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"level","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":6}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["level","slug","locale","title","order","body"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["level","slug","locale","title","order","body"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/lessons/{lessonSlug}/teach":{"get":{"operationId":"teach","description":"Read teaching steps drawn from the actual lesson headings and exercise.","deprecated":false,"parameters":[{"name":"lessonSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:lesson:[1-6]:)?[a-z0-9][a-z0-9_.-]*$"},"description":"Stable lesson:<level>:<slug> identifier, or slug with explicit level query parameter. Ambiguous slugs are rejected."},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"level","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":6}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"lessonId":{"type":"string","pattern":"^lesson:-?\\d+(?:\\.\\d+)?:[\\s\\S]{0,}$"},"objectives":{"type":"array","items":{"type":"string"}},"steps":{"type":"array","items":{"type":"string"}},"exercise":{"type":"string"}},"required":["lessonId","objectives","steps","exercise"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"lessonId":{"type":"string","pattern":"^lesson:-?\\d+(?:\\.\\d+)?:[\\s\\S]{0,}$"},"objectives":{"type":"array","items":{"type":"string"}},"steps":{"type":"array","items":{"type":"string"}},"exercise":{"type":"string"}},"required":["lessonId","objectives","steps","exercise"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/library":{"get":{"operationId":"library","description":"Browse public library metadata, filtered by type and access.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]}},{"name":"pathId","in":"query","required":false,"schema":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},{"name":"access","in":"query","required":false,"schema":{"type":"string","enum":["free","premium"]}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"pathId":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},"access":{"type":"string","enum":["free","premium"]}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/prompts":{"get":{"operationId":"prompts","description":"List approved prompts; an unpopulated catalog is empty.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/library/prompts":{"get":{"operationId":"promptsAlias1","description":"List approved prompts; an unpopulated catalog is empty.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/prompts/{id}":{"get":{"operationId":"prompt","description":"Read an approved public prompt by identifier.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"playbookId":{"type":["string","null"]}},"required":["id","text","playbookId"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"playbookId":{"type":["string","null"]}},"required":["id","text","playbookId"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/library/prompts/{id}":{"get":{"operationId":"promptAlias1","description":"Read an approved public prompt by identifier.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"playbookId":{"type":["string","null"]}},"required":["id","text","playbookId"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"playbookId":{"type":["string","null"]}},"required":["id","text","playbookId"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/playbooks":{"get":{"operationId":"playbooks","description":"List existing public playbooks, optionally filtered by their actual category.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"category","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":160}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100},"category":{"type":"string","minLength":1,"maxLength":160}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/library/playbooks":{"get":{"operationId":"playbooksAlias1","description":"List existing public playbooks, optionally filtered by their actual category.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"category","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":160}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100},"category":{"type":"string","minLength":1,"maxLength":160}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/glossary":{"get":{"operationId":"glossary","description":"Browse safe public glossary concepts.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/library/glossary":{"get":{"operationId":"glossaryAlias1","description":"Browse safe public glossary concepts.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/glossary/{term}":{"get":{"operationId":"glossaryTerm","description":"Read a public glossary term without internal recipe references.","deprecated":false,"parameters":[{"name":"term","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"term":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["term"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/library/glossary/{term}":{"get":{"operationId":"glossaryTermAlias1","description":"Read a public glossary term without internal recipe references.","deprecated":false,"parameters":[{"name":"term","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"term":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["term"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/recipes":{"get":{"operationId":"recipes","description":"List public free recipes, optionally filtered by their actual phase from 1 to 16.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"phase","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":16}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"meta":{"type":"object","properties":{"slug":{"type":"string"},"phase":{"type":"integer","minimum":1,"maximum":16},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"string"},"updated":{"type":"string"}},"required":["slug","phase","order","title","description","duration"],"additionalProperties":false},"body":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"title":{"type":"string"},"body":{"type":"string"},"validatorId":{"type":"string"}},"required":["index","title","body"],"additionalProperties":false}},"contentHash":{"type":"string"}},"required":["meta","body","steps","contentHash"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100},"phase":{"type":"integer","minimum":1,"maximum":16}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"meta":{"type":"object","properties":{"slug":{"type":"string"},"phase":{"type":"integer","minimum":1,"maximum":16},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"string"},"updated":{"type":"string"}},"required":["slug","phase","order","title","description","duration"],"additionalProperties":false},"body":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"title":{"type":"string"},"body":{"type":"string"},"validatorId":{"type":"string"}},"required":["index","title","body"],"additionalProperties":false}},"contentHash":{"type":"string"}},"required":["meta","body","steps","contentHash"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/recipes/{id}":{"get":{"operationId":"recipe","description":"Read a public recipe; private recipes remain undiscoverable.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"meta":{"type":"object","properties":{"slug":{"type":"string"},"phase":{"type":"integer","minimum":1,"maximum":16},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"string"},"updated":{"type":"string"}},"required":["slug","phase","order","title","description","duration"],"additionalProperties":false},"body":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"title":{"type":"string"},"body":{"type":"string"},"validatorId":{"type":"string"}},"required":["index","title","body"],"additionalProperties":false}},"contentHash":{"type":"string"}},"required":["meta","body","steps","contentHash"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"meta":{"type":"object","properties":{"slug":{"type":"string"},"phase":{"type":"integer","minimum":1,"maximum":16},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"string"},"updated":{"type":"string"}},"required":["slug","phase","order","title","description","duration"],"additionalProperties":false},"body":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"title":{"type":"string"},"body":{"type":"string"},"validatorId":{"type":"string"}},"required":["index","title","body"],"additionalProperties":false}},"contentHash":{"type":"string"}},"required":["meta","body","steps","contentHash"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/concepts":{"get":{"operationId":"concepts","description":"Browse and search public concepts.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"query","in":"query","required":false,"schema":{"type":"string","maxLength":160}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100},"query":{"type":"string","maxLength":160}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/coaching":{"get":{"operationId":"coaching","description":"Read the coaching entry point without unconfirmed prices or durations.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"accountHref":{"type":"string"}},"required":["title","description","steps","accountHref"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"accountHref":{"type":"string"}},"required":["title","description","steps","accountHref"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/me/invites":{"post":{"operationId":"invite","description":"Create and save a personal invitation link without sending messages.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":false,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}}}},"/v1/redirects":{"get":{"operationId":"redirects","description":"List confirmed migration redirects; pending decisions are not invented.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmedRedirects":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"status":{"anyOf":[{"type":"number","const":301},{"type":"number","const":308}]}},"required":["from","to","status"],"additionalProperties":false}}},"required":["confirmedRedirects"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmedRedirects":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"status":{"anyOf":[{"type":"number","const":301},{"type":"number","const":308}]}},"required":["from","to","status"],"additionalProperties":false}}},"required":["confirmedRedirects"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/playbooks/{id}":{"get":{"operationId":"playbook","description":"Read an existing public playbook.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"category":{"type":"string"},"published":{"type":"string"},"updated":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["slug","locale","title","order","body"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"category":{"type":"string"},"published":{"type":"string"},"updated":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["slug","locale","title","order","body"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/library/playbooks/{id}":{"get":{"operationId":"playbookAlias1","description":"Read an existing public playbook.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"category":{"type":"string"},"published":{"type":"string"},"updated":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["slug","locale","title","order","body"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"type":"object","properties":{"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"category":{"type":"string"},"published":{"type":"string"},"updated":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["slug","locale","title","order","body"],"additionalProperties":false}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/search":{"get":{"operationId":"search","description":"Search actual lessons and public library content with stable identifiers.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":160}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},{"type":"string","const":"lesson"}]}},{"name":"pathId","in":"query","required":false,"schema":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"type":{"type":"string","const":"lesson"},"source":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","level","slug","href","label"],"additionalProperties":false}},"required":["id","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","type","source"],"additionalProperties":false}]}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100},"query":{"type":"string","minLength":1,"maxLength":160},"type":{"anyOf":[{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},{"type":"string","const":"lesson"}]},"pathId":{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]}},"required":["query"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"type":{"type":"string","const":"lesson"},"source":{"type":"object","properties":{"kind":{"type":"string","const":"lesson"},"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","level","slug","href","label"],"additionalProperties":false}},"required":["id","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","type","source"],"additionalProperties":false}]}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/items/{id}":{"get":{"operationId":"fetch","description":"Fetch a public item by its exact stable identifier.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["level","slug","locale","title","order","body"],"additionalProperties":false},{"type":"object","properties":{"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"category":{"type":"string"},"published":{"type":"string"},"updated":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["slug","locale","title","order","body"],"additionalProperties":false},{"type":"object","properties":{"meta":{"type":"object","properties":{"slug":{"type":"string"},"phase":{"type":"integer","minimum":1,"maximum":16},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"string"},"updated":{"type":"string"}},"required":["slug","phase","order","title","description","duration"],"additionalProperties":false},"body":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"title":{"type":"string"},"body":{"type":"string"},"validatorId":{"type":"string"}},"required":["index","title","body"],"additionalProperties":false}},"contentHash":{"type":"string"}},"required":["meta","body","steps","contentHash"],"additionalProperties":false},{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"playbookId":{"type":["string","null"]}},"required":["id","text","playbookId"],"additionalProperties":false}]}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["level","slug","locale","title","order","body"],"additionalProperties":false},{"type":"object","properties":{"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"category":{"type":"string"},"published":{"type":"string"},"updated":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["slug","locale","title","order","body"],"additionalProperties":false},{"type":"object","properties":{"meta":{"type":"object","properties":{"slug":{"type":"string"},"phase":{"type":"integer","minimum":1,"maximum":16},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"string"},"updated":{"type":"string"}},"required":["slug","phase","order","title","description","duration"],"additionalProperties":false},"body":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"title":{"type":"string"},"body":{"type":"string"},"validatorId":{"type":"string"}},"required":["index","title","body"],"additionalProperties":false}},"contentHash":{"type":"string"}},"required":["meta","body","steps","contentHash"],"additionalProperties":false},{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"playbookId":{"type":["string","null"]}},"required":["id","text","playbookId"],"additionalProperties":false}]}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/suggestions":{"post":{"operationId":"suggest","description":"Suggest matching library items with reasons; the supplied profile is never saved.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"suggestions":{"type":"array","items":{"type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false},"reasons":{"type":"array","items":{"type":"string"}}},"required":["item","reasons"],"additionalProperties":false}}},"required":["suggestions"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"profile":{"type":"object","properties":{"goals":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":300}},"capabilities":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":300}},"environment":{"type":"string","maxLength":500},"constraints":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":300}}},"additionalProperties":false}},"required":["profile"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"suggestions":{"type":"array","items":{"type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false},"reasons":{"type":"array","items":{"type":"string"}}},"required":["item","reasons"],"additionalProperties":false}}},"required":["suggestions"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"profile":{"type":"object","properties":{"goals":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":300}},"capabilities":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":300}},"environment":{"type":"string","maxLength":500},"constraints":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":300}}},"additionalProperties":false}},"required":["profile"],"additionalProperties":false}}}}}},"/v1/me/access":{"get":{"operationId":"access","description":"Read the current credential scopes and available learning tools.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"scopes":{"type":"array","items":{"type":"string","enum":["learn:read","learn:write","credits:spend"]}},"resource":{"type":"string"},"tools":{"type":"array","items":{"type":"string"}},"hint":{"type":"string"}},"required":["scopes","resource","tools","hint"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":[]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"scopes":{"type":"array","items":{"type":"string","enum":["learn:read","learn:write","credits:spend"]}},"resource":{"type":"string"},"tools":{"type":"array","items":{"type":"string"}},"hint":{"type":"string"}},"required":["scopes","resource","tools","hint"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/profile":{"get":{"operationId":"profile","description":"Read your saved language and selected learning path.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"type":"string","enum":["de","en","es"]},"selectedPath":{"anyOf":[{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},{"type":"null"}]}},"required":["locale","selectedPath"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"type":"string","enum":["de","en","es"]},"selectedPath":{"anyOf":[{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},{"type":"null"}]}},"required":["locale","selectedPath"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}},"patch":{"operationId":"profileUpdate","description":"Update your language or selected learning path.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"type":"string","enum":["de","en","es"]},"selectedPath":{"anyOf":[{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},{"type":"null"}]}},"required":["locale","selectedPath"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"type":"string","enum":["de","en","es"]},"selectedPath":{"anyOf":[{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},{"type":"null"}]}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"type":"string","enum":["de","en","es"]},"selectedPath":{"anyOf":[{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},{"type":"null"}]}},"required":["locale","selectedPath"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"type":"string","enum":["de","en","es"]},"selectedPath":{"anyOf":[{"type":"string","enum":["loslegen","ki-im-alltag","ki-im-job","fuer-entwickler"]},{"type":"null"}]}},"additionalProperties":false}}}}}},"/v1/me/learning":{"get":{"operationId":"learning","description":"Read owner-bound progress with locale-independent lesson counts.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"completedLessons":{"type":"number"},"recentCompletions":{"type":"array","items":{"type":"object","properties":{"level":{"type":"number"},"lessonSlug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"completedAt":{"type":"string"}},"required":["level","lessonSlug","locale","title","completedAt"],"additionalProperties":false}},"currentStreak":{"type":"number"},"longestStreak":{"type":"number"},"streakTimeZone":{"type":"string","const":"Europe/Berlin"},"quizCount":{"type":"number"},"notesCount":{"type":"number"},"learningPoints":{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"value":{"type":"null"}},"required":["status","value"],"additionalProperties":false},"credits":{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"bonusCredits":{"type":"null"},"subscriptionCredits":{"type":"null"},"euroValue":{"type":"null"},"spendingEnabled":{"type":"boolean","const":false},"purchasesEnabled":{"type":"boolean","const":false}},"required":["status","bonusCredits","subscriptionCredits","euroValue","spendingEnabled","purchasesEnabled"],"additionalProperties":false}},"required":["completedLessons","recentCompletions","currentStreak","longestStreak","streakTimeZone","quizCount","notesCount","learningPoints","credits"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"completedLessons":{"type":"number"},"recentCompletions":{"type":"array","items":{"type":"object","properties":{"level":{"type":"number"},"lessonSlug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"completedAt":{"type":"string"}},"required":["level","lessonSlug","locale","title","completedAt"],"additionalProperties":false}},"currentStreak":{"type":"number"},"longestStreak":{"type":"number"},"streakTimeZone":{"type":"string","const":"Europe/Berlin"},"quizCount":{"type":"number"},"notesCount":{"type":"number"},"learningPoints":{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"value":{"type":"null"}},"required":["status","value"],"additionalProperties":false},"credits":{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"bonusCredits":{"type":"null"},"subscriptionCredits":{"type":"null"},"euroValue":{"type":"null"},"spendingEnabled":{"type":"boolean","const":false},"purchasesEnabled":{"type":"boolean","const":false}},"required":["status","bonusCredits","subscriptionCredits","euroValue","spendingEnabled","purchasesEnabled"],"additionalProperties":false}},"required":["completedLessons","recentCompletions","currentStreak","longestStreak","streakTimeZone","quizCount","notesCount","learningPoints","credits"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/continue":{"get":{"operationId":"continue","description":"Find the next unfinished core step in your selected learning path, excluding optional content.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"lesson":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},{"type":"null"}]},"href":{"type":["string","null"]},"step":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"title":{"type":"string"},"href":{"type":"string"}},"required":["id","kind","type","title","href"],"additionalProperties":false},{"type":"null"}]}},"required":["lesson","href","step"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"lesson":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},{"type":"null"}]},"href":{"type":["string","null"]},"step":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["lesson","playbook"]},"type":{"type":"string","enum":["lesson","playbook","capstone"]},"title":{"type":"string"},"href":{"type":"string"}},"required":["id","kind","type","title","href"],"additionalProperties":false},{"type":"null"}]}},"required":["lesson","href","step"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/progress/lessons/{lessonSlug}/complete":{"post":{"operationId":"lessonDone","description":"Record one first completion across languages without XP, league or mail effects.","deprecated":false,"parameters":[{"name":"lessonSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:lesson:[1-6]:)?[a-z0-9][a-z0-9_.-]*$"},"description":"Stable lesson:<level>:<slug> identifier, or slug with explicit level query parameter. Ambiguous slugs are rejected."},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"lessonId":{"type":"string","pattern":"^lesson:-?\\d+(?:\\.\\d+)?:[\\s\\S]{0,}$"},"completedAt":{"type":"string"},"firstCompletion":{"type":"boolean"}},"required":["lessonId","completedAt","firstCompletion"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"lessonId":{"type":"string","pattern":"^lesson:-?\\d+(?:\\.\\d+)?:[\\s\\S]{0,}$"},"completedAt":{"type":"string"},"firstCompletion":{"type":"boolean"}},"required":["lessonId","completedAt","firstCompletion"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6}},"required":[],"additionalProperties":false}}}}}},"/v1/me/progress/steps/{stepId}/complete":{"post":{"operationId":"stepDone","description":"Complete one real learning-path step, including required playbooks and the final project, for the verified owner across languages. Optional content does not advance core progress.","deprecated":false,"parameters":[{"name":"stepId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^(?:lesson:[1-6]:|playbook:)[a-z0-9][a-z0-9_-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"stepId":{"type":"string"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"firstCompletion":{"type":"boolean"}},"required":["stepId","completedAt","firstCompletion"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"stepId":{"type":"string","minLength":1,"maxLength":240,"pattern":"^(?:lesson:[1-6]:|playbook:)[a-z0-9][a-z0-9_-]*$"}},"required":["stepId"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"stepId":{"type":"string"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"firstCompletion":{"type":"boolean"}},"required":["stepId","completedAt","firstCompletion"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":false,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/v1/me/notes":{"get":{"operationId":"notes","description":"Read only your saved notes.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"lesson":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","lesson","locale","body","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"lesson":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","lesson","locale","body","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}},"post":{"operationId":"noteSave","description":"Save your note on an existing lesson.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"lesson":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","lesson","locale","body","createdAt","updatedAt"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"body":{"type":"string","minLength":1,"maxLength":50000}},"required":["level","slug","body"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"lesson":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","lesson","locale","body","createdAt","updatedAt"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"body":{"type":"string","minLength":1,"maxLength":50000}},"required":["level","slug","body"],"additionalProperties":false}}}}}},"/v1/me/notes/{id}":{"delete":{"operationId":"noteDelete","description":"Delete your own note after explicit confirmation.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deleted":{"type":"boolean","const":true},"id":{"type":"string"}},"required":["deleted","id"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"confirm":{"type":"boolean","const":true}},"required":["id","confirm"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deleted":{"type":"boolean","const":true},"id":{"type":"string"}},"required":["deleted","id"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirm":{"type":"boolean","const":true}},"required":["confirm"],"additionalProperties":false}}}}}},"/v1/me/quiz/{lessonSlug}":{"get":{"operationId":"quiz","description":"Read a quiz by lesson or exact quizSlug; slug-only is deprecated. Correctness and explanations stay hidden.","deprecated":false,"parameters":[{"name":"lessonSlug","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:lesson:[1-6]:)?[a-z0-9][a-z0-9_.-]*$"},"description":"Stable lesson:<level>:<slug> identifier, or slug with explicit level query parameter. Ambiguous slugs are rejected."},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"level","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":6}},{"name":"quizSlug","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string"},"kind":{"type":"string","enum":["lesson","checkpoint"]},"level":{"type":"number"},"lessonSlug":{"type":["string","null"]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":["string","null"]},"passingScore":{"type":"number"},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"}},"required":["id","text"],"additionalProperties":false}}},"required":["id","text","options"],"additionalProperties":false}}},"required":["slug","kind","level","lessonSlug","locale","title","description","passingScore","questions"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},{"type":"object","properties":{"quizSlug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["quizSlug"],"additionalProperties":false},{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["slug"],"additionalProperties":false,"description":"Deprecated legacy quiz-slug lookup without level; use quizSlug instead.","deprecated":true}],"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"quizSlug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}}},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string"},"kind":{"type":"string","enum":["lesson","checkpoint"]},"level":{"type":"number"},"lessonSlug":{"type":["string","null"]},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":["string","null"]},"passingScore":{"type":"number"},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"}},"required":["id","text"],"additionalProperties":false}}},"required":["id","text","options"],"additionalProperties":false}}},"required":["slug","kind","level","lessonSlug","locale","title","description","passingScore","questions"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/quiz/{lessonSlug}/submissions":{"post":{"operationId":"quizSubmit","description":"Score submitted option identifiers on the server and save your attempt without XP.","deprecated":false,"parameters":[{"name":"lessonSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"attemptId":{"type":"string"},"score":{"type":"number"},"correct":{"type":"number"},"total":{"type":"number"},"passed":{"type":"boolean"},"perQuestion":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"correct":{"type":"boolean"},"correctAnswer":{"type":"string"},"explanation":{"type":"string"}},"required":["id","correct"],"additionalProperties":false}}},"required":["attemptId","score","correct","total","passed","perQuestion"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"quizSlug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"answers":{"type":"object","propertyNames":{"type":"string","maxLength":150},"additionalProperties":{"type":"string","maxLength":150}}},"required":["quizSlug","answers"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"attemptId":{"type":"string"},"score":{"type":"number"},"correct":{"type":"number"},"total":{"type":"number"},"passed":{"type":"boolean"},"perQuestion":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"correct":{"type":"boolean"},"correctAnswer":{"type":"string"},"explanation":{"type":"string"}},"required":["id","correct"],"additionalProperties":false}}},"required":["attemptId","score","correct","total","passed","perQuestion"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"answers":{"type":"object","propertyNames":{"type":"string","maxLength":150},"additionalProperties":{"type":"string","maxLength":150}}},"required":["answers"],"additionalProperties":false}}}}}},"/v1/me/review":{"get":{"operationId":"review","description":"Read only your due review cards.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"lesson":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]},"dueAt":{"type":"string"},"intervalDays":{"type":"number"},"repetitions":{"type":"number"}},"required":["id","lesson","locale","dueAt","intervalDays","repetitions"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"lesson":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]},"dueAt":{"type":"string"},"intervalDays":{"type":"number"},"repetitions":{"type":"number"}},"required":["id","lesson","locale","dueAt","intervalDays","repetitions"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/review/{cardId}/grade":{"post":{"operationId":"reviewGrade","description":"Apply a spaced-repetition grade to your own card.","deprecated":false,"parameters":[{"name":"cardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"lesson":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]},"dueAt":{"type":"string"},"intervalDays":{"type":"number"},"repetitions":{"type":"number"}},"required":["id","lesson","locale","dueAt","intervalDays","repetitions"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"grade":{"type":"string","enum":["again","good","easy"]}},"required":["id","grade"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"lesson":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"}},"required":["level","slug"],"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]},"dueAt":{"type":"string"},"intervalDays":{"type":"number"},"repetitions":{"type":"number"}},"required":["id","lesson","locale","dueAt","intervalDays","repetitions"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"grade":{"type":"string","enum":["again","good","easy"]}},"required":["grade"],"additionalProperties":false}}}}}},"/v1/me/installs":{"post":{"operationId":"install","description":"Prepare and save a package plan only; the client must recheck file hashes before writing.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","const":"plan"},"files":{"type":"array","items":{"type":"object","properties":{"relativePath":{"type":"string"},"content":{"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"executable":{"type":"boolean"}},"required":["relativePath","content","sha256","executable"],"additionalProperties":false}},"lockfile":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"entries":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?$"},"status":{"type":"string","enum":["draft","candidate","active"]},"access":{"type":"string","enum":["free","premium"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"license":{"type":"string","minLength":1},"source":{"type":"string","format":"uri"},"installedAt":{"type":["string","null"]}},"required":["id","version","status","access","sha256","license","source","installedAt"],"additionalProperties":false}}},"required":["schemaVersion","entries"],"additionalProperties":false}},"required":["status","files","lockfile"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"packageIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"existingLockfile":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"entries":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?$"},"status":{"type":"string","enum":["draft","candidate","active"]},"access":{"type":"string","enum":["free","premium"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"license":{"type":"string","minLength":1},"source":{"type":"string","format":"uri"},"installedAt":{"type":["string","null"]}},"required":["id","version","status","access","sha256","license","source","installedAt"],"additionalProperties":false}}},"required":["schemaVersion","entries"],"additionalProperties":false},"observedFiles":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"relativePath":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[a-zA-Z0-9_.-]+(?:\\/[a-zA-Z0-9_.-]+)*$"},"sha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]}},"required":["id","relativePath","sha256"],"additionalProperties":false}},"consentDraft":{"type":"boolean"},"consentCandidate":{"type":"boolean"},"consentScripts":{"type":"boolean"}},"required":["packageIds"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","const":"plan"},"files":{"type":"array","items":{"type":"object","properties":{"relativePath":{"type":"string"},"content":{"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"executable":{"type":"boolean"}},"required":["relativePath","content","sha256","executable"],"additionalProperties":false}},"lockfile":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"entries":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?$"},"status":{"type":"string","enum":["draft","candidate","active"]},"access":{"type":"string","enum":["free","premium"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"license":{"type":"string","minLength":1},"source":{"type":"string","format":"uri"},"installedAt":{"type":["string","null"]}},"required":["id","version","status","access","sha256","license","source","installedAt"],"additionalProperties":false}}},"required":["schemaVersion","entries"],"additionalProperties":false}},"required":["status","files","lockfile"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"packageIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"existingLockfile":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"entries":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?$"},"status":{"type":"string","enum":["draft","candidate","active"]},"access":{"type":"string","enum":["free","premium"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"license":{"type":"string","minLength":1},"source":{"type":"string","format":"uri"},"installedAt":{"type":["string","null"]}},"required":["id","version","status","access","sha256","license","source","installedAt"],"additionalProperties":false}}},"required":["schemaVersion","entries"],"additionalProperties":false},"observedFiles":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"relativePath":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[a-zA-Z0-9_.-]+(?:\\/[a-zA-Z0-9_.-]+)*$"},"sha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]}},"required":["id","relativePath","sha256"],"additionalProperties":false}},"consentDraft":{"type":"boolean"},"consentCandidate":{"type":"boolean"},"consentScripts":{"type":"boolean"}},"required":["packageIds"],"additionalProperties":false}}}}},"get":{"operationId":"installs","description":"Read packages from your saved installation plans, not verified client installations.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?$"},"status":{"type":"string","enum":["draft","candidate","active"]},"access":{"type":"string","enum":["free","premium"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"license":{"type":"string","minLength":1},"source":{"type":"string","format":"uri"},"installedAt":{"type":["string","null"]}},"required":["id","version","status","access","sha256","license","source","installedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?$"},"status":{"type":"string","enum":["draft","candidate","active"]},"access":{"type":"string","enum":["free","premium"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"license":{"type":"string","minLength":1},"source":{"type":"string","format":"uri"},"installedAt":{"type":["string","null"]}},"required":["id","version","status","access","sha256","license","source","installedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/installs/check-updates":{"post":{"operationId":"checkUpdates","description":"Check released versions and client-reported file hashes; missing observations stay unverified.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"updates":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"fromVersion":{"type":"string"},"toVersion":{"type":"string"},"localChanges":{"type":"boolean","const":false},"verification":{"type":"string","const":"unchanged"}},"required":["id","fromVersion","toVersion","localChanges","verification"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"fromVersion":{"type":"string"},"toVersion":{"type":"string"},"localChanges":{"type":"boolean","const":true},"verification":{"type":"string","const":"modified"}},"required":["id","fromVersion","toVersion","localChanges","verification"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"fromVersion":{"type":"string"},"toVersion":{"type":"string"},"localChanges":{"type":"null"},"verification":{"type":"string","const":"unverified"}},"required":["id","fromVersion","toVersion","localChanges","verification"],"additionalProperties":false}]}}},"required":["updates"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"lockfile":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"entries":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?$"},"status":{"type":"string","enum":["draft","candidate","active"]},"access":{"type":"string","enum":["free","premium"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"license":{"type":"string","minLength":1},"source":{"type":"string","format":"uri"},"installedAt":{"type":["string","null"]}},"required":["id","version","status","access","sha256","license","source","installedAt"],"additionalProperties":false}}},"required":["schemaVersion","entries"],"additionalProperties":false},"observedFiles":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"relativePath":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[a-zA-Z0-9_.-]+(?:\\/[a-zA-Z0-9_.-]+)*$"},"sha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]}},"required":["id","relativePath","sha256"],"additionalProperties":false}}},"required":["lockfile"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"updates":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"fromVersion":{"type":"string"},"toVersion":{"type":"string"},"localChanges":{"type":"boolean","const":false},"verification":{"type":"string","const":"unchanged"}},"required":["id","fromVersion","toVersion","localChanges","verification"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"fromVersion":{"type":"string"},"toVersion":{"type":"string"},"localChanges":{"type":"boolean","const":true},"verification":{"type":"string","const":"modified"}},"required":["id","fromVersion","toVersion","localChanges","verification"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"fromVersion":{"type":"string"},"toVersion":{"type":"string"},"localChanges":{"type":"null"},"verification":{"type":"string","const":"unverified"}},"required":["id","fromVersion","toVersion","localChanges","verification"],"additionalProperties":false}]}}},"required":["updates"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"lockfile":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"entries":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?$"},"status":{"type":"string","enum":["draft","candidate","active"]},"access":{"type":"string","enum":["free","premium"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"license":{"type":"string","minLength":1},"source":{"type":"string","format":"uri"},"installedAt":{"type":["string","null"]}},"required":["id","version","status","access","sha256","license","source","installedAt"],"additionalProperties":false}}},"required":["schemaVersion","entries"],"additionalProperties":false},"observedFiles":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"relativePath":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[a-zA-Z0-9_.-]+(?:\\/[a-zA-Z0-9_.-]+)*$"},"sha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]}},"required":["id","relativePath","sha256"],"additionalProperties":false}}},"required":["lockfile"],"additionalProperties":false}}}}}},"/v1/me/feedback":{"post":{"operationId":"feedback","description":"Save owner-bound feedback about a real item without retaining an agent profile.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"savedAt":{"type":"string"}},"required":["id","savedAt"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"itemId":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"disposition":{"type":"string","enum":["uebernommen","angepasst","verworfen"]},"text":{"type":"string","maxLength":10000}},"required":["itemId","disposition"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"savedAt":{"type":"string"}},"required":["id","savedAt"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"itemId":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"disposition":{"type":"string","enum":["uebernommen","angepasst","verworfen"]},"text":{"type":"string","maxLength":10000}},"required":["itemId","disposition"],"additionalProperties":false}}}}}},"/v1/me/spend-quotes":{"post":{"operationId":"prepareSpend","description":"prepareSpend: Academy commerce operation.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"contentId":{"type":"string"},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"type":"string"}},"required":["id","contentId","contentVersion","priceVersion","credits","expiresAt"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write","credits:spend"]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"purpose":{"type":"string","const":"PREMIUM"},"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["purpose","id"],"additionalProperties":false},{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"purpose":{"type":"string","const":"TUTOR"},"message":{"type":"string","minLength":1,"maxLength":2000}},"required":["level","slug","purpose","message"],"additionalProperties":false},{"type":"object","properties":{"purpose":{"type":"string","const":"COACHING"},"topic":{"type":"string","minLength":1,"maxLength":4000},"format":{"type":"string","minLength":1,"maxLength":120},"preferredTime":{"type":"string","maxLength":240}},"required":["purpose","topic","format"],"additionalProperties":false}],"type":"object"},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"contentId":{"type":"string"},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"type":"string"}},"required":["id","contentId","contentVersion","priceVersion","credits","expiresAt"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"purpose":{"type":"string","const":"PREMIUM"},"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["purpose","id"],"additionalProperties":false},{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"purpose":{"type":"string","const":"TUTOR"},"message":{"type":"string","minLength":1,"maxLength":2000}},"required":["level","slug","purpose","message"],"additionalProperties":false},{"type":"object","properties":{"purpose":{"type":"string","const":"COACHING"},"topic":{"type":"string","minLength":1,"maxLength":4000},"format":{"type":"string","minLength":1,"maxLength":120},"preferredTime":{"type":"string","maxLength":240}},"required":["purpose","topic","format"],"additionalProperties":false}],"type":"object"}}}}}},"/v1/premium":{"get":{"operationId":"premiumCatalog","description":"premiumCatalog: Academy commerce operation.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/premium/{id}":{"get":{"operationId":"premiumPreview","description":"premiumPreview: Academy commerce operation.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false},"price":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"quote":{"type":"null"}},"required":["status","quote"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"quote":{"type":"object","properties":{"id":{"type":"string"},"contentId":{"type":"string"},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"type":"string"}},"required":["id","contentId","contentVersion","priceVersion","credits","expiresAt"],"additionalProperties":false}},"required":["status","quote"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"quote":{"type":"null"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"loginHref":{"type":"string"}},"required":["status","quote","credits","contentVersion","priceVersion","loginHref"],"additionalProperties":false}]},"preview":{"type":"string"}},"required":["item","price","preview"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false},"price":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"quote":{"type":"null"}},"required":["status","quote"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"quote":{"type":"object","properties":{"id":{"type":"string"},"contentId":{"type":"string"},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"type":"string"}},"required":["id","contentId","contentVersion","priceVersion","credits","expiresAt"],"additionalProperties":false}},"required":["status","quote"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"quote":{"type":"null"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"loginHref":{"type":"string"}},"required":["status","quote","credits","contentVersion","priceVersion","loginHref"],"additionalProperties":false}]},"preview":{"type":"string"}},"required":["item","price","preview"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/premium/{id}/preview":{"get":{"operationId":"premiumPreviewAlias1","description":"premiumPreview: Academy commerce operation.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false},"price":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"quote":{"type":"null"}},"required":["status","quote"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"quote":{"type":"object","properties":{"id":{"type":"string"},"contentId":{"type":"string"},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"type":"string"}},"required":["id","contentId","contentVersion","priceVersion","credits","expiresAt"],"additionalProperties":false}},"required":["status","quote"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"quote":{"type":"null"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"loginHref":{"type":"string"}},"required":["status","quote","credits","contentVersion","priceVersion","loginHref"],"additionalProperties":false}]},"preview":{"type":"string"}},"required":["item","price","preview"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["prompt","playbook","skill","tool","agent","guide","glossary"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"access":{"type":"string","enum":["free","premium"]},"creditPrice":{"type":["number","null"]},"euroPrice":{"type":["number","null"]},"categories":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["de","en","es"]},"contentLocale":{"type":"string","enum":["de","en","es"]},"translationPending":{"type":"boolean"},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["playbook","concept"]},"slug":{"type":"string"},"href":{"type":"string"},"label":{"type":"string"}},"required":["kind","slug","href","label"],"additionalProperties":false}},"required":["id","type","title","description","href","access","creditPrice","euroPrice","categories","locale","contentLocale","translationPending","source"],"additionalProperties":false},"price":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"quote":{"type":"null"}},"required":["status","quote"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"quote":{"type":"object","properties":{"id":{"type":"string"},"contentId":{"type":"string"},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"type":"string"}},"required":["id","contentId","contentVersion","priceVersion","credits","expiresAt"],"additionalProperties":false}},"required":["status","quote"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"quote":{"type":"null"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentVersion":{"type":"string"},"priceVersion":{"type":"string"},"loginHref":{"type":"string"}},"required":["status","quote","credits","contentVersion","priceVersion","loginHref"],"additionalProperties":false}]},"preview":{"type":"string"}},"required":["item","price","preview"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/me/credits":{"get":{"operationId":"credits","description":"credits: Academy commerce operation.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"bonusCredits":{"type":"null"},"subscriptionCredits":{"type":"null"},"euroValue":{"type":"null"},"spendingEnabled":{"type":"boolean","const":false},"purchasesEnabled":{"type":"boolean","const":false}},"required":["status","bonusCredits","subscriptionCredits","euroValue","spendingEnabled","purchasesEnabled"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"balances":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["BONUS","SUBSCRIPTION","PURCHASED"]},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["source","credits"],"additionalProperties":false}},"spendingEnabled":{"type":"boolean"},"purchasesEnabled":{"type":"boolean"}},"required":["status","balances","spendingEnabled","purchasesEnabled"],"additionalProperties":false}]},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"bonusCredits":{"type":"null"},"subscriptionCredits":{"type":"null"},"euroValue":{"type":"null"},"spendingEnabled":{"type":"boolean","const":false},"purchasesEnabled":{"type":"boolean","const":false}},"required":["status","bonusCredits","subscriptionCredits","euroValue","spendingEnabled","purchasesEnabled"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured"},"balances":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["BONUS","SUBSCRIPTION","PURCHASED"]},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["source","credits"],"additionalProperties":false}},"spendingEnabled":{"type":"boolean"},"purchasesEnabled":{"type":"boolean"}},"required":["status","balances","spendingEnabled","purchasesEnabled"],"additionalProperties":false}]},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/credits/ledger":{"get":{"operationId":"ledger","description":"ledger: Academy commerce operation.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","enum":["BONUS","SUBSCRIPTION","PURCHASED"]},"kind":{"type":"string","enum":["GRANT","SPEND","REVERSAL"]},"status":{"type":"string","enum":["BLOCKED","POSTED","VOIDED"]},"purpose":{"anyOf":[{"type":"string","enum":["PREMIUM","TUTOR","COACHING"]},{"type":"null"}]},"amountCredits":{"type":["number","null"]},"postedAt":{"type":["string","null"]}},"required":["id","source","kind","status","purpose","amountCredits","postedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","enum":["BONUS","SUBSCRIPTION","PURCHASED"]},"kind":{"type":"string","enum":["GRANT","SPEND","REVERSAL"]},"status":{"type":"string","enum":["BLOCKED","POSTED","VOIDED"]},"purpose":{"anyOf":[{"type":"string","enum":["PREMIUM","TUTOR","COACHING"]},{"type":"null"}]},"amountCredits":{"type":["number","null"]},"postedAt":{"type":["string","null"]}},"required":["id","source","kind","status","purpose","amountCredits","postedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/premium/{id}/unlock":{"post":{"operationId":"premiumUnlock","description":"premiumUnlock: Academy commerce operation.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"entitlement":{"type":"object","properties":{"contentId":{"type":"string"},"grantedAt":{"type":"string"},"expiresAt":{"type":["string","null"]}},"required":["contentId","grantedAt","expiresAt"],"additionalProperties":false},"ledgerEntryId":{"type":"string"}},"required":["entitlement","ledgerEntryId"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["credits:spend"]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"},"consent":{"type":"object","properties":{"userConfirmed":{"type":"boolean","const":true},"quoteId":{"type":"string","minLength":1,"maxLength":240},"maximumCredits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["userConfirmed","quoteId","maximumCredits"],"additionalProperties":false}},"required":["id","consent"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"entitlement":{"type":"object","properties":{"contentId":{"type":"string"},"grantedAt":{"type":"string"},"expiresAt":{"type":["string","null"]}},"required":["contentId","grantedAt","expiresAt"],"additionalProperties":false},"ledgerEntryId":{"type":"string"}},"required":["entitlement","ledgerEntryId"],"additionalProperties":false},"x-academy-credit-effect":"spend","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"consent":{"type":"object","properties":{"userConfirmed":{"type":"boolean","const":true},"quoteId":{"type":"string","minLength":1,"maxLength":240},"maximumCredits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["userConfirmed","quoteId","maximumCredits"],"additionalProperties":false}},"required":["consent"],"additionalProperties":false}}}}}},"/v1/me/premium":{"get":{"operationId":"myPremium","description":"myPremium: Academy commerce operation.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"contentId":{"type":"string"},"grantedAt":{"type":"string"},"expiresAt":{"type":["string","null"]}},"required":["contentId","grantedAt","expiresAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"contentId":{"type":"string"},"grantedAt":{"type":"string"},"expiresAt":{"type":["string","null"]}},"required":["contentId","grantedAt","expiresAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/premium/{id}":{"get":{"operationId":"premiumRead","description":"premiumRead: Academy commerce operation.","deprecated":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["level","slug","locale","title","order","body"],"additionalProperties":false},{"type":"object","properties":{"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"category":{"type":"string"},"published":{"type":"string"},"updated":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["slug","locale","title","order","body"],"additionalProperties":false},{"type":"object","properties":{"meta":{"type":"object","properties":{"slug":{"type":"string"},"phase":{"type":"integer","minimum":1,"maximum":16},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"string"},"updated":{"type":"string"}},"required":["slug","phase","order","title","description","duration"],"additionalProperties":false},"body":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"title":{"type":"string"},"body":{"type":"string"},"validatorId":{"type":"string"}},"required":["index","title","body"],"additionalProperties":false}},"contentHash":{"type":"string"}},"required":["meta","body","steps","contentHash"],"additionalProperties":false},{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"playbookId":{"type":["string","null"]}},"required":["id","text","playbookId"],"additionalProperties":false}]}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:read"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"requestedLocale":{"type":"string","enum":["de","en","es"]},"content_locale":{"type":"string","enum":["de","en","es"]},"fallback":{"type":"boolean"},"version":{"type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["draft","candidate","active","deprecated"]},{"type":"null"}]},"updated":{"type":["string","null"]},"content":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"preview":{"type":"boolean"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["level","slug","locale","title","order","body"],"additionalProperties":false},{"type":"object","properties":{"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":"string"},"order":{"type":"number"},"duration":{"type":"string"},"category":{"type":"string"},"published":{"type":"string"},"updated":{"type":"string"},"bodyPending":{"type":"boolean"},"bodyLocale":{"type":"string"},"body":{"type":"string"}},"required":["slug","locale","title","order","body"],"additionalProperties":false},{"type":"object","properties":{"meta":{"type":"object","properties":{"slug":{"type":"string"},"phase":{"type":"integer","minimum":1,"maximum":16},"order":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"duration":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"string"},"updated":{"type":"string"}},"required":["slug","phase","order","title","description","duration"],"additionalProperties":false},"body":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"title":{"type":"string"},"body":{"type":"string"},"validatorId":{"type":"string"}},"required":["index","title","body"],"additionalProperties":false}},"contentHash":{"type":"string"}},"required":["meta","body","steps","contentHash"],"additionalProperties":false},{"type":"object","properties":{"slug":{"type":"string"},"conceptType":{"type":"string","enum":["config_file","pattern","tool","service","command","mcp_server","feature"]},"name":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"}},"required":["slug","conceptType","name","summary","body","tags"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"playbookId":{"type":["string","null"]}},"required":["id","text","playbookId"],"additionalProperties":false}]}},"required":["id","requestedLocale","content_locale","fallback","version","status","updated","content"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:read"}}},"/v1/me/tutor":{"post":{"operationId":"tutor","description":"tutor: Academy commerce operation.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"messageId":{"type":"string"},"response":{"type":"string"},"ledgerEntryId":{"type":"string"}},"required":["messageId","response","ledgerEntryId"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write","credits:spend"]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"message":{"type":"string","minLength":1,"maxLength":2000},"consent":{"type":"object","properties":{"userConfirmed":{"type":"boolean","const":true},"quoteId":{"type":"string","minLength":1,"maxLength":240},"maximumCredits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["userConfirmed","quoteId","maximumCredits"],"additionalProperties":false}},"required":["level","slug","message","consent"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"messageId":{"type":"string"},"response":{"type":"string"},"ledgerEntryId":{"type":"string"}},"required":["messageId","response","ledgerEntryId"],"additionalProperties":false},"x-academy-credit-effect":"spend","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"message":{"type":"string","minLength":1,"maxLength":2000},"consent":{"type":"object","properties":{"userConfirmed":{"type":"boolean","const":true},"quoteId":{"type":"string","minLength":1,"maxLength":240},"maximumCredits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["userConfirmed","quoteId","maximumCredits"],"additionalProperties":false}},"required":["level","slug","message","consent"],"additionalProperties":false}}}}}},"/v1/me/tutor/messages":{"post":{"operationId":"tutorAlias1","description":"tutor: Academy commerce operation.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"messageId":{"type":"string"},"response":{"type":"string"},"ledgerEntryId":{"type":"string"}},"required":["messageId","response","ledgerEntryId"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write","credits:spend"]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"message":{"type":"string","minLength":1,"maxLength":2000},"consent":{"type":"object","properties":{"userConfirmed":{"type":"boolean","const":true},"quoteId":{"type":"string","minLength":1,"maxLength":240},"maximumCredits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["userConfirmed","quoteId","maximumCredits"],"additionalProperties":false}},"required":["level","slug","message","consent"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"messageId":{"type":"string"},"response":{"type":"string"},"ledgerEntryId":{"type":"string"}},"required":["messageId","response","ledgerEntryId"],"additionalProperties":false},"x-academy-credit-effect":"spend","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"message":{"type":"string","minLength":1,"maxLength":2000},"consent":{"type":"object","properties":{"userConfirmed":{"type":"boolean","const":true},"quoteId":{"type":"string","minLength":1,"maxLength":240},"maximumCredits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["userConfirmed","quoteId","maximumCredits"],"additionalProperties":false}},"required":["level","slug","message","consent"],"additionalProperties":false}}}}}},"/v1/me/coaching":{"post":{"operationId":"coachingRequest","description":"coachingRequest: Academy commerce operation.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"Required for preparing a quote and commerce POST requests. Reuse the same key and payload when retrying. Conditional installation spending also requires this header."}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","const":"saved"},"payment":{"type":"string","enum":["none","posted"]}},"required":["id","status","payment"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[{"OAuth":["learn:write"]},{"PersonalApiKey":[]}],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"topic":{"type":"string","minLength":1,"maxLength":4000},"format":{"type":"string","minLength":1,"maxLength":120},"preferredTime":{"type":"string","maxLength":240},"confirm":{"type":"boolean","const":true},"payment":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"none"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"credits"},"consent":{"type":"object","properties":{"userConfirmed":{"type":"boolean","const":true},"quoteId":{"type":"string","minLength":1,"maxLength":240},"maximumCredits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["userConfirmed","quoteId","maximumCredits"],"additionalProperties":false}},"required":["kind","consent"],"additionalProperties":false}]}},"required":["topic","format","confirm","payment"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","const":"saved"},"payment":{"type":"string","enum":["none","posted"]}},"required":["id","status","payment"],"additionalProperties":false},"x-academy-credit-effect":"conditional","x-academy-rate-limits":{"limit":30,"windowSeconds":60,"identity":"verified_principal","bucket":"academy:principal:write"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"topic":{"type":"string","minLength":1,"maxLength":4000},"format":{"type":"string","minLength":1,"maxLength":120},"preferredTime":{"type":"string","maxLength":240},"confirm":{"type":"boolean","const":true},"payment":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"none"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"credits"},"consent":{"type":"object","properties":{"userConfirmed":{"type":"boolean","const":true},"quoteId":{"type":"string","minLength":1,"maxLength":240},"maximumCredits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["userConfirmed","quoteId","maximumCredits"],"additionalProperties":false}},"required":["kind","consent"],"additionalProperties":false}]}},"required":["topic","format","confirm","payment"],"additionalProperties":false}}}}}},"/v1/legacy/levels":{"get":{"operationId":"legacyLevels","description":"Deprecated compatibility view of original numbered content levels; use paths for current learning paths.","deprecated":true,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"levels":{"type":"array","items":{"type":"object","properties":{"level":{"type":"number"},"title":{"type":"string"},"href":{"type":"string"},"lessonCount":{"type":"number"}},"required":["level","title","href","lessonCount"],"additionalProperties":false}}},"required":["levels"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"levels":{"type":"array","items":{"type":"object","properties":{"level":{"type":"number"},"title":{"type":"string"},"href":{"type":"string"},"lessonCount":{"type":"number"}},"required":["level","title","href","lessonCount"],"additionalProperties":false}}},"required":["levels"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/legacy/levels/{level}/lessons":{"get":{"operationId":"legacyLessons","description":"Deprecated compatibility listing of original lessons in one numbered level.","deprecated":true,"parameters":[{"name":"level","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":6}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"lessons":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^lesson:-?\\d+(?:\\.\\d+)?:[\\s\\S]{0,}$"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":["string","null"]},"href":{"type":"string"}},"required":["id","level","slug","locale","title","description","href"],"additionalProperties":false}}},"required":["lessons"],"additionalProperties":false},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6}},"required":["level"],"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"lessons":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^lesson:-?\\d+(?:\\.\\d+)?:[\\s\\S]{0,}$"},"level":{"type":"number"},"slug":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"title":{"type":"string"},"description":{"type":["string","null"]},"href":{"type":"string"}},"required":["id","level","slug","locale","title","description","href"],"additionalProperties":false}}},"required":["lessons"],"additionalProperties":false},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1/commerce/offers":{"get":{"operationId":"offers","description":"Read server-configured credit packs and subscriptions with merchant and legal links; unconfigured means no purchasable offers or prices.","deprecated":false,"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"responses":{"200":{"description":"Successful operation.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"status":{"type":"string","const":"configured"},"merchant":{"type":"string","minLength":1,"maxLength":240},"offers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240},"version":{"type":"string","minLength":1,"maxLength":240},"title":{"type":"string","minLength":1,"maxLength":240},"kind":{"type":"string","enum":["credit_pack","subscription"]},"amountCents":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currency":{"type":"string","pattern":"^[a-z]{3}$"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"interval":{"anyOf":[{"type":"string","enum":["month","year"]},{"type":"null"}]}},"required":["id","version","title","kind","amountCents","currency","credits","interval"],"additionalProperties":false}},"termsUrl":{"type":"string","format":"uri"},"privacyUrl":{"type":"string","format":"uri"}},"required":["status","merchant","offers","termsUrl","privacyUrl"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"merchant":{"type":"null"},"offers":{"minItems":0,"maxItems":0,"type":"array","items":{"not":{}}},"termsUrl":{"type":"null"},"privacyUrl":{"type":"null"}},"required":["status","merchant","offers","termsUrl","privacyUrl"],"additionalProperties":false}]},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"401":{"description":"401 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1000,"slug":"auth_required","message":"Sign-in required.","hint":"Sign in with OAuth or use public access.","documentation_url":"https://studiomeyer.academy/v1/errors#auth_required"}],"messages":[],"request_id":"example-request-id"}}}},"402":{"description":"402 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2006,"slug":"premium_required","message":"This content requires a premium entitlement.","hint":"Read the preview and ask for consent before unlocking.","documentation_url":"https://studiomeyer.academy/v1/errors#premium_required"}],"messages":[],"request_id":"example-request-id"}}}},"403":{"description":"403 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1002,"slug":"insufficient_scope","message":"A required permission is missing.","hint":"Reconnect and select the required permissions.","documentation_url":"https://studiomeyer.academy/v1/errors#insufficient_scope"}],"messages":[],"request_id":"example-request-id"}}}},"404":{"description":"404 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1101,"slug":"not_found","message":"The entry was not found.","hint":"Search through /v1/search.","documentation_url":"https://studiomeyer.academy/v1/errors#not_found"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"409":{"description":"409 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1102,"slug":"idempotency_key_reused","message":"The idempotency key belongs to a different request.","hint":"Use a new key for a new action.","documentation_url":"https://studiomeyer.academy/v1/errors#idempotency_key_reused"}],"messages":[],"request_id":"example-request-id"}}}},"410":{"description":"410 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":2007,"slug":"content_dormant","message":"This content is no longer active.","hint":"Check the indicated successor.","documentation_url":"https://studiomeyer.academy/v1/errors#content_dormant"}],"messages":[],"request_id":"example-request-id"}}}},"413":{"description":"413 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"422":{"description":"422 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1106,"slug":"confirmation_required","message":"Explicit confirmation is missing.","hint":"Show the action and send confirmation only after consent.","documentation_url":"https://studiomeyer.academy/v1/errors#confirmation_required"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"500":{"description":"500 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9000,"slug":"internal","message":"A server error occurred.","hint":"Report the error with the request ID.","documentation_url":"https://studiomeyer.academy/v1/errors#internal"}],"messages":[],"request_id":"example-request-id"}}}},"501":{"description":"501 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":9001,"slug":"not_implemented","message":"This feature is not available yet.","hint":"Check the changelog.","documentation_url":"https://studiomeyer.academy/v1/errors#not_implemented"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}},"security":[],"x-academy-input-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"x-academy-output-schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"status":{"type":"string","const":"configured"},"merchant":{"type":"string","minLength":1,"maxLength":240},"offers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240},"version":{"type":"string","minLength":1,"maxLength":240},"title":{"type":"string","minLength":1,"maxLength":240},"kind":{"type":"string","enum":["credit_pack","subscription"]},"amountCents":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currency":{"type":"string","pattern":"^[a-z]{3}$"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"interval":{"anyOf":[{"type":"string","enum":["month","year"]},{"type":"null"}]}},"required":["id","version","title","kind","amountCents","currency","credits","interval"],"additionalProperties":false}},"termsUrl":{"type":"string","format":"uri"},"privacyUrl":{"type":"string","format":"uri"}},"required":["status","merchant","offers","termsUrl","privacyUrl"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"unconfigured"},"merchant":{"type":"null"},"offers":{"minItems":0,"maxItems":0,"type":"array","items":{"not":{}}},"termsUrl":{"type":"null"},"privacyUrl":{"type":"null"}},"required":["status","merchant","offers","termsUrl","privacyUrl"],"additionalProperties":false}]},"x-academy-credit-effect":"none","x-academy-rate-limits":{"limit":120,"windowSeconds":60,"identity":"shared_anonymous","bucket":"academy:anonymous"}}},"/v1":{"get":{"operationId":"document__v1","security":[],"responses":{"200":{"description":"Live machine-readable documentation."},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}}}},"/v1/openapi.json":{"get":{"operationId":"document__v1_openapi_json","security":[],"responses":{"200":{"description":"Live machine-readable documentation."},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}}}},"/v1/errors":{"get":{"operationId":"document__v1_errors","security":[],"responses":{"200":{"description":"Live machine-readable documentation."},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}}}},"/v1/skill.md":{"get":{"operationId":"document__v1_skill_md","security":[],"responses":{"200":{"description":"Live machine-readable documentation."},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}}}},"/v1/schema/package.json":{"get":{"operationId":"document__v1_schema_package_json","security":[],"responses":{"200":{"description":"Live machine-readable documentation."},"400":{"description":"400 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"405":{"description":"405 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1100,"slug":"validation_failed","message":"The input is invalid.","hint":"Correct the fields using the published schema.","documentation_url":"https://studiomeyer.academy/v1/errors#validation_failed"}],"messages":[],"request_id":"example-request-id"}}}},"429":{"description":"429 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":1200,"slug":"rate_limited","message":"The request limit has been reached.","hint":"Wait for the seconds specified by Retry-After.","documentation_url":"https://studiomeyer.academy/v1/errors#rate_limited"}],"messages":[],"request_id":"example-request-id"}}}},"503":{"description":"503 response with the shared ErrorEnvelope. Code or slug identifies the specific error; message and hint are localized.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"result":null,"errors":[{"code":4006,"slug":"outcome_unknown","message":"The outcome of the action is unknown.","hint":"Check /v1/me/credits/ledger first and avoid duplicate requests.","documentation_url":"https://studiomeyer.academy/v1/errors#outcome_unknown"}],"messages":[],"request_id":"example-request-id"}}}}}}},"/checkout_sessions":{"get":{"operationId":"describeCheckout_checkout_sessionsGET","tags":["AgenticCheckout"],"description":"Public Academy payment readiness. Remains available while no offers are approved. Configuration readiness is not external provider health or payment success.","security":[],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","const":"2026-04-17"}},{"name":"Request-Id","in":"header","schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Native response, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentReadiness"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17"},"head":{"operationId":"describeCheckout_checkout_sessionsHEAD","tags":["AgenticCheckout"],"description":"Public Academy payment readiness. Remains available while no offers are approved. Configuration readiness is not external provider health or payment success.","security":[],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","const":"2026-04-17"}},{"name":"Request-Id","in":"header","schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Native response, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17"},"options":{"operationId":"preflightCheckout_checkout_sessionsOPTIONS","tags":["AgenticCheckout"],"description":"Bearer-only CORS preflight. Cookies never authorize checkout. Only declared methods and headers are allowed.","security":[],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}}],"responses":{"204":{"description":"Allowed preflight, no body.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17"},"post":{"operationId":"createCheckoutSession","tags":["AgenticCheckout"],"description":"ACP 2026-04-17 hosted Stripe checkout. An explicitly consented OAuth grant prepares a server-priced purchase; the human must confirm at Stripe. Completion verifies the original payment and delivery. No delegated card, vault, AP2 or x402 payment is supported.","security":[{"OAuth":["credits:spend"]}],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"API-Version","in":"header","required":true,"schema":{"type":"string","const":"2026-04-17"}},{"name":"Request-Id","in":"header","schema":{"type":"string","maxLength":128}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[!-~]+$"},"description":"Durably bound to this owner's payload and grant. Reuse exactly for retries, including an unknown outcome. Never substitute a new purchase key after a timeout."}],"responses":{"201":{"description":"Native response, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Idempotency-Key":{"schema":{"type":"string"}},"Location":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSession"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutCreate"}}}}}},"/checkout_sessions/{checkout_session_id}":{"get":{"operationId":"retrieveCheckoutSession","tags":["AgenticCheckout"],"description":"ACP 2026-04-17 hosted Stripe checkout. An explicitly consented OAuth grant prepares a server-priced purchase; the human must confirm at Stripe. Completion verifies the original payment and delivery. No delegated card, vault, AP2 or x402 payment is supported.","security":[{"OAuth":["learn:read"]}],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"checkout_session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"API-Version","in":"header","required":true,"schema":{"type":"string","const":"2026-04-17"}},{"name":"Request-Id","in":"header","schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Native response, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSession"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17"},"post":{"operationId":"updateCheckoutSession","tags":["AgenticCheckout"],"description":"ACP 2026-04-17 hosted Stripe checkout. An explicitly consented OAuth grant prepares a server-priced purchase; the human must confirm at Stripe. Completion verifies the original payment and delivery. No delegated card, vault, AP2 or x402 payment is supported.","security":[{"OAuth":["credits:spend"]}],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"checkout_session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"API-Version","in":"header","required":true,"schema":{"type":"string","const":"2026-04-17"}},{"name":"Request-Id","in":"header","schema":{"type":"string","maxLength":128}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[!-~]+$"},"description":"Durably bound to this owner's payload and grant. Reuse exactly for retries, including an unknown outcome. Never substitute a new purchase key after a timeout."}],"responses":{"200":{"description":"Native response, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Idempotency-Key":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSession"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutUpdate"}}}}},"head":{"operationId":"describeCheckout_checkout_sessions__checkout_session_id_HEAD","tags":["AgenticCheckout"],"description":"ACP 2026-04-17 hosted Stripe checkout. An explicitly consented OAuth grant prepares a server-priced purchase; the human must confirm at Stripe. Completion verifies the original payment and delivery. No delegated card, vault, AP2 or x402 payment is supported.","security":[{"OAuth":["learn:read"]}],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"checkout_session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"API-Version","in":"header","required":true,"schema":{"type":"string","const":"2026-04-17"}},{"name":"Request-Id","in":"header","schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Native response, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17"},"options":{"operationId":"preflightCheckout_checkout_sessions__checkout_session_id_OPTIONS","tags":["AgenticCheckout"],"description":"Bearer-only CORS preflight. Cookies never authorize checkout. Only declared methods and headers are allowed.","security":[],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"checkout_session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Allowed preflight, no body.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17"}},"/checkout_sessions/{checkout_session_id}/complete":{"post":{"operationId":"completeCheckoutSession","tags":["AgenticCheckout"],"description":"ACP 2026-04-17 hosted Stripe checkout. An explicitly consented OAuth grant prepares a server-priced purchase; the human must confirm at Stripe. Completion verifies the original payment and delivery. No delegated card, vault, AP2 or x402 payment is supported.","security":[{"OAuth":["credits:spend"]}],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"checkout_session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"API-Version","in":"header","required":true,"schema":{"type":"string","const":"2026-04-17"}},{"name":"Request-Id","in":"header","schema":{"type":"string","maxLength":128}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[!-~]+$"},"description":"Durably bound to this owner's payload and grant. Reuse exactly for retries, including an unknown outcome. Never substitute a new purchase key after a timeout."}],"responses":{"200":{"description":"Native response, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Idempotency-Key":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CheckoutSession"},{"type":"object","required":["order"]}]}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutComplete"}}}}},"options":{"operationId":"preflightCheckout_checkout_sessions__checkout_session_id__completeOPTIONS","tags":["AgenticCheckout"],"description":"Bearer-only CORS preflight. Cookies never authorize checkout. Only declared methods and headers are allowed.","security":[],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"checkout_session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Allowed preflight, no body.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17"}},"/checkout_sessions/{checkout_session_id}/cancel":{"post":{"operationId":"cancelCheckoutSession","tags":["AgenticCheckout"],"description":"ACP 2026-04-17 hosted Stripe checkout. An explicitly consented OAuth grant prepares a server-priced purchase; the human must confirm at Stripe. Completion verifies the original payment and delivery. No delegated card, vault, AP2 or x402 payment is supported.","security":[{"OAuth":["credits:spend"]}],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"checkout_session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"API-Version","in":"header","required":true,"schema":{"type":"string","const":"2026-04-17"}},{"name":"Request-Id","in":"header","schema":{"type":"string","maxLength":128}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[!-~]+$"},"description":"Durably bound to this owner's payload and grant. Reuse exactly for retries, including an unknown outcome. Never substitute a new purchase key after a timeout."}],"responses":{"200":{"description":"Native response, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Idempotency-Key":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSession"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutCancel"}}}}},"options":{"operationId":"preflightCheckout_checkout_sessions__checkout_session_id__cancelOPTIONS","tags":["AgenticCheckout"],"description":"Bearer-only CORS preflight. Cookies never authorize checkout. Only declared methods and headers are allowed.","security":[],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"checkout_session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Allowed preflight, no body.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}}},"400":{"description":"400 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"401":{"description":"401 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"403":{"description":"403 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"404":{"description":"404 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"405":{"description":"405 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"409":{"description":"409 native ACP error, without the Academy REST envelope. Conflict or an in-flight operation; do not start another charge.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"413":{"description":"413 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"415":{"description":"415 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"422":{"description":"422 native ACP error, without the Academy REST envelope. An idempotency key was reused with a different payload.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"429":{"description":"429 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"500":{"description":"500 native ACP error, without the Academy REST envelope.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}},"503":{"description":"503 native ACP error, without the Academy REST envelope. Configuration unavailable, store outage or unknown outcome; inspect readiness and retry the same operation key.","headers":{"API-Version":{"required":true,"schema":{"type":"string","const":"2026-04-17"}},"Request-Id":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"required":true,"schema":{"type":"string","const":"*"}},"Access-Control-Allow-Methods":{"required":true,"schema":{"type":"string"}},"Access-Control-Allow-Headers":{"required":true,"schema":{"type":"string"}},"Allow":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutError"}}}}},"x-academy-payment-mode":"human_hosted_checkout","x-acp-api-version":"2026-04-17"}},"/v1/me/tutor/jobs":{"post":{"operationId":"enqueueTutorJob","tags":["Jobs"],"description":"Queue the existing tutor operation durably. Requires the same persistent quote, browser approval and explicit OAuth spending grant. The original Idempotency-Key is reused by the synchronous tutor service. No credits are spent by enqueue. Queue expires within 15 minutes or earlier when quote, approval or token expires. Requires configured authenticated worker and AES-GCM encryption. Unknown execution is never automatically rerun.","security":[{"OAuth":["learn:write","credits:spend"]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"slug":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[a-z0-9][a-z0-9_.-]*$"},"message":{"type":"string","minLength":1,"maxLength":2000},"consent":{"type":"object","properties":{"userConfirmed":{"type":"boolean","const":true},"quoteId":{"type":"string","minLength":1,"maxLength":240},"maximumCredits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["userConfirmed","quoteId","maximumCredits"],"additionalProperties":false}},"required":["level","slug","message","consent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Idempotent replay of an existing terminal job.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"const":true},"result":{"$ref":"#/components/schemas/TutorJob"},"errors":{"type":"array","maxItems":0},"messages":{"type":"array"},"request_id":{"type":"string"}}}}}},"202":{"description":"Job is durably queued/running. Poll Location, observing Retry-After.","headers":{"Location":{"description":"Durable owner/grant-bound job status URL.","schema":{"type":"string"}},"Retry-After":{"description":"Polling delay in seconds.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"const":true},"result":{"$ref":"#/components/schemas/TutorJob"},"errors":{"type":"array","maxItems":0},"messages":{"type":"array"},"request_id":{"type":"string"}}}}}},"400":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"503":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/v1/jobs/{id}":{"get":{"operationId":"getTutorJob","tags":["Jobs"],"description":"Read-only polling. Revalidates current OAuth revocation, REST audience, both tutor scopes and exact owner+grant binding. Foreign or expired jobs are 404. Results retained for one hour, then removed. Failed jobs include the shared error; outcome_unknown must be reconciled from the original ledger/operation, never retried with a new key.","security":[{"OAuth":["learn:write","credits:spend"]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"queued, running, succeeded or failed with result/error. Pending jobs supply Retry-After.","headers":{"Retry-After":{"description":"Polling delay in seconds.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"const":true},"result":{"$ref":"#/components/schemas/TutorJob"},"errors":{"type":"array","maxItems":0},"messages":{"type":"array"},"request_id":{"type":"string"}}}}}},"400":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"503":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/v1/jobs":{"get":{"operationId":"describeTutorJobs","tags":["Jobs"],"description":"Public job capabilities; never lists private jobs. Configuration flags do not prove worker/provider health.","security":[],"responses":{"200":{"description":"Durable tutor job capability metadata.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"const":true},"result":{"type":"object"},"errors":{"type":"array","maxItems":0},"messages":{"type":"array"},"request_id":{"type":"string"}}}}}}}}},"/v1/batch":{"post":{"operationId":"batchPublicItems","tags":["Batch"],"description":"Fetch 1 to 20 public item IDs through the real fetch operation, always as anonymous. Four concurrent reads bound backend fan-out; 20 bounds response size and per-request work. No client-selected operations, writes, personal data or spending. Each item includes status/result/error in input order.","security":[],"parameters":[{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"],"default":"de"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9:_.-]*$"}},"required":["id"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"responses":{"200":{"description":"Per-item public read results, including individual errors.","content":{"application/json":{"schema":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"const":true},"result":{"type":"object","required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","required":["id","status","result","error"],"properties":{"id":{"type":"string"},"status":{"type":"integer"},"result":{},"error":{"anyOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"null"}]}}}}}},"errors":{"type":"array","maxItems":0},"messages":{"type":"array"},"request_id":{"type":"string"}}}}}},"400":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"503":{"description":"Shared Academy error envelope. Unknown outcome stays blocked; never retry with another operation key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/ask":{"get":{"operationId":"nlwebAskGet","summary":"Search public free learning resources using NLWeb0.55","security":[],"parameters":[{"name":"query.text","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":2000}},{"name":"locale","in":"query","schema":{"type":"string","enum":["de","en","es"]}},{"name":"prefer.limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":5}},{"name":"prefer.streaming","in":"query","schema":{"type":"boolean","default":false}},{"name":"Accept","in":"header","schema":{"type":"string"}},{"name":"Accept-Language","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Public lexical search. NO_RESULTS is an application-level failure with HTTP200. Streaming requires prefer.streaming=true plus Accept:text/event-stream; events are start, result(index,item)*, error on failure, complete with final _meta. No generated answer, tutor, purchase or account access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}},"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query, protocol version, response_format or mode.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"403":{"description":"Rejected CORS preflight.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"405":{"description":"Method not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"406":{"description":"Streaming requested without acceptable text/event-stream.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"413":{"description":"Request body exceeds 256KiB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"415":{"description":"POST requires application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"429":{"description":"Shared anonymous read rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}},"headers":{"Retry-After":{"schema":{"type":"string"}}}},"503":{"description":"Public search or limiter unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"504":{"description":"Search timed out.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}}}},"post":{"operationId":"nlwebAsk","summary":"Submit a public search-only NLWeb0.55 query","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":2000},"language":{"type":"string","enum":["de","en","es"]}},"required":["text"],"additionalProperties":false},"prefer":{"type":"object","properties":{"streaming":{"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":20},"mode":{"type":"string","maxLength":100},"response_format":{"type":"string","maxLength":100},"accept-language":{"type":"string","enum":["de","en","es"]}},"additionalProperties":false},"meta":{"type":"object","properties":{"version":{"type":"string","maxLength":20}},"additionalProperties":false}},"required":["query"],"additionalProperties":false}}}},"responses":{"200":{"description":"Public lexical search. NO_RESULTS is an application-level failure with HTTP200. Streaming requires prefer.streaming=true plus Accept:text/event-stream; events are start, result(index,item)*, error on failure, complete with final _meta. No generated answer, tutor, purchase or account access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}},"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query, protocol version, response_format or mode.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"403":{"description":"Rejected CORS preflight.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"405":{"description":"Method not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"406":{"description":"Streaming requested without acceptable text/event-stream.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"413":{"description":"Request body exceeds 256KiB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"415":{"description":"POST requires application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"429":{"description":"Shared anonymous read rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}},"headers":{"Retry-After":{"schema":{"type":"string"}}}},"503":{"description":"Public search or limiter unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}},"504":{"description":"Search timed out.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}}}},"options":{"operationId":"nlwebAskPreflight","security":[],"responses":{"204":{"description":"Public CORS preflight with GET,POST,OPTIONS; no cookie credentials."},"403":{"description":"Rejected CORS preflight.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NlwebResponse"}}}}}}},"/schemamap.xml":{"get":{"operationId":"nlwebSchemaMap","security":[],"responses":{"200":{"description":"SchemaFeeds0.1 XML map.","content":{"application/xml":{"schema":{"type":"string"}}}}}}},"/schema/recipes.jsonl":{"get":{"operationId":"nlwebSchemaFeed","security":[],"responses":{"200":{"description":"One existing free recipeJsonLd HowTo object per UTF-8 JSONL line; no private or premium records.","content":{"application/x-ndjson":{"schema":{"type":"string"}}}}}}}},"components":{"securitySchemes":{"OAuth":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://mcp.studiomeyer.academy/authorize","tokenUrl":"https://mcp.studiomeyer.academy/token","scopes":{"learn:read":"Read your learning records","learn:write":"Change your learning records","credits:spend":"Spend credits only with explicit confirmation and an idempotency key"}}}},"PersonalApiKey":{"type":"http","scheme":"bearer","description":"Personal academy_ key. Read/write only; cannot spend credits."}},"headers":{"RequestId":{"description":"Request identifier; matches request_id in the JSON response body.","required":true,"schema":{"type":"string","minLength":1}},"RetryAfter":{"description":"Seconds to wait before retrying the rate-limited request.","required":true,"schema":{"type":"integer","minimum":1}},"WwwAuthenticate":{"description":"Bearer challenge with protected-resource metadata and required scopes.","required":true,"schema":{"type":"string"}},"Allow":{"description":"HTTP methods allowed for this resource.","required":true,"schema":{"type":"string"}},"RateLimitLimit":{"description":"Request limit for the selected shared bucket.","required":true,"schema":{"type":"integer","minimum":1}},"RateLimitRemaining":{"description":"Requests remaining in the current window.","required":true,"schema":{"type":"integer","minimum":0}},"RateLimitReset":{"description":"Seconds until the current window resets.","required":true,"schema":{"type":"integer","minimum":1}}},"schemas":{"CheckoutCreate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"line_items":{"minItems":1,"maxItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240},"name":{"type":"string","maxLength":240},"unit_amount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id"],"additionalProperties":false}},"currency":{"type":"string","pattern":"^[a-z]{3}$"},"capabilities":{"type":"object","properties":{},"additionalProperties":{}},"buyer":{"type":"object","properties":{"first_name":{"type":"string","maxLength":200},"last_name":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"additionalProperties":false},"locale":{"type":"string","enum":["de","en","es"]}},"required":["line_items","currency","capabilities"],"additionalProperties":false},"CheckoutUpdate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"line_items":{"minItems":1,"maxItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240},"name":{"type":"string","maxLength":240},"unit_amount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id"],"additionalProperties":false}},"buyer":{"type":"object","properties":{"first_name":{"type":"string","maxLength":200},"last_name":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"additionalProperties":false}},"additionalProperties":false},"CheckoutComplete":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"payment_data":{"type":"object","properties":{"handler_id":{"type":"string","const":"academy.hosted_stripe"},"instrument":{"type":"object","properties":{"type":{"type":"string","const":"hosted_checkout"},"credential":{"type":"object","properties":{"type":{"type":"string","const":"checkout_session"},"token":{"type":"string","minLength":1,"maxLength":240}},"required":["type","token"],"additionalProperties":false}},"required":["type","credential"],"additionalProperties":false}},"required":["handler_id","instrument"],"additionalProperties":false},"buyer":{"type":"object","properties":{"first_name":{"type":"string","maxLength":200},"last_name":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"additionalProperties":false}},"required":["payment_data"],"additionalProperties":false},"CheckoutCancel":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"CheckoutSession":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"protocol":{"type":"object","properties":{"version":{"type":"string","const":"2026-04-17"}},"required":["version"],"additionalProperties":false},"status":{"type":"string","enum":["completed","canceled","expired","complete_in_progress","not_ready_for_payment","requires_escalation"]},"currency":{"type":"string"},"locale":{"type":"string","enum":["de","en","es"]},"buyer":{"type":"object","properties":{"first_name":{"type":"string","maxLength":200},"last_name":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"additionalProperties":false},"metadata":{"type":"object","properties":{"payment_mode":{"type":"string","const":"human_hosted_checkout"},"payment_handler":{"type":"string","const":"academy.hosted_stripe"},"hosted_checkout_session_id":{"type":["string","null"]}},"required":["payment_mode","payment_handler","hosted_checkout_session_id"],"additionalProperties":false},"line_items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"item":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":240},"name":{"type":"string","maxLength":240},"unit_amount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id"],"additionalProperties":false},"quantity":{"type":"number","const":1},"totals":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["subtotal","total"]},"display_text":{"type":"string"},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","display_text","amount"],"additionalProperties":false}}},"required":["id","item","quantity","totals"],"additionalProperties":false}},"totals":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["subtotal","total"]},"display_text":{"type":"string"},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","display_text","amount"],"additionalProperties":false}},"fulfillment_options":{"type":"array","items":{"not":{}}},"messages":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"info"},"content_type":{"type":"string","const":"plain"},"content":{"type":"string"},"resolution":{"type":"string","const":"requires_buyer_review"}},"required":["type","content_type","content","resolution"],"additionalProperties":false}},"links":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["terms_of_use","privacy_policy"]},"url":{"type":"string","format":"uri"}},"required":["type","url"],"additionalProperties":false}},"capabilities":{"type":"object","properties":{},"additionalProperties":false},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"continue_url":{"type":"string","format":"uri"},"order":{"type":"object","properties":{"id":{"type":"string"},"checkout_session_id":{"type":"string"},"permalink_url":{"type":"string","format":"uri"},"status":{"type":"string","const":"completed"}},"required":["id","checkout_session_id","permalink_url","status"],"additionalProperties":false}},"required":["id","protocol","status","currency","locale","metadata","line_items","totals","fulfillment_options","messages","links","capabilities","created_at","updated_at","expires_at"],"additionalProperties":false},"CheckoutError":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string","enum":["invalid_request","processing_error","service_unavailable"]},"code":{"type":"string"},"message":{"type":"string"},"supported_versions":{"type":"array","items":{"type":"string","const":"2026-04-17"}}},"required":["type","code","message"],"additionalProperties":false},"PaymentReadiness":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"protocol":{"type":"string","const":"acp"},"api_version":{"type":"string","const":"2026-04-17"},"endpoint":{"type":"string","format":"uri"},"specification":{"type":"string","format":"uri"},"openapi":{"type":"string","format":"uri"},"offers":{"type":"string","format":"uri"},"payment_mode":{"type":"string","const":"human_hosted_checkout"},"status":{"type":"string","enum":["awaiting_approved_offers","configuration_required","configured"]},"purchases_enabled":{"type":"boolean"},"approved_offer_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"readiness_basis":{"type":"string","const":"configuration_only"},"blocked_by":{"type":"array","items":{"type":"string","enum":["approved_offers","payment_provider","durable_store"]}},"human_confirmation_required":{"type":"boolean","const":true},"delegated_payment":{"type":"boolean","const":false},"authentication":{"type":"object","properties":{"type":{"type":"string","const":"oauth2_bearer"},"resource":{"type":"string","format":"uri"},"read_scopes":{"type":"array","items":{"type":"string","const":"learn:read"}},"write_scopes":{"type":"array","items":{"type":"string","const":"credits:spend"}},"cookies_authorize_checkout":{"type":"boolean","const":false}},"required":["type","resource","read_scopes","write_scopes","cookies_authorize_checkout"],"additionalProperties":false},"required_mutation_headers":{"type":"array","items":{"type":"string"}},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["id","method","path"],"additionalProperties":false}}},"required":["protocol","api_version","endpoint","specification","openapi","offers","payment_mode","status","purchases_enabled","approved_offer_count","readiness_basis","blocked_by","human_confirmation_required","delegated_payment","authentication","required_mutation_headers","operations"],"additionalProperties":false},"ApiError":{"type":"object","description":"Stable Academy error. Branch on code or slug, never on the localized message or hint.","required":["code","slug","message","hint","documentation_url"],"properties":{"code":{"type":"integer","enum":[1000,1001,1002,1003,1004,1005,1100,1101,1102,1103,1104,1105,1106,1107,1200,1201,2001,2002,2003,2004,2005,2006,2007,3001,3002,3003,4002,4003,4004,4005,4006,5001,5002,5003,5004,5005,5006,9000,9001,9002]},"slug":{"type":"string","enum":["auth_required","invalid_token","insufficient_scope","credits_spend_not_granted","account_suspended","session_required","validation_failed","not_found","idempotency_key_reused","conflict","idempotency_key_required","idempotency_in_flight","confirmation_required","locale_not_supported","rate_limited","tutor_limit_reached","path_not_found","module_not_found","lesson_not_found","library_item_not_found","content_type_unknown","premium_required","content_dormant","lesson_already_completed","quiz_not_available","note_not_found","insufficient_credits","bonus_credits_not_allowed","already_unlocked","price_changed","outcome_unknown","package_not_found","draft_consent_required","package_deprecated","lockfile_invalid","local_changes_detected","script_consent_required","internal","not_implemented","temporarily_unavailable"]},"message":{"type":"string","minLength":1},"hint":{"type":"string","minLength":1},"documentation_url":{"type":"string","format":"uri"},"details":{"type":"object"}}},"Envelope":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean"},"result":{"anyOf":[{},{"type":"null"}]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}}},"ErrorEnvelope":{"type":"object","required":["success","result","errors","messages","request_id"],"properties":{"success":{"type":"boolean","const":false},"result":{"type":"null"},"errors":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/ApiError"}},"messages":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["rel","method","href"],"properties":{"rel":{"type":"string"},"method":{"type":"string"},"href":{"type":"string"}}}},"result_info":{"type":"object","required":["cursor","has_more","count"],"properties":{"cursor":{"type":["string","null"]},"has_more":{"type":"boolean"},"count":{"type":"integer"}}}},"description":"Failed Academy request. Exactly the same envelope is returned for REST transport and service errors, including Markdown requests."},"TutorJob":{"type":"object","required":["job_id","status","status_url","created_at","expires_at"],"properties":{"job_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","running","succeeded","failed"]},"status_url":{"type":"string","pattern":"^/v1/jobs/"},"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"},"result":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"messageId":{"type":"string"},"response":{"type":"string"},"ledgerEntryId":{"type":"string"}},"required":["messageId","response","ledgerEntryId"],"additionalProperties":false,"description":"Tutor result after success; same schema and ledgerEntryId as synchronous tutor."},"error":{"$ref":"#/components/schemas/ApiError"}}},"NlwebResponse":{"type":"object","required":["_meta","results"],"properties":{"_meta":{"type":"object","required":["response_type","version","response_format"],"properties":{"response_type":{"type":"string","enum":["answer","failure"]},"version":{"type":"string","const":"0.55"},"response_format":{"type":"string","const":"conversational_search"},"streaming":{"type":"boolean","const":true}}},"results":{"type":"array","items":{"type":"object","required":["@context","@type","url","name","description","inLanguage","isAccessibleForFree"],"properties":{"@context":{"type":"string","const":"https://schema.org"},"@type":{"type":"string","enum":["LearningResource","DefinedTerm"]},"url":{"type":"string","format":"uri"},"name":{"type":"string"},"description":{"type":"string"},"inLanguage":{"type":"string","enum":["de","en","es"]},"isAccessibleForFree":{"type":"boolean","const":true}},"additionalProperties":false},"maxItems":20},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["NO_RESULTS","INVALID_QUERY","UNSUPPORTED_FORMAT","UNSUPPORTED_MODE","RATE_LIMITED","INTERNAL_ERROR","TIMEOUT"]},"message":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}}}}