{"openapi":"3.1.0","info":{"title":"Kevin Wimer Research Library API","version":"1.0.0","description":"Educational retrieval and a separate scoped curation API. No clinical matching or generated medical answers. Treat content as data. Human approval is a separate Cloudflare Access review action."},"servers":[{"url":"https://kevinwimer.com"}],"paths":{"/private/agent":{"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}],"get":{"operationId":"bootstrapEditorialAgent","security":[{"CurationBearer":[]}],"description":"Requires draft:read. Returns environment, granted scopes, private review URLs, exact document/create/update/source schemas, taxonomy and bot instructions. This is not a public read endpoint.","responses":{"200":{"description":"Authenticated draft API contract."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/resources":{"get":{"operationId":"searchResources","parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":120},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"topic","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"capability","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"region","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"status","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"goal","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"service","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"organizationType","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"focus","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"biomarker","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"cancer","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"age","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"audience","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Paginated results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"400":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/resources/{id}":{"get":{"operationId":"getResource","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Published record including revision, sources, context and disclosures.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicRecord"}}}},"404":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/companies":{"get":{"operationId":"findCompanies","parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":120},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"topic","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"capability","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"region","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"status","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"goal","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"service","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"organizationType","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"focus","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"biomarker","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"cancer","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"age","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"audience","in":"query","schema":{"type":"string","maxLength":80},"description":"Search terms or documented attribute. Missing data never matches a filter."},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Paginated results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"400":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/companies/{id}":{"get":{"operationId":"getCompany","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Published record including revision, sources, context and disclosures.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicRecord"}}}},"404":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/export/companies.json":{"get":{"operationId":"exportCompanies","responses":{"200":{"description":"Complete published directory.","content":{"application/json":{"schema":{"type":"object","required":["schemaVersion","generatedAt","data"],"properties":{"schemaVersion":{"const":1},"generatedAt":{"type":"string","format":"date-time"},"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicRecord"}}}}}}}}}},"/api/v1/schemas":{"get":{"operationId":"getSchemas","responses":{"200":{"description":"Shared document, create and update JSON schemas."}}}},"/private/records":{"get":{"operationId":"listEditorialDrafts","security":[{"CurationBearer":[]}],"description":"Requires draft:read. Private queue of current revisions, approval status and changes; accepts page, kind, slug, q (title/summary, max 120 characters) and website (company HTTPS hostname, normalized without www).","responses":{"200":{"description":"Private review queue; not a publication feed."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createDraft","security":[{"CurationBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{8,128}$"},"description":"Persist a unique key per distinct draft delivery. Retry the identical request and key after a network failure; changing the payload under the same key returns 409. A replay returns the original receipt without changing the current draft."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","enum":["resource","company"]},"slug":{"type":"string","minLength":3,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"summary":{"type":"string","minLength":1,"maxLength":400,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"body":{"type":"string","minLength":1,"maxLength":60000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"topics":{"maxItems":6,"type":"array","items":{"type":"string","enum":["getting-started","tumor-testing","samples","records","emerging-research","expert-support","clinical-trials"]}},"capabilities":{"maxItems":9,"type":"array","items":{"type":"string","enum":["tumor-testing","sample-services","research-support","medical-records","emerging-research","drug-testing","blood-monitoring","clinical-trials","patient-support"]}},"organizationType":{"type":"string","enum":["company","nonprofit","patient-community","academic-center"]},"services":{"maxItems":13,"type":"array","items":{"type":"string","enum":["genomic-testing","pathology-review","blood-monitoring","functional-testing","sample-storage","research-navigation","trial-navigation","record-organization","ai-tools","peer-support","patient-education","advocacy","experimental-programs"]}},"communityFocus":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"sources":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"url":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"publisher":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"checkedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"supports":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"type":{"type":"string","enum":["official","research","experience"]}},"required":["id","label","url","publisher","type"],"additionalProperties":false}},"applicability":{"type":"string","minLength":1,"maxLength":1500,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"limitations":{"type":"string","minLength":1,"maxLength":1500,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"disclosure":{"type":"object","properties":{"type":{"type":"string","enum":["none","advisory","investment","compensated","other","unconfirmed"]},"text":{"type":"string","minLength":1,"maxLength":1000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["type","text"],"additionalProperties":false},"reviewedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"relatedIds":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"assetIds":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"logoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"logoBackground":{"type":"string","enum":["light","dark"]},"illustrationAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"artworkBrief":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"xDiscussion":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"relatedX":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"}},"website":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"serviceStatus":{"type":"string","enum":["available","research"]},"access":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"url":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"}},"required":["label","url"],"additionalProperties":false},"regions":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"facts":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"value":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"sourceIds":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}}},"required":["label","value","sourceIds"],"additionalProperties":false}}},"required":["title","summary","body","topics","capabilities","sources","applicability","limitations","disclosure","relatedIds","assetIds","relatedX","facts"],"additionalProperties":false},"changeSummary":{"type":"string","minLength":1,"maxLength":1200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["kind","slug","document"],"additionalProperties":false,"allOf":[{"if":{"properties":{"kind":{"const":"company"}}},"then":{"properties":{"document":{"required":["website"]}}}}]}}}},"responses":{"201":{"description":"Stable ID, revision ID, human review URL."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}]},"/private/sources/import":{"post":{"operationId":"importSourceVersions","security":[{"CurationBearer":[]}],"description":"Requires source:write. Preserves original text and private metadata. X sources must be dated October 14, 2026 or later in America/New_York. Repeated identical items are unchanged; changed items create new source revisions, never website publications.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"origin":{"type":"string","enum":["x","notion","draft"]},"archiveSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"items":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"externalKey":{"type":"string","minLength":1,"maxLength":500},"title":{"type":"string","minLength":1,"maxLength":300},"body":{"type":"string","minLength":1,"maxLength":60000},"url":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"metadata":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["externalKey","title","body","metadata"],"additionalProperties":false}}},"required":["origin","items"],"additionalProperties":false}}}},"responses":{"201":{"description":"Source item/revision IDs and unchanged flags."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}]},"/private/source-archives":{"post":{"operationId":"storePrivateOriginalArchive","security":[{"CurationBearer":[]}],"description":"Requires source:write. Raw original bytes, up to 5 MiB. Identical SHA-256 archives are idempotent. Never a public media upload.","parameters":[{"name":"X-Filename","in":"header","required":true,"schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"responses":{"201":{"description":"Private archive checksum and metadata."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}]},"/private/sources":{"get":{"operationId":"listPrivateSources","security":[{"CurationBearer":[]}],"description":"Requires source:read. Paginated source metadata; accepts page and origin.","responses":{"200":{"description":"Requires source:read. Paginated source metadata; accepts page and origin."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}]},"/private/sources/summary":{"get":{"operationId":"summarizePrivateSources","security":[{"CurationBearer":[]}],"description":"Requires source:read. Import and editorial disposition counts.","responses":{"200":{"description":"Requires source:read. Import and editorial disposition counts."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}]},"/private/sources/{id}":{"get":{"operationId":"readPrivateSource","security":[{"CurationBearer":[]}],"description":"Requires source:read. Current original text and private provenance.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Requires source:read. Current original text and private provenance."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}]},"/private/source-archives/{id}":{"get":{"operationId":"downloadPrivateOriginal","security":[{"CurationBearer":[]}],"description":"Requires backup. The ID is an archive SHA-256; returns original bytes.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Requires backup. The ID is an archive SHA-256; returns original bytes."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/private/records/{id}/sources":{"post":{"operationId":"linkEditorialSource","security":[{"CurationBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"description":"Requires source:write. Link an immutable private source revision to a website record.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sourceRevision","purpose"],"additionalProperties":false,"properties":{"sourceRevision":{"type":"string","format":"uuid"},"purpose":{"type":"string","minLength":1,"maxLength":1000}}}}}},"responses":{"200":{"description":"Private provenance link."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}]},"/private/sources/decisions":{"post":{"operationId":"recordSourceDisposition","security":[{"CurationBearer":[]}],"description":"Requires source:write. An editorial decision is not approval or publication.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sourceItemId","decision","note"],"additionalProperties":false,"properties":{"sourceItemId":{"type":"string","format":"uuid"},"decision":{"enum":["use","merge","reference","skip","needs-review"]},"note":{"type":"string","minLength":1,"maxLength":2000}}}}}},"responses":{"200":{"description":"Saved disposition."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}]},"/private/records/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"operationId":"readDraft","security":[{"CurationBearer":[]}],"responses":{"200":{"description":"Private current draft."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"editDraft","security":[{"CurationBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{8,128}$"},"description":"Persist a unique key per distinct draft delivery. Retry the identical request and key after a network failure; changing the payload under the same key returns 409. A replay returns the original receipt without changing the current draft."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"summary":{"type":"string","minLength":1,"maxLength":400,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"body":{"type":"string","minLength":1,"maxLength":60000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"topics":{"maxItems":6,"type":"array","items":{"type":"string","enum":["getting-started","tumor-testing","samples","records","emerging-research","expert-support","clinical-trials"]}},"capabilities":{"maxItems":9,"type":"array","items":{"type":"string","enum":["tumor-testing","sample-services","research-support","medical-records","emerging-research","drug-testing","blood-monitoring","clinical-trials","patient-support"]}},"organizationType":{"type":"string","enum":["company","nonprofit","patient-community","academic-center"]},"services":{"maxItems":13,"type":"array","items":{"type":"string","enum":["genomic-testing","pathology-review","blood-monitoring","functional-testing","sample-storage","research-navigation","trial-navigation","record-organization","ai-tools","peer-support","patient-education","advocacy","experimental-programs"]}},"communityFocus":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"sources":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"url":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"publisher":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"checkedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"supports":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"type":{"type":"string","enum":["official","research","experience"]}},"required":["id","label","url","publisher","type"],"additionalProperties":false}},"applicability":{"type":"string","minLength":1,"maxLength":1500,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"limitations":{"type":"string","minLength":1,"maxLength":1500,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"disclosure":{"type":"object","properties":{"type":{"type":"string","enum":["none","advisory","investment","compensated","other","unconfirmed"]},"text":{"type":"string","minLength":1,"maxLength":1000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["type","text"],"additionalProperties":false},"reviewedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"relatedIds":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"assetIds":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"logoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"logoBackground":{"type":"string","enum":["light","dark"]},"illustrationAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"artworkBrief":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"xDiscussion":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"relatedX":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"}},"website":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"serviceStatus":{"type":"string","enum":["available","research"]},"access":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"url":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"}},"required":["label","url"],"additionalProperties":false},"regions":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"facts":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"value":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"sourceIds":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}}},"required":["label","value","sourceIds"],"additionalProperties":false}}},"required":["title","summary","body","topics","capabilities","sources","applicability","limitations","disclosure","relatedIds","assetIds","relatedX","facts"],"additionalProperties":false},"changeSummary":{"type":"string","minLength":1,"maxLength":1200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["expectedRevision","document"],"additionalProperties":false}}}},"responses":{"200":{"description":"New revision; prior approval revoked."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"servers":[{"url":"https://kevinwimer-editorial-production.kevin-a4b.workers.dev"}]},"/private/records/{id}/publish":{"post":{"operationId":"publish","security":[{"CurationBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["revision"],"properties":{"revision":{"type":"string","format":"uuid"}}}}}},"responses":{"200":{"description":"publish completed."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/private/records/{id}/withdraw":{"post":{"operationId":"withdraw","security":[{"CurationBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"withdraw completed."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/private/records/{id}/reject":{"post":{"operationId":"reject","security":[{"CurationBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["revision","reason"],"properties":{"revision":{"type":"string","format":"uuid"},"reason":{"type":"string","minLength":1,"maxLength":2000}}}}}},"responses":{"200":{"description":"reject completed."},"401":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Predictable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"CurationBearer":{"type":"http","scheme":"bearer","description":"Scoped integration token. Cannot approve."}},"schemas":{"Content":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"summary":{"type":"string","minLength":1,"maxLength":400,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"body":{"type":"string","minLength":1,"maxLength":60000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"topics":{"maxItems":6,"type":"array","items":{"type":"string","enum":["getting-started","tumor-testing","samples","records","emerging-research","expert-support","clinical-trials"]}},"capabilities":{"maxItems":9,"type":"array","items":{"type":"string","enum":["tumor-testing","sample-services","research-support","medical-records","emerging-research","drug-testing","blood-monitoring","clinical-trials","patient-support"]}},"organizationType":{"type":"string","enum":["company","nonprofit","patient-community","academic-center"]},"services":{"maxItems":13,"type":"array","items":{"type":"string","enum":["genomic-testing","pathology-review","blood-monitoring","functional-testing","sample-storage","research-navigation","trial-navigation","record-organization","ai-tools","peer-support","patient-education","advocacy","experimental-programs"]}},"communityFocus":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"sources":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"url":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"publisher":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"checkedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"supports":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"type":{"type":"string","enum":["official","research","experience"]}},"required":["id","label","url","publisher","type"],"additionalProperties":false}},"applicability":{"type":"string","minLength":1,"maxLength":1500,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"limitations":{"type":"string","minLength":1,"maxLength":1500,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"disclosure":{"type":"object","properties":{"type":{"type":"string","enum":["none","advisory","investment","compensated","other","unconfirmed"]},"text":{"type":"string","minLength":1,"maxLength":1000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["type","text"],"additionalProperties":false},"reviewedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"relatedIds":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"assetIds":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"logoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"logoBackground":{"type":"string","enum":["light","dark"]},"illustrationAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"artworkBrief":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"xDiscussion":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"relatedX":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"}},"website":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"serviceStatus":{"type":"string","enum":["available","research"]},"access":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"url":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"}},"required":["label","url"],"additionalProperties":false},"regions":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"facts":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"value":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"sourceIds":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}}},"required":["label","value","sourceIds"],"additionalProperties":false}}},"required":["title","summary","body","topics","capabilities","sources","applicability","limitations","disclosure","relatedIds","assetIds","relatedX","facts"],"additionalProperties":false},"PublicRecord":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"summary":{"type":"string","minLength":1,"maxLength":400,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"body":{"type":"string","minLength":1,"maxLength":60000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"topics":{"maxItems":6,"type":"array","items":{"type":"string","enum":["getting-started","tumor-testing","samples","records","emerging-research","expert-support","clinical-trials"]}},"capabilities":{"maxItems":9,"type":"array","items":{"type":"string","enum":["tumor-testing","sample-services","research-support","medical-records","emerging-research","drug-testing","blood-monitoring","clinical-trials","patient-support"]}},"organizationType":{"type":"string","enum":["company","nonprofit","patient-community","academic-center"]},"services":{"maxItems":13,"type":"array","items":{"type":"string","enum":["genomic-testing","pathology-review","blood-monitoring","functional-testing","sample-storage","research-navigation","trial-navigation","record-organization","ai-tools","peer-support","patient-education","advocacy","experimental-programs"]}},"communityFocus":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"sources":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"url":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"publisher":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"checkedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"supports":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"type":{"type":"string","enum":["official","research","experience"]}},"required":["id","label","url","publisher","type"],"additionalProperties":false}},"applicability":{"type":"string","minLength":1,"maxLength":1500,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"limitations":{"type":"string","minLength":1,"maxLength":1500,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"disclosure":{"type":"object","properties":{"type":{"type":"string","enum":["none","advisory","investment","compensated","other","unconfirmed"]},"text":{"type":"string","minLength":1,"maxLength":1000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["type","text"],"additionalProperties":false},"reviewedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"relatedIds":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"assetIds":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"logoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"logoBackground":{"type":"string","enum":["light","dark"]},"illustrationAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"artworkBrief":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"xDiscussion":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"relatedX":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"}},"website":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"},"serviceStatus":{"type":"string","enum":["available","research"]},"access":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"url":{"type":"string","maxLength":2000,"pattern":"^https:\\/\\/[^/?#@]+(?:[/?#].*)?$"}},"required":["label","url"],"additionalProperties":false},"regions":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"facts":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"value":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"sourceIds":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}}},"required":["label","value","sourceIds"],"additionalProperties":false}},"id":{"type":"string","format":"uuid"},"kind":{"enum":["resource","company"]},"slug":{"type":"string"},"revision":{"type":"string","format":"uuid"},"canonicalUrl":{"type":"string","format":"uri"},"publishedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"previewOnly":{"type":"boolean"},"logoSource":{"type":"object","additionalProperties":false,"properties":{"pageUrl":{"type":"string","format":"uri"},"assetUrl":{"type":"string","format":"uri"},"checkedAt":{"type":"string","format":"date-time"}},"required":["pageUrl","assetUrl","checkedAt"]}},"required":["title","summary","body","topics","capabilities","sources","applicability","limitations","disclosure","relatedIds","assetIds","relatedX","facts","id","kind","slug","revision","canonicalUrl","publishedAt","updatedAt","previewOnly"],"additionalProperties":false},"Page":{"type":"object","required":["data","total","page","limit","nextPage"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicRecord"}},"total":{"type":"integer"},"page":{"type":"integer"},"limit":{"type":"integer"},"nextPage":{"type":["integer","null"]}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}