{"openapi":"3.1.0","info":{"title":"ccpp API","version":"0.1.0","description":"Accounts and profiles of ccpp.dev. The `ccpp account` CLI commands use this API and keep their token in `~/.ccpp/account.json`."},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Error":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}},"Account":{"type":"object","required":["id","email","name","emailVerified","emailVerifiedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"emailVerified":{"type":"boolean","description":"Whether the email address was confirmed. Not required to use the account yet."},"emailVerifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Token":{"type":"object","required":["id","name","createdAt","expiresAt","lastUsedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}}},"IssuedToken":{"type":"object","required":["token","info","account"],"properties":{"token":{"type":"string","description":"Bearer secret. Shown once; store it in ~/.ccpp/account.json."},"info":{"type":"object","required":["id","name","createdAt","expiresAt","lastUsedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}}},"account":{"type":"object","required":["id","email","name","emailVerified","emailVerifiedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"emailVerified":{"type":"boolean","description":"Whether the email address was confirmed. Not required to use the account yet."},"emailVerifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"Profile":{"type":"object","required":["username","name","bio","avatarUrl","websiteUrl","location","createdAt","updatedAt"],"properties":{"username":{"type":"string"},"name":{"type":"string","description":"The account's display name."},"bio":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}],"description":"Image URL; uploads are not supported yet."},"websiteUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"location":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"paths":{"/health":{"get":{"summary":"Liveness probe","tags":["system"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["ok"]}}}}}}}}},"/v1/accounts":{"post":{"summary":"Create an account","tags":["accounts"],"description":"With `username`, the account is created with its public profile.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","name","password"],"properties":{"email":{"type":"string","format":"email","maxLength":254},"name":{"type":"string","minLength":1,"maxLength":100},"password":{"type":"string","minLength":10,"maxLength":256},"username":{"type":"string","minLength":1,"maxLength":39,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]{0,37}[A-Za-z0-9])?$","description":"Letters, digits and inner hyphens; stored in lowercase."}},"additionalProperties":false}}}},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["id","email","name","emailVerified","emailVerifiedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"emailVerified":{"type":"boolean","description":"Whether the email address was confirmed. Not required to use the account yet."},"emailVerifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}}},"/v1/account":{"get":{"summary":"Read the current account","tags":["accounts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["id","email","name","emailVerified","emailVerifiedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"emailVerified":{"type":"boolean","description":"Whether the email address was confirmed. Not required to use the account yet."},"emailVerifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}},"patch":{"summary":"Update the current account","tags":["accounts"],"description":"Changing `password` requires `currentPassword`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":254},"name":{"type":"string","minLength":1,"maxLength":100},"password":{"type":"string","minLength":10,"maxLength":256},"currentPassword":{"type":"string","maxLength":256}},"additionalProperties":false,"minProperties":1}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["id","email","name","emailVerified","emailVerifiedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"emailVerified":{"type":"boolean","description":"Whether the email address was confirmed. Not required to use the account yet."},"emailVerifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}},"delete":{"summary":"Delete the current account and all its tokens","tags":["accounts"],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}}},"/v1/tokens":{"post":{"summary":"Log in: exchange email and password for a bearer token","tags":["tokens"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","password","name"],"properties":{"email":{"type":"string","format":"email","maxLength":254},"password":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"default":"ccpp CLI"}},"additionalProperties":false}}}},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["token","info","account"],"properties":{"token":{"type":"string","description":"Bearer secret. Shown once; store it in ~/.ccpp/account.json."},"info":{"type":"object","required":["id","name","createdAt","expiresAt","lastUsedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}}},"account":{"type":"object","required":["id","email","name","emailVerified","emailVerifiedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"emailVerified":{"type":"boolean","description":"Whether the email address was confirmed. Not required to use the account yet."},"emailVerifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}},"get":{"summary":"List the tokens of the current account","tags":["tokens"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["id","name","createdAt","expiresAt","lastUsedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}}},"/v1/tokens/current":{"delete":{"summary":"Log out: revoke the token used by this request","tags":["tokens"],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}}},"/v1/tokens/{id}":{"delete":{"summary":"Revoke a token of the current account","tags":["tokens"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}}},"/v1/profiles/{username}":{"get":{"summary":"Read a public profile","tags":["profiles"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":39},"in":"path","name":"username","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["username","name","bio","avatarUrl","websiteUrl","location","createdAt","updatedAt"],"properties":{"username":{"type":"string"},"name":{"type":"string","description":"The account's display name."},"bio":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}],"description":"Image URL; uploads are not supported yet."},"websiteUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"location":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}}},"/v1/profile":{"post":{"summary":"Create the profile of the current account","tags":["profiles"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["username"],"properties":{"username":{"type":"string","minLength":1,"maxLength":39,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]{0,37}[A-Za-z0-9])?$","description":"Letters, digits and inner hyphens; stored in lowercase."},"bio":{"type":"string","maxLength":500},"avatarUrl":{"anyOf":[{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048},{"type":"null"}]},"websiteUrl":{"anyOf":[{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048},{"type":"null"}]},"location":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]}},"additionalProperties":false}}}},"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["username","name","bio","avatarUrl","websiteUrl","location","createdAt","updatedAt"],"properties":{"username":{"type":"string"},"name":{"type":"string","description":"The account's display name."},"bio":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}],"description":"Image URL; uploads are not supported yet."},"websiteUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"location":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}},"get":{"summary":"Read the profile of the current account","tags":["profiles"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["username","name","bio","avatarUrl","websiteUrl","location","createdAt","updatedAt"],"properties":{"username":{"type":"string"},"name":{"type":"string","description":"The account's display name."},"bio":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}],"description":"Image URL; uploads are not supported yet."},"websiteUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"location":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}},"patch":{"summary":"Update the profile of the current account","tags":["profiles"],"description":"`name` changes the account's display name; `null` clears `avatarUrl`, `websiteUrl` or `location`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","minLength":1,"maxLength":39,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]{0,37}[A-Za-z0-9])?$","description":"Letters, digits and inner hyphens; stored in lowercase."},"name":{"type":"string","minLength":1,"maxLength":100},"bio":{"type":"string","maxLength":500},"avatarUrl":{"anyOf":[{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048},{"type":"null"}]},"websiteUrl":{"anyOf":[{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048},{"type":"null"}]},"location":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]}},"additionalProperties":false,"minProperties":1}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["username","name","bio","avatarUrl","websiteUrl","location","createdAt","updatedAt"],"properties":{"username":{"type":"string"},"name":{"type":"string","description":"The account's display name."},"bio":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}],"description":"Image URL; uploads are not supported yet."},"websiteUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"location":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}},"delete":{"summary":"Delete the profile of the current account (the account stays)","tags":["profiles"],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error","message","requestId"],"properties":{"error":{"type":"string","description":"Stable machine-readable code."},"message":{"type":"string"},"requestId":{"type":"string"}}}}}}}}}},"servers":[{"url":"https://api.ccpp.dev"}],"tags":[{"name":"accounts","description":"Create, read, update and delete your account."},{"name":"tokens","description":"Log in and out; manage the bearer tokens of your account."},{"name":"profiles","description":"Create, read, update and delete your public profile; read others' profiles."}]}