{"openapi":"3.1.0","info":{"title":"monoban API","version":"d461362"},"servers":[{"url":"https://api.monoban.dev"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"A Supabase session token (web), a monoban CLI token (mbn_at_…) or a personal access token (mbn_pat_…)."}},"schemas":{"Health":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"version":{"type":"string"}},"required":["ok","version"]},"Problem":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"code":{"type":"string","enum":["unauthorized","forbidden","invalid_request","not_found","conflict","precondition_failed","idempotency_key_reused","rate_limited","upgrade_required","method_not_allowed","payload_too_large","unavailable","internal","invalid_grant","authorization_pending","slow_down","access_denied","expired_token","email_mismatch","account_deleted","unsupported_email","email_not_sent"],"description":"Stable error code; branch on this, not on the text"},"detail":{"type":"string"},"requestId":{"type":"string"},"issues":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["type","title","status","code","detail","requestId"]},"DeleteAccount":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","example":"ada@example.com"}},"required":["email"],"additionalProperties":false},"Me":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":["string","null"]},"projects":{"type":"integer","description":"How many projects you own"}},"required":["id","email","projects"]},"Project":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"key":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$"},"name":{"type":"string"},"description":{"type":"string"},"icon":{"type":["string","null"]},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"taskCount":{"type":"integer","minimum":0},"repo":{"type":["string","null"]},"openNewTasks":{"type":"boolean"},"archiveAfterDays":{"type":["integer","null"],"minimum":1,"maximum":365},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","key","name","description","icon","color","position","version","taskCount","repo","openNewTasks","archiveAfterDays","createdAt","updatedAt"]},"ProjectCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"pattern":"^[^\\u0000]*$"},"key":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$"},"description":{"type":"string","maxLength":280,"pattern":"^[^\\u0000]*$"},"icon":{"type":["string","null"],"minLength":1,"maxLength":16,"description":"One emoji or one visible character"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]},"repo":{"type":["string","null"],"pattern":"^github\\.com\\/[A-Za-z0-9][A-Za-z0-9-]{0,38}\\/[A-Za-z0-9._-]{1,100}$","example":"github.com/thiagodmont/monoban"},"locale":{"type":"string","maxLength":35,"description":"A language tag (en-US, pt-BR): the language its first columns are named in. English when left out or unknown.","examples":["pt-BR"]}},"required":["name"],"additionalProperties":false},"Column":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"wipLimit":{"type":["integer","null"],"exclusiveMinimum":0}},"required":["id","name","color","position","version","wipLimit"]},"ProjectPatch":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"pattern":"^[^\\u0000]*$"},"description":{"type":"string","maxLength":280,"pattern":"^[^\\u0000]*$"},"icon":{"type":["string","null"],"minLength":1,"maxLength":16,"description":"One emoji or one visible character"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"},"repo":{"type":["string","null"],"pattern":"^github\\.com\\/[A-Za-z0-9][A-Za-z0-9-]{0,38}\\/[A-Za-z0-9._-]{1,100}$","example":"github.com/thiagodmont/monoban"},"openNewTasks":{"type":"boolean"},"archiveAfterDays":{"type":["integer","null"],"minimum":1,"maximum":365}},"additionalProperties":false,"minProperties":1},"Board":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"},"columns":{"type":"array","items":{"$ref":"#/components/schemas/Column"}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/Task"}},"archived":{"type":"integer","minimum":0},"archivedIn":{"type":"object","additionalProperties":{"type":"integer","exclusiveMinimum":0}},"truncated":{"type":"boolean"},"version":{"type":"string","pattern":"^\\d+$","example":"42"}},"required":["project","columns","tags","tasks","archived","archivedIn","truncated","version"]},"Tag":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]},"project":{"type":["string","null"],"pattern":"^[A-Z][A-Z0-9]{1,4}$"},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"taskCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","color","project","version","taskCount","createdAt"]},"Task":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"ref":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0},"columnId":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string"},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"},"tagIds":{"type":"array","items":{"type":"string","format":"uuid"}},"links":{"type":"array","items":{"$ref":"#/components/schemas/TaskLink"}},"scheduledOn":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12"},"columnSince":{"type":"string","format":"date-time"},"archivedAt":{"type":["string","null"],"format":"date-time"},"archiveReason":{"type":["string","null"]},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","ref","number","columnId","title","description","position","tagIds","links","scheduledOn","columnSince","archivedAt","archiveReason","version","createdAt","updatedAt"]},"TaskLink":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string"},"kind":{"type":"string","enum":["pr","issue","commit","url"]},"title":{"type":"string"},"state":{"type":["string","null"],"enum":["open","draft","merged","closed",null]},"repo":{"type":["string","null"]},"number":{"type":["integer","null"],"exclusiveMinimum":0},"checkedAt":{"type":["string","null"],"format":"date-time"},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","url","kind","title","state","repo","number","checkedAt","version","createdAt"]},"ColumnCreate":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[^\\u0000]*$"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]},"wipLimit":{"type":["integer","null"],"minimum":1,"maximum":999},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"}},"required":["name"],"additionalProperties":false},"ColumnPatch":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[^\\u0000]*$"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]},"wipLimit":{"type":["integer","null"],"minimum":1,"maximum":999},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"}},"additionalProperties":false,"minProperties":1},"ColumnDeleted":{"type":"object","properties":{"movedTo":{"type":"string","format":"uuid"},"moved":{"type":"integer","minimum":0}},"required":["movedTo","moved"]},"TaskCreate":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000]*$"},"description":{"type":"string","maxLength":20000,"pattern":"^[^\\u0000]*$"},"columnId":{"type":"string","format":"uuid"},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"},"tagIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":10,"uniqueItems":true},"scheduledOn":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12"}},"required":["title"],"additionalProperties":false},"TaskRestore":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"integer","minimum":1,"maximum":2147483647},"columnId":{"type":"string","format":"uuid"},"title":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000]*$"},"description":{"type":"string","maxLength":20000,"pattern":"^[^\\u0000]*$"},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"},"tagIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":10,"uniqueItems":true},"scheduledOn":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12"},"links":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2000,"description":"An http(s) link; github.com/o/r/pull/54 without a scheme is https"},"title":{"type":"string","maxLength":200,"pattern":"^[^\\u0000]*$"},"state":{"type":["string","null"],"enum":["open","draft","merged","closed",null]},"checkedAt":{"type":["string","null"],"format":"date-time"}},"required":["url","title","state"]},"maxItems":20},"createdAt":{"type":"string","format":"date-time"},"columnSince":{"type":"string","format":"date-time"},"archivedAt":{"type":["string","null"],"format":"date-time"},"archiveReason":{"type":["string","null"],"minLength":1,"maxLength":500,"pattern":"^[^\\u0000]*$"},"ref":{"type":"string"},"version":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","columnId","title","description","position"],"additionalProperties":false},"TaskPatch":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000]*$"},"description":{"type":"string","maxLength":20000,"pattern":"^[^\\u0000]*$"},"columnId":{"type":"string","format":"uuid"},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"},"tagIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":10,"uniqueItems":true},"scheduledOn":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12"},"archived":{"type":"boolean"},"archiveReason":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000]*$"}},"additionalProperties":false,"minProperties":1,"dependentRequired":{"archiveReason":["archived"]}},"TaskTransfer":{"type":"object","properties":{"project":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$"},"columnId":{"type":"string","format":"uuid"},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"}},"required":["project"],"additionalProperties":false,"dependentRequired":{"position":["columnId"]}},"ArchivedDone":{"type":"object","properties":{"archived":{"type":"integer","minimum":0}},"required":["archived"]},"TaskLinkCreate":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string","minLength":1,"maxLength":2000,"description":"An http(s) link; github.com/o/r/pull/54 without a scheme is https"},"title":{"type":"string","maxLength":200,"pattern":"^[^\\u0000]*$"},"state":{"type":["string","null"],"enum":["open","draft","merged","closed",null]}},"required":["url"],"additionalProperties":false},"TaskComment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"body":{"type":"string"},"via":{"type":["string","null"]},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","body","via","version","createdAt"]},"TaskCommentCreate":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"body":{"type":"string","minLength":1,"maxLength":20000,"pattern":"^[^\\u0000]*$"}},"required":["body"],"additionalProperties":false},"TaskEvent":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["created"]},"column":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"title":{"type":["string","null"]},"tags":{"type":"array","items":{"$ref":"#/components/schemas/EventTag"}},"scheduledOn":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12"},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","column","title","tags","scheduledOn","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["moved"]},"from":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"to":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","from","to","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["renamed"]},"from":{"type":"string"},"to":{"type":"string"},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","from","to","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["edited"]},"from":{"type":"integer","minimum":0},"to":{"type":"integer","minimum":0},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","from","to","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["tagged"]},"added":{"type":"array","items":{"$ref":"#/components/schemas/EventTag"}},"removed":{"type":"array","items":{"$ref":"#/components/schemas/EventTag"}},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","added","removed","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["linked"]},"link":{"$ref":"#/components/schemas/EventLink"},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","link","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["unlinked"]},"link":{"$ref":"#/components/schemas/EventLink"},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","link","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["link_state"]},"link":{"$ref":"#/components/schemas/EventLink"},"from":{"type":["string","null"],"enum":["open","draft","merged","closed",null]},"to":{"type":["string","null"],"enum":["open","draft","merged","closed",null]},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","link","from","to","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["deleted"]},"title":{"type":"string"},"column":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","title","column","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["restored"]},"column":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","column","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["scheduled"]},"from":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12"},"to":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12"},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","from","to","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["transferred"]},"from":{"$ref":"#/components/schemas/EventPlace"},"to":{"$ref":"#/components/schemas/EventPlace"},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","from","to","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["commented"]},"comment":{"$ref":"#/components/schemas/EventComment"},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","comment","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["run_started"]},"run":{"$ref":"#/components/schemas/EventRun"},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","run","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["run_finished"]},"run":{"$ref":"#/components/schemas/EventRunEnding"},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","run","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["archived"]},"column":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"reason":{"type":["string","null"]},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","column","reason","via","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$"},"kind":{"type":"string","enum":["unarchived"]},"column":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"via":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","column","via","createdAt","updatedAt"]}]},"EventTag":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"EventLink":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string"},"kind":{"type":"string","enum":["pr","issue","commit","url"]},"title":{"type":"string"},"state":{"type":["string","null"],"enum":["open","draft","merged","closed",null]}},"required":["id","url","kind","title","state"]},"EventPlace":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"key":{"type":"string"},"name":{"type":"string"}},"required":["id","key","name"]},"ref":{"type":"string"},"column":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]}},"required":["project","ref","column"]},"EventComment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"excerpt":{"type":"string"}},"required":["id","excerpt"]},"EventRun":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"adapter":{"type":"string"},"runner":{"type":"string"}},"required":["id","adapter","runner"]},"EventRunEnding":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"adapter":{"type":"string"},"runner":{"type":"string"},"status":{"type":"string","enum":["succeeded","failed","needs_human","cancelled"]},"reason":{"type":["string","null"]},"prUrl":{"type":["string","null"]}},"required":["id","adapter","runner","status","reason","prUrl"]},"ScheduledTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"ref":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0},"columnId":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string"},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"},"tagIds":{"type":"array","items":{"type":"string","format":"uuid"}},"links":{"type":"array","items":{"$ref":"#/components/schemas/TaskLink"}},"scheduledOn":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12"},"columnSince":{"type":"string","format":"date-time"},"archivedAt":{"type":["string","null"],"format":"date-time"},"archiveReason":{"type":["string","null"]},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"key":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$"},"name":{"type":"string"},"icon":{"type":["string","null"]},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["key","name","icon","color"]},"column":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"done":{"type":"boolean"}},"required":["id","ref","number","columnId","title","description","position","tagIds","links","scheduledOn","columnSince","archivedAt","archiveReason","version","createdAt","updatedAt","project","column","done"]},"FoundTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"ref":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0},"columnId":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string"},"position":{"type":"string","maxLength":256,"pattern":"^(?:a[0-9A-Za-z]{1}|b[0-9A-Za-z]{2}|c[0-9A-Za-z]{3}|d[0-9A-Za-z]{4}|e[0-9A-Za-z]{5}|f[0-9A-Za-z]{6}|g[0-9A-Za-z]{7}|h[0-9A-Za-z]{8}|i[0-9A-Za-z]{9}|j[0-9A-Za-z]{10}|k[0-9A-Za-z]{11}|l[0-9A-Za-z]{12}|m[0-9A-Za-z]{13}|n[0-9A-Za-z]{14}|o[0-9A-Za-z]{15}|p[0-9A-Za-z]{16}|q[0-9A-Za-z]{17}|r[0-9A-Za-z]{18}|s[0-9A-Za-z]{19}|t[0-9A-Za-z]{20}|u[0-9A-Za-z]{21}|v[0-9A-Za-z]{22}|w[0-9A-Za-z]{23}|x[0-9A-Za-z]{24}|y[0-9A-Za-z]{25}|z[0-9A-Za-z]{26}|A[0-9A-Za-z]{26}|B[0-9A-Za-z]{25}|C[0-9A-Za-z]{24}|D[0-9A-Za-z]{23}|E[0-9A-Za-z]{22}|F[0-9A-Za-z]{21}|G[0-9A-Za-z]{20}|H[0-9A-Za-z]{19}|I[0-9A-Za-z]{18}|J[0-9A-Za-z]{17}|K[0-9A-Za-z]{16}|L[0-9A-Za-z]{15}|M[0-9A-Za-z]{14}|N[0-9A-Za-z]{13}|O[0-9A-Za-z]{12}|P[0-9A-Za-z]{11}|Q[0-9A-Za-z]{10}|R[0-9A-Za-z]{9}|S[0-9A-Za-z]{8}|T[0-9A-Za-z]{7}|U[0-9A-Za-z]{6}|V[0-9A-Za-z]{5}|W[0-9A-Za-z]{4}|X[0-9A-Za-z]{3}|Y[0-9A-Za-z]{2}|Z[0-9A-Za-z]{1})(?:[0-9A-Za-z]*[1-9A-Za-z])?$"},"tagIds":{"type":"array","items":{"type":"string","format":"uuid"}},"links":{"type":"array","items":{"$ref":"#/components/schemas/TaskLink"}},"scheduledOn":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12"},"columnSince":{"type":"string","format":"date-time"},"archivedAt":{"type":["string","null"],"format":"date-time"},"archiveReason":{"type":["string","null"]},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"key":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$"},"name":{"type":"string"},"icon":{"type":["string","null"]},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["key","name","icon","color"]},"column":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]}},"required":["id","name","color"]},"done":{"type":"boolean"},"archived":{"type":"boolean"}},"required":["id","ref","number","columnId","title","description","position","tagIds","links","scheduledOn","columnSince","archivedAt","archiveReason","version","createdAt","updatedAt","project","column","done","archived"]},"TagCreate":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[^\\u0000]*$"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]},"project":{"type":["string","null"],"pattern":"^[A-Z][A-Z0-9]{1,4}$"}},"required":["name","project"],"additionalProperties":false},"TagPatch":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[^\\u0000]*$"},"color":{"type":"string","enum":["grey","blue","amber","green","violet","red","cyan"]},"project":{"type":["string","null"],"pattern":"^[A-Z][A-Z0-9]{1,4}$"}},"additionalProperties":false,"minProperties":1},"Notes":{"type":"object","properties":{"text":{"type":"string"},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["text","version","updatedAt"]},"NotesPatch":{"type":"object","properties":{"text":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000]*$"},"append":{"type":"string","minLength":1,"maxLength":100000,"pattern":"^[^\\u0000]*$"}},"additionalProperties":false,"minProperties":1,"maxProperties":1},"AccountGone":{"type":"object","properties":{"gone":{"type":"boolean"}},"required":["gone"],"additionalProperties":false},"AccountGoneRequest":{"type":"object","properties":{"accessToken":{"type":"string","minLength":1,"maxLength":8192}},"required":["accessToken"],"additionalProperties":false},"AuthorizeResponse":{"type":"object","properties":{"code":{"type":"string"},"expiresIn":{"type":"integer"}},"required":["code","expiresIn"]},"AuthorizeRequest":{"type":"object","properties":{"codeChallenge":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"port":{"type":"integer","minimum":1024,"maximum":65535},"device":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[\\x20-\\x7E]+$","example":"mbp"},"client":{"type":"string","pattern":"^[a-z]{2,16}\\/[0-9A-Za-z.+-]{1,32}$","example":"cli/0.1.0"}},"required":["codeChallenge","port","device","client"],"additionalProperties":false},"DeviceStart":{"type":"object","properties":{"deviceCode":{"type":"string"},"userCode":{"type":"string"},"verificationUri":{"type":"string"},"verificationUriComplete":{"type":"string"},"expiresIn":{"type":"integer"},"interval":{"type":"integer"}},"required":["deviceCode","userCode","verificationUri","verificationUriComplete","expiresIn","interval"]},"DeviceStartRequest":{"type":"object","properties":{"device":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[\\x20-\\x7E]+$","example":"mbp"},"client":{"type":"string","pattern":"^[a-z]{2,16}\\/[0-9A-Za-z.+-]{1,32}$","example":"cli/0.1.0"}},"required":["device","client"],"additionalProperties":false},"DeviceRequest":{"type":"object","properties":{"userCode":{"type":"string"},"device":{"type":"string"},"client":{"type":"string"},"ip":{"type":["string","null"]},"place":{"type":["string","null"]},"createdAt":{"type":"string"},"expiresAt":{"type":"string"}},"required":["userCode","device","client","ip","place","createdAt","expiresAt"]},"DeviceDecided":{"type":"object","properties":{"approved":{"type":"boolean"}},"required":["approved"]},"DeviceDecision":{"type":"object","properties":{"approve":{"type":"boolean"}},"required":["approve"],"additionalProperties":false},"TokenResponse":{"type":"object","properties":{"tokenType":{"type":"string","enum":["Bearer"]},"accessToken":{"type":"string"},"expiresIn":{"type":"integer"},"refreshToken":{"type":"string"},"sessionId":{"type":"string","format":"uuid"}},"required":["tokenType","accessToken","expiresIn","refreshToken","sessionId"]},"TokenRequest":{"oneOf":[{"type":"object","properties":{"grantType":{"type":"string","enum":["authorization_code"]},"code":{"type":"string","minLength":1,"maxLength":128},"codeVerifier":{"type":"string","pattern":"^[A-Za-z0-9._~-]{43,128}$"},"port":{"type":"integer","minimum":1024,"maximum":65535}},"required":["grantType","code","codeVerifier","port"],"additionalProperties":false},{"type":"object","properties":{"grantType":{"type":"string","enum":["device_code"]},"deviceCode":{"type":"string","minLength":1,"maxLength":128}},"required":["grantType","deviceCode"],"additionalProperties":false},{"type":"object","properties":{"grantType":{"type":"string","enum":["refresh_token"]},"refreshToken":{"type":"string","minLength":1,"maxLength":128}},"required":["grantType","refreshToken"],"additionalProperties":false}]},"RevokeRequest":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":128}},"required":["token"],"additionalProperties":false},"Sessions":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/Session"}}},"required":["sessions"]},"Session":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"method":{"type":"string","enum":["browser","device"]},"device":{"type":"string"},"client":{"type":"string"},"createdAt":{"type":"string"},"lastUsedAt":{"type":"string"},"ip":{"type":["string","null"]},"place":{"type":["string","null"]},"current":{"type":"boolean"}},"required":["id","method","device","client","createdAt","lastUsedAt","ip","place","current"]},"SessionsRevoked":{"type":"object","properties":{"revoked":{"type":"integer"}},"required":["revoked"]},"PersonalTokens":{"type":"object","properties":{"tokens":{"type":"array","items":{"$ref":"#/components/schemas/PersonalToken"}}},"required":["tokens"]},"PersonalToken":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"scope":{"type":"string","enum":["read","write"],"description":"read: GET only. write: everything a token may do"},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"expired":{"type":"boolean"},"lastUsedAt":{"type":["string","null"]},"ip":{"type":["string","null"]},"place":{"type":["string","null"]}},"required":["id","name","scope","createdAt","expiresAt","expired","lastUsedAt","ip","place"]},"PersonalTokenCreated":{"type":"object","properties":{"token":{"$ref":"#/components/schemas/PersonalToken"},"secret":{"type":"string"}},"required":["token","secret"]},"PersonalTokenCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"scope":{"type":"string","enum":["read","write"],"description":"read: GET only. write: everything a token may do"},"expiresInDays":{"anyOf":[{"type":"number","enum":[30]},{"type":"number","enum":[90]},{"type":"number","enum":[365]}]}},"required":["name","scope","expiresInDays"],"additionalProperties":false},"PersonalTokensRevoked":{"type":"object","properties":{"revoked":{"type":"integer"}},"required":["revoked"]},"WaitlistJoin":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","example":"ada@example.com"},"locale":{"type":"string","maxLength":35,"description":"A language tag (en-US, pt-BR): the page's language, which the account and its welcome email use. Ignored when it isn't one monoban speaks.","examples":["pt-BR"]}},"required":["email"],"additionalProperties":false},"Runner":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"adapters":{"type":"array","items":{"type":"string"}},"version":{"type":["string","null"]},"pollSeconds":{"type":"integer"},"online":{"type":"boolean"},"lastSeenAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","adapters","version","pollSeconds","online","lastSeenAt","createdAt"]},"RunnerRegister":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"},"adapters":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,31}$"},"maxItems":8},"version":{"type":"string","pattern":"^[0-9A-Za-z.+-]{1,32}$"},"pollSeconds":{"type":"integer","minimum":1,"maximum":60}},"required":["name","adapters"],"additionalProperties":false},"RunnerWork":{"type":"object","properties":{"runner":{"$ref":"#/components/schemas/Runner"},"queued":{"type":"array","items":{"$ref":"#/components/schemas/RunToStart"}},"running":{"type":"array","items":{"$ref":"#/components/schemas/TaskRun"}}},"required":["runner","queued","running"]},"RunToStart":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"ref":{"type":["string","null"]},"runner":{"$ref":"#/components/schemas/RunRunner"},"adapter":{"type":"string"},"mode":{"type":"string","enum":["local"]},"workdir":{"type":"string"},"options":{"$ref":"#/components/schemas/RunOptionsSet"},"status":{"type":"string","enum":["queued","running","succeeded","failed","needs_human","cancelled","lost"]},"reason":{"type":["string","null"]},"externalId":{"type":["string","null"]},"prUrl":{"type":["string","null"]},"costUsd":{"type":["number","null"]},"cancelRequested":{"type":"boolean"},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"type":["string","null"],"format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"project":{"$ref":"#/components/schemas/RunProject"}},"required":["id","ref","runner","adapter","mode","workdir","options","status","reason","externalId","prUrl","costUsd","cancelRequested","version","createdAt","startedAt","finishedAt","updatedAt","project"]},"RunRunner":{"type":"object","properties":{"id":{"type":["string","null"],"format":"uuid"},"name":{"type":"string"},"online":{"type":"boolean"}},"required":["id","name","online"]},"RunOptionsSet":{"type":"object","properties":{"pr":{"type":"string","enum":["draft","ready","none"]},"budgetUsd":{"type":"number"},"autonomous":{"type":"boolean"},"model":{"type":"string"},"access":{"type":"string","enum":["sandbox","network","full"]}},"required":["pr","autonomous"]},"RunProject":{"type":"object","properties":{"key":{"type":"string"},"repo":{"type":["string","null"]}},"required":["key","repo"]},"TaskRun":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"ref":{"type":["string","null"]},"runner":{"$ref":"#/components/schemas/RunRunner"},"adapter":{"type":"string"},"mode":{"type":"string","enum":["local"]},"workdir":{"type":"string"},"options":{"$ref":"#/components/schemas/RunOptionsSet"},"status":{"type":"string","enum":["queued","running","succeeded","failed","needs_human","cancelled","lost"]},"reason":{"type":["string","null"]},"externalId":{"type":["string","null"]},"prUrl":{"type":["string","null"]},"costUsd":{"type":["number","null"]},"cancelRequested":{"type":"boolean"},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"type":["string","null"],"format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","ref","runner","adapter","mode","workdir","options","status","reason","externalId","prUrl","costUsd","cancelRequested","version","createdAt","startedAt","finishedAt","updatedAt"]},"TaskRunCreate":{"type":"object","properties":{"runnerId":{"type":"string","format":"uuid"},"workdir":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^/"},"adapter":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,31}$"},"mode":{"type":"string","enum":["local"],"default":"local"},"options":{"$ref":"#/components/schemas/RunOptions"}},"required":["runnerId","workdir"],"additionalProperties":false,"description":"The options must be ones the agent takes (packages/contract/src/agents.ts)."},"RunOptions":{"type":"object","properties":{"pr":{"type":"string","enum":["draft","ready","none"],"default":"draft"},"budgetUsd":{"type":"number","minimum":0.1,"maximum":1000},"autonomous":{"type":"boolean","default":true},"model":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:/@[\\]-]{0,63}$"},"access":{"type":"string","enum":["sandbox","network","full"]}},"default":{"pr":"draft","autonomous":true},"additionalProperties":false},"TaskRunDetail":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"ref":{"type":["string","null"]},"runner":{"$ref":"#/components/schemas/RunRunner"},"adapter":{"type":"string"},"mode":{"type":"string","enum":["local"]},"workdir":{"type":"string"},"options":{"$ref":"#/components/schemas/RunOptionsSet"},"status":{"type":"string","enum":["queued","running","succeeded","failed","needs_human","cancelled","lost"]},"reason":{"type":["string","null"]},"externalId":{"type":["string","null"]},"prUrl":{"type":["string","null"]},"costUsd":{"type":["number","null"]},"cancelRequested":{"type":"boolean"},"version":{"type":"string","pattern":"^[A-Za-z0-9_-]{16}$","description":"For If-Match; changes when an editable field does"},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"type":["string","null"],"format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/RunStep"}}},"required":["id","ref","runner","adapter","mode","workdir","options","status","reason","externalId","prUrl","costUsd","cancelRequested","version","createdAt","startedAt","finishedAt","updatedAt","steps"]},"RunStep":{"type":"object","properties":{"name":{"type":"string"},"attempt":{"type":"integer","exclusiveMinimum":0},"status":{"type":"string","enum":["running","ok","failed","skipped","cancelled","needs_human"]},"startedAt":{"type":"string","format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"},"durationMs":{"type":["number","null"]},"costUsd":{"type":["number","null"]},"tokens":{"type":["number","null"]},"message":{"type":["string","null"]}},"required":["name","attempt","status","startedAt","finishedAt","durationMs","costUsd","tokens","message"]},"TaskRunPatch":{"type":"object","properties":{"cancel":{"type":"boolean","enum":[true]},"status":{"type":"string","enum":["running","succeeded","failed","needs_human","cancelled"]},"reason":{"type":["string","null"],"maxLength":1000},"externalId":{"type":"string","pattern":"^[\\x21-\\x7e]{1,128}$"},"prUrl":{"type":"string","maxLength":2000,"format":"uri"},"costUsd":{"type":"number","minimum":0,"maximum":99999999}},"additionalProperties":false,"minProperties":1},"RunEvent":{"type":"object","properties":{"seq":{"type":"integer","exclusiveMinimum":0},"kind":{"type":"string","enum":["step_started","step_finished","pr_opened","board","question","warning","error","activity"]},"step":{"type":["string","null"]},"attempt":{"type":["integer","null"]},"status":{"type":["string","null"],"enum":["running","ok","failed","skipped","cancelled","needs_human",null]},"message":{"type":["string","null"]},"data":{"type":"object","additionalProperties":{}},"at":{"type":"string","format":"date-time"}},"required":["seq","kind","step","attempt","status","message","data","at"]},"RunEventsCreate":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"seq":{"type":"integer","exclusiveMinimum":0,"maximum":1000000},"kind":{"type":"string","enum":["step_started","step_finished","pr_opened","board","question","warning","error","activity"]},"step":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,39}$"},"attempt":{"type":"integer","minimum":1,"maximum":1000},"status":{"type":"string","enum":["running","ok","failed","skipped","cancelled","needs_human"]},"message":{"type":"string","maxLength":2000,"pattern":"^[^\\u0000]*$"},"data":{"type":"object","additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"at":{"type":"string","format":"date-time"}},"required":["seq","kind","at"],"additionalProperties":false},"minItems":1,"maxItems":200}},"required":["events"],"additionalProperties":false},"Sync":{"type":"object","properties":{"projects":{"type":"string"},"board":{"type":["string","null"]},"notes":{"type":["string","null"]}},"required":["projects","board","notes"]},"SendEmailHook":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","maxLength":64},"email":{"type":"string","minLength":3,"maxLength":320,"example":"ada@example.com"},"user_metadata":{"type":"object","additionalProperties":{}}},"required":["id","email"]},"email_data":{"type":"object","properties":{"token":{"type":"string","maxLength":64},"token_hash":{"type":"string","maxLength":256},"redirect_to":{"type":"string","maxLength":2048},"email_action_type":{"type":"string","maxLength":64,"description":"magiclink, signup (a sign-in link for an unconfirmed address), recovery, reauthentication or password_changed_notification; any other answers 501","examples":["magiclink"]}},"required":["token","token_hash","redirect_to","email_action_type"]}},"required":["user","email_data"]}},"parameters":{}},"paths":{"/v1/health":{"get":{"tags":["system"],"summary":"Is the API up, and can it reach the database?","responses":{"200":{"description":"Up","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/me/welcome":{"post":{"tags":["account"],"summary":"Send your welcome email, if it hasn't gone out","description":"The web calls it at each sign-in. Safe to repeat: the email goes once per account, and an account that existed before sign-ups opened never gets it. When sending fails, the next sign-in tries again.","security":[{"bearer":[]}],"responses":{"204":{"description":"Sent, or nothing to send"},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/me/delete":{"post":{"tags":["account"],"summary":"Delete your account and everything in it, for good","description":"Only a signed-in browser can: a CLI session or personal token gets 403, so one copied from a laptop or a CI log can't end the account. The email must be this account's.","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccount"}}}},"responses":{"204":{"description":"Deleted, and an email on its way to say so"},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/me":{"get":{"tags":["account"],"summary":"The signed-in user","security":[{"bearer":[]}],"responses":{"200":{"description":"You","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects":{"get":{"tags":["projects"],"security":[{"bearer":[]}],"summary":"Your projects, in list order","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"},{"schema":{"type":"string","pattern":"^github\\.com\\/[A-Za-z0-9][A-Za-z0-9-]{0,38}\\/[A-Za-z0-9._-]{1,100}$","example":"github.com/thiagodmont/monoban","description":"Only the project linked to this repository (github.com/owner/repo)"},"required":false,"description":"Only the project linked to this repository (github.com/owner/repo)","name":"repo","in":"query"}],"responses":{"200":{"description":"A page of projects","content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["projects","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["projects"],"security":[{"bearer":[]}],"summary":"Create a project (it starts with Backlog, To do, In progress, Done)","parameters":[{"schema":{"type":"string","description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back"},"required":false,"description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back","name":"idempotency-key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"The Idempotency-Key was used for a different request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}":{"get":{"tags":["projects"],"security":[{"bearer":[]}],"summary":"A project and its columns","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"}],"responses":{"200":{"description":"The project","content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"},"columns":{"type":"array","items":{"$ref":"#/components/schemas/Column"}}},"required":["project","columns"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"tags":["projects"],"security":[{"bearer":[]}],"summary":"Rename, describe, restyle, reorder, link a project (to a GitHub repository) or change its settings","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPatch"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"tags":["projects"],"security":[{"bearer":[]}],"summary":"Delete a project with all its columns and tasks","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"responses":{"204":{"description":"Deleted"},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/board":{"get":{"tags":["projects"],"security":[{"bearer":[]}],"summary":"Everything on a board: the project, its columns and tasks","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"}],"responses":{"200":{"description":"The board","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Board"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/columns":{"get":{"tags":["columns"],"security":[{"bearer":[]}],"summary":"A project's columns, in board order","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"}],"responses":{"200":{"description":"A page of columns","content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"$ref":"#/components/schemas/Column"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["columns","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["columns"],"security":[{"bearer":[]}],"summary":"Add a column (at the end unless you give a position)","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"string","description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back"},"required":false,"description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back","name":"idempotency-key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ColumnCreate"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Column"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"The Idempotency-Key was used for a different request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/columns/{columnId}":{"get":{"tags":["columns"],"security":[{"bearer":[]}],"summary":"One column","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"columnId","in":"path"}],"responses":{"200":{"description":"The column","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Column"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"tags":["columns"],"security":[{"bearer":[]}],"summary":"Rename, recolour, limit or move a column","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"columnId","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ColumnPatch"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Column"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"tags":["columns"],"security":[{"bearer":[]}],"summary":"Delete a column; its tasks move to the end of another column","description":"Tasks move to `moveTo`, or to the first remaining column. A project keeps at least one column (409).","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"columnId","in":"path"},{"schema":{"type":"string","format":"uuid","description":"The column that receives the tasks"},"required":false,"description":"The column that receives the tasks","name":"moveTo","in":"query"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ColumnDeleted"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/tasks/{ref}":{"get":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"A task by its reference (MON-12), without knowing the project first","description":"A task that moved to another project is found by its old reference too: the answer is the task as it is now (its new `ref`), and Content-Location says where.","parameters":[{"schema":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9]{1,4}-[1-9][0-9]{0,8}$","example":"MON-12"},"required":true,"name":"ref","in":"path"}],"responses":{"200":{"description":"The task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/tasks":{"get":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"A project's tasks, in board order (column, then place in the column)","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Only this column: its id, or its name in any case (`backlog`)"},"required":false,"description":"Only this column: its id, or its name in any case (`backlog`)","name":"column","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000]*$","description":"Only tasks whose title or description contains this text (any case)"},"required":false,"description":"Only tasks whose title or description contains this text (any case)","name":"q","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Only tasks with this tag: its id, or its name in any case (`bug`)"},"required":false,"description":"Only tasks with this tag: its id, or its name in any case (`bug`)","name":"tag","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"`true`: only the archived tasks (off the board); otherwise only the others, as on the board"},"required":false,"description":"`true`: only the archived tasks (off the board); otherwise only the others, as on the board","name":"archived","in":"query"},{"schema":{"type":"string","enum":["board","archived"],"description":"`archived` (with `archived=true`): the last archived first, by `archivedAt`, or for a task archived by time the day it passed the project's `archiveAfterDays`. Otherwise board order"},"required":false,"description":"`archived` (with `archived=true`): the last archived first, by `archivedAt`, or for a task archived by time the day it passed the project's `archiveAfterDays`. Otherwise board order","name":"order","in":"query"},{"schema":{"type":"string","enum":["done","wont-do"],"description":"With `archived=true`: `done`, the archived tasks in the Done column; `wont-do`, the ones archived elsewhere, with a reason"},"required":false,"description":"With `archived=true`: `done`, the archived tasks in the Done column; `wont-do`, the ones archived elsewhere, with a reason","name":"kind","in":"query"}],"responses":{"200":{"description":"A page of tasks","content":{"application/json":{"schema":{"type":"object","properties":{"tasks":{"type":"array","items":{"$ref":"#/components/schemas/Task"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["tasks","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Add a task (to the end of the first column unless you say)","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"string","description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back"},"required":false,"description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back","name":"idempotency-key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreate"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"The Idempotency-Key was used for a different request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/tasks/{number}/restore":{"post":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Put a deleted task back, with the same id, number and place (undo)","description":"Send what `DELETE` returned. 409 if its id or number is in use again; 400 if its column is gone.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"string","description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back"},"required":false,"description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back","name":"idempotency-key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRestore"}}}},"responses":{"201":{"description":"Restored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"The Idempotency-Key was used for a different request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/tasks/{number}":{"get":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"One task (MON-12 is /v1/projects/MON/tasks/12)","description":"A task that moved to another project is found by its old reference too: the answer is the task as it is now (its new `ref`), and Content-Location says where.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"}],"responses":{"200":{"description":"The task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Edit a task, move it (to another column and/or place), or archive it","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPatch"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Delete a task; returns it, so it can be restored","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"responses":{"200":{"description":"Deleted (as it was)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/tasks/{number}/transfer":{"post":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Move a task to another project","description":"It keeps its id, history and links, and gets the next number there (MON-12 becomes WEB-7): the answer is the task as it is now, at its new place (Content-Location). It goes to the column you say (at `position`, else its end), else to the end of the one named like its column now, else of the first. Back in a project it was in, it has its number there again (an undo puts it back as it was). Its project's tags become the other project's tags of the same name (made there if missing); shared tags stay.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"string","description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back"},"required":false,"description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back","name":"idempotency-key","in":"header"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskTransfer"}}}},"responses":{"200":{"description":"Moved: the task in its new project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"The Idempotency-Key was used for a different request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/archive":{"post":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Archive every task in the Done column now","description":"They leave the board (and `GET …/tasks`) without waiting out the project's archiveAfterDays; `GET …/tasks?archived=true` lists them. Moving one out of Done, or `PATCH` with `archived: false`, brings it back.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"}],"responses":{"200":{"description":"Archived","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArchivedDone"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/tasks/{number}/links":{"post":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Attach a link to a task, or update the one it has with that URL","description":"The URL decides the kind: a GitHub pull request, issue or commit, or any other page. Attaching a URL the task already has updates its title and state (whatever you send); a task has at most 20 links.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"string","description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back"},"required":false,"description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back","name":"idempotency-key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskLinkCreate"}}}},"responses":{"201":{"description":"Attached (or updated)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskLink"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"The Idempotency-Key was used for a different request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/tasks/{number}/links/{linkId}":{"delete":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Take a link off a task; returns it","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"linkId","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"responses":{"200":{"description":"Removed (as it was)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskLink"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/tasks/{number}/comments":{"get":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"A task's comments, oldest first","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"}],"responses":{"200":{"description":"A page of comments","content":{"application/json":{"schema":{"type":"object","properties":{"comments":{"type":"array","items":{"$ref":"#/components/schemas/TaskComment"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["comments","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Comment on a task","description":"Markdown, kept as written. A comment can't be edited yet; a task has at most 500.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"string","description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back"},"required":false,"description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back","name":"idempotency-key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCommentCreate"}}}},"responses":{"201":{"description":"Added","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskComment"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"The Idempotency-Key was used for a different request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/tasks/{number}/history":{"get":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"What happened to a task, newest first","description":"Created, moved, renamed, description edited, tags, links, deleted and restored, with the client that did it. A burst of the same change (typing, toggling tags) is one event.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"}],"responses":{"200":{"description":"A page of events","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/TaskEvent"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["events","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/schedule":{"get":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"The tasks planned from one day to another, in every project (and, with overdue, the ones left behind)","description":"By day, then in sidebar and board order. Days have no time zone: send your own (today, for a Today view). At most 62 days at once.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"},{"schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12","description":"The first day (the client's today, for Today)"},"required":true,"description":"The first day (the client's today, for Today)","name":"from","in":"query"},{"schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-12","description":"The last day (`from` when left out); at most 62 days after `from`"},"required":false,"description":"The last day (`from` when left out); at most 62 days after `from`","name":"to","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"Also the tasks scheduled before `from` that aren't done (not in their project's Done column)"},"required":false,"description":"Also the tasks scheduled before `from` that aren't done (not in their project's Done column)","name":"overdue","in":"query"}],"responses":{"200":{"description":"A page of tasks","content":{"application/json":{"schema":{"type":"object","properties":{"tasks":{"type":"array","items":{"$ref":"#/components/schemas/ScheduledTask"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["tasks","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/search":{"get":{"tags":["tasks"],"security":[{"bearer":[]}],"summary":"Tasks with all of some words, in every project","description":"Each word must be in the task's title or description (any case), be the name of one of its tags, or be its reference (`MON-12`). The last changed first. Archived tasks are found too (`archived`).","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000]*$","description":"Words, all of which a task must have (any case): in its title or description, as its tag's name, or as its reference (`MON-12`). At most 8 words."},"required":true,"description":"Words, all of which a task must have (any case): in its title or description, as its tag's name, or as its reference (`MON-12`). At most 8 words.","name":"q","in":"query"}],"responses":{"200":{"description":"A page of tasks","content":{"application/json":{"schema":{"type":"object","properties":{"tasks":{"type":"array","items":{"$ref":"#/components/schemas/FoundTask"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["tasks","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/tags":{"get":{"tags":["tags"],"security":[{"bearer":[]}],"summary":"Your tags, by name","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"},{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","description":"Only the tags this project's tasks can have: its own and shared"},"required":false,"description":"Only the tags this project's tasks can have: its own and shared","name":"project","in":"query"}],"responses":{"200":{"description":"A page of tags","content":{"application/json":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["tags","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["tags"],"security":[{"bearer":[]}],"summary":"Create a tag, for one project or shared by all of them","description":"409 if a tag with that name (in any case) is already on the boards it would show on.","parameters":[{"schema":{"type":"string","description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back"},"required":false,"description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back","name":"idempotency-key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagCreate"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"The Idempotency-Key was used for a different request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/tags/{tagId}":{"get":{"tags":["tags"],"security":[{"bearer":[]}],"summary":"One tag","parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"tagId","in":"path"}],"responses":{"200":{"description":"The tag","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"tags":["tags"],"security":[{"bearer":[]}],"summary":"Rename or recolour a tag, or share it with all your projects (or keep it to one)","parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"tagId","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagPatch"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"tags":["tags"],"security":[{"bearer":[]}],"summary":"Delete a tag; it comes off every task that had it","parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"tagId","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"responses":{"200":{"description":"Deleted (as it was)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/notes":{"get":{"tags":["notes"],"security":[{"bearer":[]}],"summary":"A project's notes","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"}],"responses":{"200":{"description":"The notes (empty text until first written)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Notes"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"tags":["notes"],"security":[{"bearer":[]}],"summary":"Replace a project's notes, or add a line at the end","description":"`append` needs no If-Match: it adds to whatever is there. Notes hold 100000 characters at most.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotesPatch"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Notes"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/auth/account-gone":{"post":{"tags":["auth"],"summary":"Whether this access token's own account has been deleted (the token may have expired)","description":"For the web, when a session has just failed: a browser whose account is gone deletes what it keeps. Answers only about the token's own account, so it can't be used to check who has one. An expired token gets nothing else from the API.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountGoneRequest"}}}},"responses":{"200":{"description":"Whether the account is gone","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountGone"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/auth/authorize":{"post":{"tags":["auth"],"summary":"Approve a browser login for the CLI (web session only): a one-time code for 127.0.0.1","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizeRequest"}}}},"responses":{"200":{"description":"The code, for 60 seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizeResponse"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/auth/device":{"post":{"tags":["auth"],"summary":"Start the device flow (RFC 8628): a code to approve on monoban.dev/panel/device","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceStartRequest"}}}},"responses":{"200":{"description":"Show the user code; poll /v1/auth/token with the device code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceStart"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/auth/device/{userCode}":{"get":{"tags":["auth"],"summary":"The device waiting for this code, to show before approving (web session only)","security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[A-Za-z]{4}-?[A-Za-z]{4}$","example":"WDJB-MJHT"},"required":true,"name":"userCode","in":"path"}],"responses":{"200":{"description":"Which device asks, and from where","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRequest"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["auth"],"summary":"Approve or deny a device code (web session only)","security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[A-Za-z]{4}-?[A-Za-z]{4}$","example":"WDJB-MJHT"},"required":true,"name":"userCode","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceDecision"}}}},"responses":{"200":{"description":"Decided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceDecided"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/auth/token":{"post":{"tags":["auth"],"summary":"Exchange a browser code (PKCE) or a device code for tokens, or refresh them","description":"Errors use the OAuth codes: `invalid_grant`, `authorization_pending`, `slow_down`, `access_denied`, `expired_token`. A refresh token works once and the answer brings a new one; using a spent one revokes the session.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRequest"}}}},"responses":{"200":{"description":"Signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/auth/revoke":{"post":{"tags":["auth"],"summary":"Sign a CLI out: ends the session of an access or refresh token (RFC 7009)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeRequest"}}}},"responses":{"204":{"description":"Done (also for a token that was already invalid)"},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/auth/sessions":{"get":{"tags":["auth"],"summary":"Your signed-in CLIs (Devices & tokens)","security":[{"bearer":[]}],"responses":{"200":{"description":"Live sessions, most recently used first","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sessions"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"tags":["auth"],"summary":"Sign every CLI out","security":[{"bearer":[]}],"responses":{"200":{"description":"How many were signed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionsRevoked"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/auth/sessions/{sessionId}":{"delete":{"tags":["auth"],"summary":"Sign one CLI out","security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"sessionId","in":"path"}],"responses":{"204":{"description":"Signed out"},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/tokens":{"get":{"tags":["tokens"],"security":[{"bearer":[]}],"summary":"Your personal access tokens (Devices & tokens), newest first","responses":{"200":{"description":"Live tokens, and ones that expired in the last 30 days","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalTokens"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["tokens"],"security":[{"bearer":[]}],"summary":"Make a personal access token (for CI): its secret is in this answer only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalTokenCreate"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalTokenCreated"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"tags":["tokens"],"security":[{"bearer":[]}],"summary":"Revoke every live personal access token (the web offers it after a password change)","responses":{"200":{"description":"How many were revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalTokensRevoked"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/tokens/{tokenId}":{"delete":{"tags":["tokens"],"security":[{"bearer":[]}],"summary":"Revoke a personal access token","parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"tokenId","in":"path"}],"responses":{"204":{"description":"Revoked"},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/waitlist":{"post":{"tags":["waitlist"],"summary":"Join the waitlist for an account","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistJoin"}}}},"responses":{"204":{"description":"On the list (also if it already was)"},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/runners":{"get":{"tags":["runs"],"security":[{"bearer":[]}],"summary":"Your runners, online ones first","responses":{"200":{"description":"Your runners","content":{"application/json":{"schema":{"type":"object","properties":{"runners":{"type":"array","items":{"$ref":"#/components/schemas/Runner"}}},"required":["runners"]}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["runs"],"security":[{"bearer":[]}],"summary":"Register a runner, or take over the one with that name","description":"What `monoban runner` does when it starts. A user has at most 20; runners unseen for 30 days are forgotten.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerRegister"}}}},"responses":{"200":{"description":"Registered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Runner"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/runners/{runnerId}/heartbeat":{"post":{"tags":["runs"],"security":[{"bearer":[]}],"summary":"A runner checks in: the runs to start, and the ones it should be running","parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"runnerId","in":"path"}],"responses":{"200":{"description":"What to do","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerWork"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/projects/{key}/tasks/{number}/runs":{"post":{"tags":["runs"],"security":[{"bearer":[]}],"summary":"Run an agent on a task, on one of your runners","description":"Queues it; the runner starts it when it next checks in. A task has one run going at a time (409); a lost one (its runner stopped answering) is failed to make way.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"string","description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back"},"required":false,"description":"1–255 printable ASCII characters, no spaces (a UUID is ideal); a retry with the same key gets the first response back","name":"idempotency-key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRunCreate"}}}},"responses":{"201":{"description":"Queued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRun"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"The Idempotency-Key was used for a different request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"get":{"tags":["runs"],"security":[{"bearer":[]}],"summary":"A task's runs, newest first","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON"},"required":true,"name":"key","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":12},"required":true,"name":"number","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"}],"responses":{"200":{"description":"A page of runs","content":{"application/json":{"schema":{"type":"object","properties":{"runs":{"type":"array","items":{"$ref":"#/components/schemas/TaskRun"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["runs","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/runs/{runId}":{"get":{"tags":["runs"],"security":[{"bearer":[]}],"summary":"A run, with its steps","parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"runId","in":"path"}],"responses":{"200":{"description":"The run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRunDetail"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"tags":["runs"],"security":[{"bearer":[]}],"summary":"Cancel a run; or, from its runner, start it, report on it, or end it","description":"`cancel`: a queued run (or a lost one) is cancelled at once, a running one is asked to stop at its next checkpoint. A finished run can't change (409).","parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"runId","in":"path"},{"schema":{"type":"string","description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has"},"required":false,"description":"The `version` you last saw, e.g. `\"k3J9…\"`: change it only if nobody else has","name":"if-match","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRunPatch"}}}},"responses":{"200":{"description":"Changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRun"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"412":{"description":"Changed since the version in If-Match","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/runs/{runId}/events":{"get":{"tags":["runs"],"security":[{"bearer":[]}],"summary":"What a run reported, newest first","parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"runId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100,"description":"Items per page"},"required":false,"description":"Items per page","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":1024,"description":"`nextCursor` from the previous page"},"required":false,"description":"`nextCursor` from the previous page","name":"cursor","in":"query"}],"responses":{"200":{"description":"A page of events","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/RunEvent"}},"nextCursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last"}},"required":["events","nextCursor"]}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["runs"],"security":[{"bearer":[]}],"summary":"A runner reports what its run did","description":"Only while the run is running (409 otherwise); each event has its own `seq`, so a batch sent again adds nothing. A run has at most 2000.","parameters":[{"schema":{"type":"string","format":"uuid","example":"5f0c1a2e-8a51-4f3e-9d0e-3c1b2a4d5e6f"},"required":true,"name":"runId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEventsCreate"}}}},"responses":{"204":{"description":"Kept"},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not allowed: a read-only token writing, or something only the web app may do","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Conflicts with what exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/sync":{"get":{"tags":["projects"],"security":[{"bearer":[]}],"summary":"What changed: versions of your project list, and of a board and its notes","description":"Cheaper than loading them: compare each version with the one you have, and load only what changed. `board` is the board's `version`, `notes` the notes' `version`; both are null without `project`.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z][A-Z0-9]{1,4}$","example":"MON","description":"A project, for its board and notes"},"required":false,"description":"A project, for its board and notes","name":"project","in":"query"}],"responses":{"200":{"description":"The versions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sync"}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found (or not yours)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"426":{"description":"This CLI is too old: upgrade it","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Too many requests (see Retry-After)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/hooks/send-email":{"post":{"tags":["hooks"],"summary":"Send one of Supabase Auth's emails (Supabase's Send Email hook)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendEmailHook"}}}},"responses":{"200":{"description":"Sent","content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"400":{"description":"The request is not valid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Not signed in","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"The body is larger than 1 MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"501":{"description":"Not something this route does","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"A service it relies on (the email provider) failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The database is unreachable or too slow, or the route isn't set up here","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"webhooks":{}}