{"components":{"schemas":{"Activity":{"properties":{"action":{"const":"ACTIVITY","type":"string"},"counts":{"properties":{"DECR":{"minimum":0,"type":"integer"},"GET":{"minimum":0,"type":"integer"},"INCR":{"minimum":0,"type":"integer"},"SET":{"minimum":0,"type":"integer"}},"required":[],"type":"object"},"interval_seconds":{"const":1,"type":"integer"}},"required":["action","counts","interval_seconds"],"type":"object"},"Batch":{"examples":[{"operations":[{"key":"example-key","method":"GET"}]}],"properties":{"operations":{"items":{"$ref":"#/components/schemas/BatchItem"},"maxItems":25,"minItems":1,"type":"array"}},"required":["operations"],"type":"object"},"BatchItem":{"properties":{"content_type":{"default":"text/plain","enum":["text/plain","application/json"],"type":"string"},"headers":{"properties":{"If-Match":{"type":"string"},"If-None-Match":{"const":"*","type":"string"}},"required":[],"type":"object"},"key":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"},"method":{"enum":["GET","PUT"],"type":"string"},"ttl_mode":{"description":"Default sliding, except burn=true requires/defaults to absolute.","enum":["sliding","absolute"],"type":"string"},"ttl_seconds":{"default":31536000,"maximum":31536000,"minimum":1,"type":"integer"},"value":{"type":"string"}},"required":["method","key"],"type":"object"},"BatchResult":{"examples":[{"atomic":false,"results":[{"body":{"error":{"code":"not_found","message":"Key not found."}},"headers":{},"status":404}]}],"properties":{"atomic":{"const":false},"results":{"items":{"properties":{"body":{},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"status":{"type":"integer"}},"required":["status","body","headers"],"type":"object"},"type":"array"}},"required":["atomic","results"],"type":"object"},"Consumed":{"examples":[{"consumed":true,"content_type":"text/plain","id":"example-key","value":"hello"}],"properties":{"consumed":{"const":true},"content_type":{"type":"string"},"id":{"type":"string"},"value":{"type":"string"}},"required":["id","value","content_type","consumed"],"type":"object"},"Counter":{"examples":[{"id":"example-key","value":1}],"properties":{"id":{"type":"string"},"value":{"maximum":9223372036854775807,"minimum":-9223372036854775808,"type":"integer"}},"required":["id","value"],"type":"object"},"Create":{"examples":[{"ttl_mode":"absolute","ttl_seconds":3600,"value":"hello"}],"properties":{"burn":{"default":false,"type":"boolean"},"capabilities":{"default":false,"type":"boolean"},"content_type":{"default":"text/plain","enum":["text/plain","application/json"],"type":"string"},"ttl_mode":{"description":"Default sliding, except burn=true requires/defaults to absolute.","enum":["sliding","absolute"],"type":"string"},"ttl_seconds":{"default":31536000,"maximum":31536000,"minimum":1,"type":"integer"},"value":{"description":"Exact UTF-8 text, including serialized JSON. Literal NUL is rejected with 400 invalid_value. JSON decimal/exponent notation must decode to a finite double-precision value; overflow returns 400 invalid_json. Default value limit: 50,000 UTF-8 bytes.","type":"string"}},"required":["value"],"type":"object"},"Created":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"properties":{"capabilities":{"properties":{"read_token":{"type":"string"},"write_token":{"type":"string"}},"required":["read_token","write_token"],"type":"object"}},"required":[],"type":"object"}],"examples":[{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"version":"opaque-version"}]},"Error":{"examples":[{"error":{"code":"forbidden","message":"Credential does not grant this operation."}}],"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"type":"object"}},"required":["error"],"type":"object"},"History":{"examples":[{"buckets":[{"delta":"2","last_value":"2","operations":1,"start":"2026-01-02T00:00:00Z"}],"id":"example-key","resolution":"hour","retained_from":"2026-01-01T00:00:00Z","retention_buckets":168,"timezone":"UTC"}],"properties":{"buckets":{"items":{"properties":{"delta":{"pattern":"^-?\\d+$","type":"string"},"last_value":{"pattern":"^-?\\d+$","type":"string"},"operations":{"minimum":1,"type":"integer"},"start":{"format":"date-time","type":"string"}},"required":["start","delta","operations","last_value"],"type":"object"},"maxItems":168,"type":"array"},"id":{"type":"string"},"resolution":{"enum":["hour","day","month"],"type":"string"},"retained_from":{"format":"date-time","type":"string"},"retention_buckets":{"enum":[168,90,24],"type":"integer"},"timezone":{"const":"UTC","type":"string"}},"required":["id","resolution","timezone","retention_buckets","retained_from","buckets"],"type":"object"},"KeyRead":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"properties":{"value":{"type":"string"}},"required":["value"],"type":"object"}],"examples":[{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"value":"hello","version":"opaque-version"}]},"LegacyError":{"examples":[{"error":"unauthorized"}],"properties":{"error":{"type":"string"},"message":{"type":"string"},"retry_after":{"type":"integer"}},"required":["error"],"type":"object"},"LegacyRead":{"examples":[{"content_type":"application/json","id":"example-key","value":{"checks":[true,null,42]}}],"properties":{"content_type":{"enum":["text/plain","application/json"],"type":"string"},"id":{"type":"string"},"value":{}},"required":["id","value","content_type"],"type":"object"},"Metadata":{"examples":[{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"version":"opaque-version"}],"properties":{"absolute_expires_at":{"format":"date-time","type":["string","null"]},"burn":{"type":"boolean"},"content_type":{"type":"string"},"created_at":{"format":"date-time","type":["string","null"]},"expires_at":{"format":"date-time","type":["string","null"]},"id":{"type":"string"},"protected":{"type":"boolean"},"size_bytes":{"minimum":0,"type":"integer"},"ttl_mode":{"enum":["sliding","absolute"],"type":"string"},"ttl_seconds":{"type":"integer"},"version":{"type":"string"}},"required":["id","created_at","expires_at","absolute_expires_at","ttl_seconds","ttl_mode","size_bytes","content_type","protected","version","burn"],"type":"object"},"Metrics":{"examples":[{"available":true,"cache_hit_rate":null,"errors":0,"latency_ms":{"p50":null,"p95":null},"latency_samples":0,"redis_uptime_seconds":10,"requests":0,"requests_per_second":0,"sampled_at":null,"window_seconds":300}],"properties":{"available":{"type":"boolean"},"cache_hit_rate":{"type":["number","null"]},"errors":{"type":"integer"},"latency_ms":{"properties":{"p50":{"type":["number","null"]},"p95":{"type":["number","null"]}},"required":[],"type":"object"},"latency_samples":{"type":"integer"},"redis_uptime_seconds":{"type":["integer","null"]},"requests":{"type":"integer"},"requests_per_second":{"type":"number"},"sampled_at":{"format":"date-time","type":["string","null"]},"window_seconds":{"type":"integer"}},"required":["available","sampled_at"],"type":"object"},"Poll":{"examples":[{"id":"example-key","status":"changed","value":"ready"}],"properties":{"id":{"type":"string"},"status":{"const":"changed","type":"string"},"value":{"type":"string"}},"required":["id","value","status"],"type":"object"},"Touch":{"examples":[{}],"properties":{"ttl_mode":{"description":"Default sliding, except burn=true requires/defaults to absolute.","enum":["sliding","absolute"],"type":"string"},"ttl_seconds":{"default":31536000,"maximum":31536000,"minimum":1,"type":"integer"}},"required":[],"type":"object"}},"securitySchemes":{"Bearer":{"description":"Password or read/write capability; header takes precedence over query credentials.","scheme":"bearer","type":"http"},"QueryPassword":{"description":"Legacy-compatible; avoid credentials in URLs.","in":"query","name":"password","type":"apiKey"}}},"info":{"description":"Account-free ephemeral UTF-8 key/value storage. Legacy and v1 share keys. Optional credentials remain supported; no global listing. Defaults shown are factory defaults and may be configured. HTTP errors follow the route family. CORS is not enabled for cross-origin browser calls; use same-origin console or server-side clients. Do not store credentials/PII. See /docs and /llms.txt.","title":"SetGet public API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/":{"get":{"description":"curl/httpie User-Agent receives a plain-text quickstart; browsers receive HTML.","operationId":"get_","responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}},"text/plain":{"example":"SET: curl -X POST https://setget.net/set/mykey -d \"hello world\"","schema":{"type":"string"}}},"description":"Homepage"}},"summary":"Homepage","tags":["Website"]},"head":{"description":"curl/httpie User-Agent receives a plain-text quickstart; browsers receive HTML.","operationId":"head_","responses":{"200":{"description":"Homepage"}},"summary":"HEAD: Homepage","tags":["Website"]},"options":{"operationId":"options_get_","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/api/metrics":{"get":{"description":"Last 5 complete UTC minutes, fixed latency histogram estimates capped at 60 seconds, error count, sample freshness, Redis lifetime lookup ratio and Redis uptime. No keys, paths, IPs, credentials or per-request records. Does not include metrics/resource/static requests. Unavailable telemetry is explicitly marked. Rate limit: 10/second/IP.","operationId":"get_api_metrics","responses":{"200":{"content":{"application/json":{"example":{"available":true,"cache_hit_rate":null,"errors":0,"latency_ms":{"p50":null,"p95":null},"latency_samples":0,"redis_uptime_seconds":10,"requests":0,"requests_per_second":0,"sampled_at":null,"window_seconds":300},"schema":{"$ref":"#/components/schemas/Metrics"}}},"description":"Recent aggregate HTTP metrics"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"summary":"Recent aggregate HTTP metrics","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"head":{"description":"Last 5 complete UTC minutes, fixed latency histogram estimates capped at 60 seconds, error count, sample freshness, Redis lifetime lookup ratio and Redis uptime. No keys, paths, IPs, credentials or per-request records. Does not include metrics/resource/static requests. Unavailable telemetry is explicitly marked. Rate limit: 10/second/IP.","operationId":"head_api_metrics","responses":{"200":{"description":"Recent aggregate HTTP metrics"},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"default":{"description":"Error; legacy failures may also return framework HTML."}},"summary":"HEAD: Recent aggregate HTTP metrics","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_api_metrics","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/api/review":{"options":{"operationId":"options_post_api_review","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"Message/comment required (max 2000 characters); rating/stars 0\u20135, default 5. Aliases are supported. Not published until approved. Rate limit: 5/minute/IP and 3/day/IP.","operationId":"post_api_review","requestBody":{"content":{"application/json":{"schema":{"properties":{"comment":{"type":"string"},"contact_email":{"type":"string"},"display_name":{"type":"string"},"email":{"type":"string"},"github":{"type":"string"},"message":{"type":"string"},"name":{"type":"string"},"project_url":{"type":"string"},"rating":{"type":["integer","string"]},"stars":{"type":["integer","string"]},"url":{"type":"string"}},"required":[],"type":"object"}},"application/x-www-form-urlencoded":{"schema":{"properties":{"comment":{"type":"string"},"contact_email":{"type":"string"},"display_name":{"type":"string"},"email":{"type":"string"},"github":{"type":"string"},"message":{"type":"string"},"name":{"type":"string"},"project_url":{"type":"string"},"rating":{"type":["integer","string"]},"stars":{"type":["integer","string"]},"url":{"type":"string"}},"required":[],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"review":{"properties":{"message":{"type":"string"},"name":{"type":"string"},"project_url":{"type":"string"},"rating":{"type":"integer"}},"required":[],"type":"object"},"status":{"type":"string"}},"required":["status","message","review"],"type":"object"}}},"description":"Submit review for moderation"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"summary":"Submit review for moderation","tags":["Legacy"],"x-rate-limit":"5/minute/IP and 3/day/IP"}},"/api/status":{"get":{"description":"External monitor payload cached for 30 seconds; monitor configuration/heartbeatList/uptimeList when available. Upstream failure can return its status or 500/504. No key data. Rate limit: 10/second/IP.","operationId":"get_api_status","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"Public uptime-monitor status proxy"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"summary":"Public uptime-monitor status proxy","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"head":{"description":"External monitor payload cached for 30 seconds; monitor configuration/heartbeatList/uptimeList when available. Upstream failure can return its status or 500/504. No key data. Rate limit: 10/second/IP.","operationId":"head_api_status","responses":{"200":{"description":"Public uptime-monitor status proxy"},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"default":{"description":"Error; legacy failures may also return framework HTML."}},"summary":"HEAD: Public uptime-monitor status proxy","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_api_status","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/badge/hit/{id}":{"get":{"description":"No credentials accepted for revealing private data. Protected/burn/expired/quarantined keys render missing. Existing no-cache/no-store headers retained. Hit GET and implicit HEAD increment public counters; use standard badges for non-mutating views. Status maps healthy/warning/down states. Builder presets produce these URLs. Rate limit: 20/second/IP.","operationId":"get_badge_hit_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"textColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"text_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelTextColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_text_color","required":false,"schema":{"type":"string"}},{"description":"flat default; flat-square/flatsquare/square supported.","in":"query","name":"style","required":false,"schema":{"type":"string"}},{"description":"verdana, mono, monospace, sans, serif or code.","in":"query","name":"font","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"fontFamily","required":false,"schema":{"type":"string"}},{"description":"Built-in icon name; see badge builder.","in":"query","name":"logo","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logoColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logo_color","required":false,"schema":{"type":"string"}},{"description":"Missing-value text; default not found.","in":"query","name":"default","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"colorText","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"prefix","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"suffix","required":false,"schema":{"type":"string"}},{"description":"Up to 8 increasing min:color pairs; 512 characters. Progress compares percentage; standard/hit compare numeric value.","in":"query","name":"thresholds","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"image/svg+xml":{"schema":{"type":"string"}}},"description":"Render public SVG badge"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid ID or thresholds."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"Render public SVG badge","tags":["Legacy"],"x-rate-limit":"20/second/IP"},"head":{"description":"No credentials accepted for revealing private data. Protected/burn/expired/quarantined keys render missing. Existing no-cache/no-store headers retained. Hit GET and implicit HEAD increment public counters; use standard badges for non-mutating views. Status maps healthy/warning/down states. Builder presets produce these URLs. Rate limit: 20/second/IP.","operationId":"head_badge_hit_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"textColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"text_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelTextColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_text_color","required":false,"schema":{"type":"string"}},{"description":"flat default; flat-square/flatsquare/square supported.","in":"query","name":"style","required":false,"schema":{"type":"string"}},{"description":"verdana, mono, monospace, sans, serif or code.","in":"query","name":"font","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"fontFamily","required":false,"schema":{"type":"string"}},{"description":"Built-in icon name; see badge builder.","in":"query","name":"logo","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logoColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logo_color","required":false,"schema":{"type":"string"}},{"description":"Missing-value text; default not found.","in":"query","name":"default","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"colorText","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"prefix","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"suffix","required":false,"schema":{"type":"string"}},{"description":"Up to 8 increasing min:color pairs; 512 characters. Progress compares percentage; standard/hit compare numeric value.","in":"query","name":"thresholds","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Render public SVG badge"},"400":{"description":"Invalid ID or thresholds."},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"HEAD: Render public SVG badge","tags":["Legacy"],"x-rate-limit":"20/second/IP"},"options":{"operationId":"options_get_badge_hit_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/badge/progress/{id}":{"get":{"description":"No credentials accepted for revealing private data. Protected/burn/expired/quarantined keys render missing. Existing no-cache/no-store headers retained. Hit GET and implicit HEAD increment public counters; use standard badges for non-mutating views. Status maps healthy/warning/down states. Builder presets produce these URLs. Rate limit: 10/second/IP.","operationId":"get_badge_progress_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"textColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"text_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelTextColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_text_color","required":false,"schema":{"type":"string"}},{"description":"flat default; flat-square/flatsquare/square supported.","in":"query","name":"style","required":false,"schema":{"type":"string"}},{"description":"verdana, mono, monospace, sans, serif or code.","in":"query","name":"font","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"fontFamily","required":false,"schema":{"type":"string"}},{"description":"Built-in icon name; see badge builder.","in":"query","name":"logo","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logoColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logo_color","required":false,"schema":{"type":"string"}},{"description":"Progress denominator; default 100.","in":"query","name":"max","required":false,"schema":{"type":"string"}},{"description":"Progress percent (default), ratio/fraction or count/val/value.","in":"query","name":"format","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"trackColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"track_color","required":false,"schema":{"type":"string"}},{"description":"Up to 8 increasing min:color pairs; 512 characters. Progress compares percentage; standard/hit compare numeric value.","in":"query","name":"thresholds","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"image/svg+xml":{"schema":{"type":"string"}}},"description":"Render public SVG badge"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid ID or thresholds."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"Render public SVG badge","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"head":{"description":"No credentials accepted for revealing private data. Protected/burn/expired/quarantined keys render missing. Existing no-cache/no-store headers retained. Hit GET and implicit HEAD increment public counters; use standard badges for non-mutating views. Status maps healthy/warning/down states. Builder presets produce these URLs. Rate limit: 10/second/IP.","operationId":"head_badge_progress_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"textColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"text_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelTextColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_text_color","required":false,"schema":{"type":"string"}},{"description":"flat default; flat-square/flatsquare/square supported.","in":"query","name":"style","required":false,"schema":{"type":"string"}},{"description":"verdana, mono, monospace, sans, serif or code.","in":"query","name":"font","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"fontFamily","required":false,"schema":{"type":"string"}},{"description":"Built-in icon name; see badge builder.","in":"query","name":"logo","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logoColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logo_color","required":false,"schema":{"type":"string"}},{"description":"Progress denominator; default 100.","in":"query","name":"max","required":false,"schema":{"type":"string"}},{"description":"Progress percent (default), ratio/fraction or count/val/value.","in":"query","name":"format","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"trackColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"track_color","required":false,"schema":{"type":"string"}},{"description":"Up to 8 increasing min:color pairs; 512 characters. Progress compares percentage; standard/hit compare numeric value.","in":"query","name":"thresholds","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Render public SVG badge"},"400":{"description":"Invalid ID or thresholds."},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"HEAD: Render public SVG badge","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_badge_progress_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/badge/status/{id}":{"get":{"description":"No credentials accepted for revealing private data. Protected/burn/expired/quarantined keys render missing. Existing no-cache/no-store headers retained. Hit GET and implicit HEAD increment public counters; use standard badges for non-mutating views. Status maps healthy/warning/down states. Builder presets produce these URLs. Rate limit: 10/second/IP.","operationId":"get_badge_status_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"textColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"text_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelTextColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_text_color","required":false,"schema":{"type":"string"}},{"description":"flat default; flat-square/flatsquare/square supported.","in":"query","name":"style","required":false,"schema":{"type":"string"}},{"description":"verdana, mono, monospace, sans, serif or code.","in":"query","name":"font","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"fontFamily","required":false,"schema":{"type":"string"}},{"description":"Built-in icon name; see badge builder.","in":"query","name":"logo","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logoColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logo_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"up_label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"up_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"warn_label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"warn_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"down_label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"down_color","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"image/svg+xml":{"schema":{"type":"string"}}},"description":"Render public SVG badge"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid ID or thresholds."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"Render public SVG badge","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"head":{"description":"No credentials accepted for revealing private data. Protected/burn/expired/quarantined keys render missing. Existing no-cache/no-store headers retained. Hit GET and implicit HEAD increment public counters; use standard badges for non-mutating views. Status maps healthy/warning/down states. Builder presets produce these URLs. Rate limit: 10/second/IP.","operationId":"head_badge_status_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"textColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"text_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelTextColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_text_color","required":false,"schema":{"type":"string"}},{"description":"flat default; flat-square/flatsquare/square supported.","in":"query","name":"style","required":false,"schema":{"type":"string"}},{"description":"verdana, mono, monospace, sans, serif or code.","in":"query","name":"font","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"fontFamily","required":false,"schema":{"type":"string"}},{"description":"Built-in icon name; see badge builder.","in":"query","name":"logo","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logoColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logo_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"up_label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"up_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"warn_label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"warn_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"down_label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"down_color","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Render public SVG badge"},"400":{"description":"Invalid ID or thresholds."},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"HEAD: Render public SVG badge","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_badge_status_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/badge/{id}":{"get":{"description":"No credentials accepted for revealing private data. Protected/burn/expired/quarantined keys render missing. Existing no-cache/no-store headers retained. Hit GET and implicit HEAD increment public counters; use standard badges for non-mutating views. Status maps healthy/warning/down states. Builder presets produce these URLs. Rate limit: 10/second/IP.","operationId":"get_badge_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"textColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"text_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelTextColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_text_color","required":false,"schema":{"type":"string"}},{"description":"flat default; flat-square/flatsquare/square supported.","in":"query","name":"style","required":false,"schema":{"type":"string"}},{"description":"verdana, mono, monospace, sans, serif or code.","in":"query","name":"font","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"fontFamily","required":false,"schema":{"type":"string"}},{"description":"Built-in icon name; see badge builder.","in":"query","name":"logo","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logoColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logo_color","required":false,"schema":{"type":"string"}},{"description":"Missing-value text; default not found.","in":"query","name":"default","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"colorText","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"prefix","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"suffix","required":false,"schema":{"type":"string"}},{"description":"Up to 8 increasing min:color pairs; 512 characters. Progress compares percentage; standard/hit compare numeric value.","in":"query","name":"thresholds","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"image/svg+xml":{"schema":{"type":"string"}}},"description":"Render public SVG badge"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid ID or thresholds."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"Render public SVG badge","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"head":{"description":"No credentials accepted for revealing private data. Protected/burn/expired/quarantined keys render missing. Existing no-cache/no-store headers retained. Hit GET and implicit HEAD increment public counters; use standard badges for non-mutating views. Status maps healthy/warning/down states. Builder presets produce these URLs. Rate limit: 10/second/IP.","operationId":"head_badge_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"textColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"text_color","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"labelTextColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"label_text_color","required":false,"schema":{"type":"string"}},{"description":"flat default; flat-square/flatsquare/square supported.","in":"query","name":"style","required":false,"schema":{"type":"string"}},{"description":"verdana, mono, monospace, sans, serif or code.","in":"query","name":"font","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"fontFamily","required":false,"schema":{"type":"string"}},{"description":"Built-in icon name; see badge builder.","in":"query","name":"logo","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logoColor","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"logo_color","required":false,"schema":{"type":"string"}},{"description":"Missing-value text; default not found.","in":"query","name":"default","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"colorText","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"prefix","required":false,"schema":{"type":"string"}},{"description":"Optional badge styling; named/hex colors are sanitized.","in":"query","name":"suffix","required":false,"schema":{"type":"string"}},{"description":"Up to 8 increasing min:color pairs; 512 characters. Progress compares percentage; standard/hit compare numeric value.","in":"query","name":"thresholds","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Render public SVG badge"},"400":{"description":"Invalid ID or thresholds."},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"HEAD: Render public SVG badge","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_badge_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/console":{"get":{"description":"","operationId":"get_console","responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Browser console"}},"summary":"Browser console","tags":["Website"]},"head":{"description":"","operationId":"head_console","responses":{"200":{"description":"Browser console"}},"summary":"HEAD: Browser console","tags":["Website"]},"options":{"operationId":"options_get_console","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/decr/{id}":{"get":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. Missing keys initialize from zero. Non-integer/burn values fail. Tracked counter and history commit together; optional by=0 changes history setting without changing value. Responses are no-store. Rate limit: 10/second/IP per handler; 5,000 mutations/day.","operationId":"get_decr_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Signed 64-bit step.","in":"query","name":"by","required":false,"schema":{"default":"1","type":"string"}},{"description":"Integer lower clamp.","in":"query","name":"min","required":false,"schema":{"type":"string"}},{"description":"Integer upper clamp.","in":"query","name":"max","required":false,"schema":{"type":"string"}},{"description":"true enables bounded history; false disables and clears.","in":"query","name":"history","required":false,"schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"id":"example-key","value":1},"schema":{"$ref":"#/components/schemas/Counter"}}},"description":"Legacy atomic decr"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid input"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Missing, expired or quarantined"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Storage or legacy parsing failure"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Legacy atomic decr","tags":["Legacy"],"x-rate-limit":"10/second/IP per handler; 5,000 mutations/day"},"head":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. Missing keys initialize from zero. Non-integer/burn values fail. Tracked counter and history commit together; optional by=0 changes history setting without changing value. Responses are no-store. Rate limit: 10/second/IP per handler; 5,000 mutations/day.","operationId":"head_decr_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Signed 64-bit step.","in":"query","name":"by","required":false,"schema":{"default":"1","type":"string"}},{"description":"Integer lower clamp.","in":"query","name":"min","required":false,"schema":{"type":"string"}},{"description":"Integer upper clamp.","in":"query","name":"max","required":false,"schema":{"type":"string"}},{"description":"true enables bounded history; false disables and clears.","in":"query","name":"history","required":false,"schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"description":"Legacy atomic decr"},"400":{"description":"Invalid input"},"403":{"description":"Insufficient access"},"404":{"description":"Missing, expired or quarantined"},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"description":"Storage or legacy parsing failure"},"default":{"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"HEAD: Legacy atomic decr","tags":["Legacy"],"x-rate-limit":"10/second/IP per handler; 5,000 mutations/day"},"options":{"operationId":"options_get_decr_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. Missing keys initialize from zero. Non-integer/burn values fail. Tracked counter and history commit together; optional by=0 changes history setting without changing value. Responses are no-store. Rate limit: 10/second/IP per handler; 5,000 mutations/day.","operationId":"post_decr_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Signed 64-bit step.","in":"query","name":"by","required":false,"schema":{"default":"1","type":"string"}},{"description":"Integer lower clamp.","in":"query","name":"min","required":false,"schema":{"type":"string"}},{"description":"Integer upper clamp.","in":"query","name":"max","required":false,"schema":{"type":"string"}},{"description":"true enables bounded history; false disables and clears.","in":"query","name":"history","required":false,"schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"id":"example-key","value":1},"schema":{"$ref":"#/components/schemas/Counter"}}},"description":"Legacy atomic decr"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid input"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Missing, expired or quarantined"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Storage or legacy parsing failure"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Legacy atomic decr","tags":["Legacy"],"x-rate-limit":"10/second/IP per handler; 5,000 mutations/day"}},"/docs":{"get":{"description":"","operationId":"get_docs","responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Documentation"}},"summary":"Documentation","tags":["Website"]},"head":{"description":"","operationId":"head_docs","responses":{"200":{"description":"Documentation"}},"summary":"HEAD: Documentation","tags":["Website"]},"options":{"operationId":"options_get_docs","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/feedback":{"get":{"description":"","operationId":"get_feedback","parameters":[{"description":"Prefill feedback type.","in":"query","name":"type","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Feedback form"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate limit"}},"summary":"Feedback form","tags":["Website"],"x-rate-limit":"10/second/IP"},"head":{"description":"","operationId":"head_feedback","parameters":[{"description":"Prefill feedback type.","in":"query","name":"type","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Feedback form"},"429":{"description":"Rate limit"}},"summary":"HEAD: Feedback form","tags":["Website"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_feedback","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"Returns HTML success or validation error (both 200). Turnstile verification when enabled. Feedback message max 2000 characters; abuse description max 5000. Do not submit credentials. Rate limit: 10/second/IP.","operationId":"post_feedback","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"properties":{"cf-turnstile-response":{"type":"string"},"contact_email":{"type":"string"},"display_name":{"type":"string"},"feedback_type":{"type":"string"},"message":{"type":"string"},"project_url":{"type":"string"},"star_rating":{"type":"string"}},"required":["feedback_type","message"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Submit feedback"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"Submit feedback","tags":["Website"],"x-rate-limit":"10/second/IP"}},"/get/{id}":{"get":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. Burn returns raw text except format=json. Implicit HEAD also consumes burn data. Public reads may be cached for 1800 seconds; database-backed reads conditionally renew after 5% of TTL, cache hits do not. Rate limit: 10/second/IP.","operationId":"get_get_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"auto parses objects/arrays; json requires JSON; text disables parsing.","in":"query","name":"format","required":false,"schema":{"default":"auto","enum":["auto","json","text"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"content_type":"application/json","id":"example-key","value":{"checks":[true,null,42]}},"schema":{"$ref":"#/components/schemas/LegacyRead"}},"text/plain":{"schema":{"type":"string"}}},"description":"Legacy read envelope or consuming burn read"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid input"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Missing, expired or quarantined"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Storage or legacy parsing failure"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Legacy read envelope or consuming burn read","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"head":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. Burn returns raw text except format=json. Implicit HEAD also consumes burn data. Public reads may be cached for 1800 seconds; database-backed reads conditionally renew after 5% of TTL, cache hits do not. Rate limit: 10/second/IP.","operationId":"head_get_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"auto parses objects/arrays; json requires JSON; text disables parsing.","in":"query","name":"format","required":false,"schema":{"default":"auto","enum":["auto","json","text"],"type":"string"}}],"responses":{"200":{"description":"Legacy read envelope or consuming burn read"},"400":{"description":"Invalid input"},"403":{"description":"Insufficient access"},"404":{"description":"Missing, expired or quarantined"},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"description":"Storage or legacy parsing failure"},"default":{"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"HEAD: Legacy read envelope or consuming burn read","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_get_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/incr/{id}":{"get":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. Missing keys initialize from zero. Non-integer/burn values fail. Tracked counter and history commit together; optional by=0 changes history setting without changing value. Responses are no-store. Rate limit: 10/second/IP per handler; 5,000 mutations/day.","operationId":"get_incr_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Signed 64-bit step.","in":"query","name":"by","required":false,"schema":{"default":"1","type":"string"}},{"description":"Integer lower clamp.","in":"query","name":"min","required":false,"schema":{"type":"string"}},{"description":"Integer upper clamp.","in":"query","name":"max","required":false,"schema":{"type":"string"}},{"description":"true enables bounded history; false disables and clears.","in":"query","name":"history","required":false,"schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"id":"example-key","value":1},"schema":{"$ref":"#/components/schemas/Counter"}}},"description":"Legacy atomic incr"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid input"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Missing, expired or quarantined"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Storage or legacy parsing failure"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Legacy atomic incr","tags":["Legacy"],"x-rate-limit":"10/second/IP per handler; 5,000 mutations/day"},"head":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. Missing keys initialize from zero. Non-integer/burn values fail. Tracked counter and history commit together; optional by=0 changes history setting without changing value. Responses are no-store. Rate limit: 10/second/IP per handler; 5,000 mutations/day.","operationId":"head_incr_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Signed 64-bit step.","in":"query","name":"by","required":false,"schema":{"default":"1","type":"string"}},{"description":"Integer lower clamp.","in":"query","name":"min","required":false,"schema":{"type":"string"}},{"description":"Integer upper clamp.","in":"query","name":"max","required":false,"schema":{"type":"string"}},{"description":"true enables bounded history; false disables and clears.","in":"query","name":"history","required":false,"schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"description":"Legacy atomic incr"},"400":{"description":"Invalid input"},"403":{"description":"Insufficient access"},"404":{"description":"Missing, expired or quarantined"},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"description":"Storage or legacy parsing failure"},"default":{"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"HEAD: Legacy atomic incr","tags":["Legacy"],"x-rate-limit":"10/second/IP per handler; 5,000 mutations/day"},"options":{"operationId":"options_get_incr_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. Missing keys initialize from zero. Non-integer/burn values fail. Tracked counter and history commit together; optional by=0 changes history setting without changing value. Responses are no-store. Rate limit: 10/second/IP per handler; 5,000 mutations/day.","operationId":"post_incr_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Signed 64-bit step.","in":"query","name":"by","required":false,"schema":{"default":"1","type":"string"}},{"description":"Integer lower clamp.","in":"query","name":"min","required":false,"schema":{"type":"string"}},{"description":"Integer upper clamp.","in":"query","name":"max","required":false,"schema":{"type":"string"}},{"description":"true enables bounded history; false disables and clears.","in":"query","name":"history","required":false,"schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"id":"example-key","value":1},"schema":{"$ref":"#/components/schemas/Counter"}}},"description":"Legacy atomic incr"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid input"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Missing, expired or quarantined"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Storage or legacy parsing failure"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Legacy atomic incr","tags":["Legacy"],"x-rate-limit":"10/second/IP per handler; 5,000 mutations/day"}},"/legal":{"get":{"description":"","operationId":"get_legal","responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Terms and privacy"}},"summary":"Terms and privacy","tags":["Website"]},"head":{"description":"","operationId":"head_legal","responses":{"200":{"description":"Terms and privacy"}},"summary":"HEAD: Terms and privacy","tags":["Website"]},"options":{"operationId":"options_get_legal","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/llms.txt":{"get":{"description":"","operationId":"get_llms_txt","responses":{"200":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Concise API instructions"}},"summary":"Concise API instructions","tags":["Legacy"]},"head":{"description":"","operationId":"head_llms_txt","responses":{"200":{"description":"Concise API instructions"}},"summary":"HEAD: Concise API instructions","tags":["Legacy"]},"options":{"operationId":"options_get_llms_txt","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/openapi.json":{"get":{"description":"","operationId":"get_openapi_json","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"This OpenAPI 3.1 document"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"summary":"This OpenAPI 3.1 document","tags":["Legacy"]},"head":{"description":"","operationId":"head_openapi_json","responses":{"200":{"description":"This OpenAPI 3.1 document"},"default":{"description":"Error; legacy failures may also return framework HTML."}},"summary":"HEAD: This OpenAPI 3.1 document","tags":["Legacy"]},"options":{"operationId":"options_get_openapi_json","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/poll/{id}":{"get":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. No SSE or event replay. Burn values are excluded. Expiration/deletion do not return a value; authorization rechecked before delivery. Rate limit: 10/second/IP.","operationId":"get_poll_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Last raw value; absent waits for next signal.","in":"query","name":"last","required":false,"schema":{"type":"string"}},{"description":"Integer seconds (optional s suffix), clamped 1\u201390.","in":"query","name":"timeout","required":false,"schema":{"default":"30","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"id":"example-key","status":"changed","value":"ready"},"schema":{"$ref":"#/components/schemas/Poll"}}},"description":"Wait for a visible value change"},"304":{"description":"Timeout or no visible value; no response body on HTTP wire."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid input"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Missing, expired or quarantined"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Storage or legacy parsing failure"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Wait for a visible value change","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"head":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. No SSE or event replay. Burn values are excluded. Expiration/deletion do not return a value; authorization rechecked before delivery. Rate limit: 10/second/IP.","operationId":"head_poll_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Last raw value; absent waits for next signal.","in":"query","name":"last","required":false,"schema":{"type":"string"}},{"description":"Integer seconds (optional s suffix), clamped 1\u201390.","in":"query","name":"timeout","required":false,"schema":{"default":"30","type":"string"}}],"responses":{"200":{"description":"Wait for a visible value change"},"304":{"description":"Timeout or no visible value; no response body on HTTP wire."},"400":{"description":"Invalid input"},"403":{"description":"Insufficient access"},"404":{"description":"Missing, expired or quarantined"},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"description":"Storage or legacy parsing failure"},"default":{"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"HEAD: Wait for a visible value change","tags":["Legacy"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_poll_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/report-abuse":{"get":{"description":"","operationId":"get_report_abuse","responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Abuse reporting form"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate limit"}},"summary":"Abuse reporting form","tags":["Website"],"x-rate-limit":"10/second/IP"},"head":{"description":"","operationId":"head_report_abuse","responses":{"200":{"description":"Abuse reporting form"},"429":{"description":"Rate limit"}},"summary":"HEAD: Abuse reporting form","tags":["Website"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_report_abuse","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"Returns HTML success or validation error (both 200). Turnstile verification when enabled. Feedback message max 2000 characters; abuse description max 5000. Do not submit credentials. Rate limit: 10/second/IP.","operationId":"post_report_abuse","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"properties":{"cf-turnstile-response":{"type":"string"},"description":{"type":"string"},"entry_id":{"type":"string"},"report_type":{"type":"string"},"reporter_contact":{"type":"string"}},"required":["report_type","description"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Submit report-abuse"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}}},"summary":"Submit report-abuse","tags":["Website"],"x-rate-limit":"10/second/IP"}},"/reviews":{"get":{"description":"","operationId":"get_reviews","responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Approved public reviews"}},"summary":"Approved public reviews","tags":["Website"]},"head":{"description":"","operationId":"head_reviews","responses":{"200":{"description":"Approved public reviews"}},"summary":"HEAD: Approved public reviews","tags":["Website"]},"options":{"operationId":"options_get_reviews","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/robots.txt":{"get":{"description":"","operationId":"get_robots_txt","responses":{"200":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Crawler rules"}},"summary":"Crawler rules","tags":["Legacy"]},"head":{"description":"","operationId":"head_robots_txt","responses":{"200":{"description":"Crawler rules"}},"summary":"HEAD: Crawler rules","tags":["Legacy"]},"options":{"operationId":"options_get_robots_txt","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/set/{id}":{"options":{"operationId":"options_post_set_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"Missing/wrong credentials: 403. Header takes precedence over query password. Protected/burn responses are private/no-store. Standard writes trim whitespace and reject empty data; burn preserves it. Limit counts decoded Unicode characters, not bytes. Protected overwrites require the existing password. Legacy SET accepts a broader key space than GET. Rate limit: 10/second/IP; 5,000 mutations/day.","operationId":"post_set_id","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"id","required":true,"schema":{"minLength":1,"type":"string"}},{"description":"Numeric seconds or s/m/h/d suffix, capped at 365 days; default 365 days. ttl=1read enables burn. Unsupported strings can fail with legacy 500 behavior.","in":"query","name":"ttl","required":false,"schema":{"type":"string"}},{"description":"true or 1 enables one-time reads; numeric ttl is ignored for burn.","in":"query","name":"burn","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"text/plain":{"schema":{"maxLength":50000,"type":"string"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"id":{"type":"string"},"status":{"const":"ok","type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Legacy text write"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Invalid input"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Missing, expired or quarantined"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Character limit exceeded"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Storage or legacy parsing failure"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}},"text/html":{"schema":{"type":"string"}}},"description":"Error; legacy failures may also return framework HTML."}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Legacy text write","tags":["Legacy"],"x-rate-limit":"10/second/IP; 5,000 mutations/day"}},"/static/{filename}":{"get":{"description":"","operationId":"get_static_filename","parameters":[{"description":"Relative static asset path (may contain slashes).","in":"path","name":"filename","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/octet-stream":{"schema":{"type":"string"}}},"description":"Public static assets (media type depends on filename)"}},"summary":"Public static assets (media type depends on filename)","tags":["Legacy"]},"head":{"description":"","operationId":"head_static_filename","parameters":[{"description":"Relative static asset path (may contain slashes).","in":"path","name":"filename","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Public static assets (media type depends on filename)"}},"summary":"HEAD: Public static assets (media type depends on filename)","tags":["Legacy"]},"options":{"operationId":"options_get_static_filename","parameters":[{"description":"Relative static asset path (may contain slashes).","in":"path","name":"filename","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/stats":{"get":{"description":"","operationId":"get_stats","responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Aggregate storage statistics (five-minute cache)"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}},"description":"Rate limit"}},"summary":"Aggregate storage statistics (five-minute cache)","tags":["Website"],"x-rate-limit":"10/second/IP"},"head":{"description":"","operationId":"head_stats","responses":{"200":{"description":"Aggregate storage statistics (five-minute cache)"},"429":{"description":"Rate limit"}},"summary":"HEAD: Aggregate storage statistics (five-minute cache)","tags":["Website"],"x-rate-limit":"10/second/IP"},"options":{"operationId":"options_get_stats","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/stream":{"get":{"description":"","operationId":"get_stream","responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Aggregate live activity"}},"summary":"Aggregate live activity","tags":["Website"]},"head":{"description":"","operationId":"head_stream","responses":{"200":{"description":"Aggregate live activity"}},"summary":"HEAD: Aggregate live activity","tags":["Website"]},"options":{"operationId":"options_get_stream","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/tools/badge":{"get":{"description":"","operationId":"get_tools_badge","responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Badge builder"}},"summary":"Badge builder","tags":["Website"]},"head":{"description":"","operationId":"head_tools_badge","responses":{"200":{"description":"Badge builder"}},"summary":"HEAD: Badge builder","tags":["Website"]},"options":{"operationId":"options_get_tools_badge","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/v1/batch":{"options":{"operationId":"options_post_v1_batch","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"1\u201325 GET/PUT items; 1 MiB entire request. All operations share the request credential. Earlier successful writes survive later failures; response contains each status/body/headers. Rate limit: 1/second/IP; each attempted PUT counts daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"post_v1_batch","requestBody":{"content":{"application/json":{"example":{"operations":[{"key":"example-key","method":"GET"}]},"schema":{"$ref":"#/components/schemas/Batch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"atomic":false,"results":[{"body":{"error":{"code":"not_found","message":"Key not found."}},"headers":{},"status":404}]},"schema":{"$ref":"#/components/schemas/BatchResult"}}},"description":"Sequential non-atomic multi-get/set"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Sequential non-atomic multi-get/set","tags":["v1"],"x-rate-limit":"1/second/IP; each attempted PUT counts daily"}},"/v1/keys":{"options":{"operationId":"options_post_v1_keys","parameters":[],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"capabilities=true returns separate tokens only once. Writer also reads. Burn uses existing storage and requires absolute expiry. Rate limit: 10/second/IP; shared 5,000 attempted mutations/day. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"post_v1_keys","requestBody":{"content":{"application/json":{"example":{"ttl_mode":"absolute","ttl_seconds":3600,"value":"hello"},"schema":{"$ref":"#/components/schemas/Create"}}},"required":true},"responses":{"201":{"content":{"application/json":{"example":{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"version":"opaque-version"},"schema":{"$ref":"#/components/schemas/Created"}}},"description":"Generate a random key","headers":{"ETag":{"description":"Strong opaque version; legacy mutations also change it.","schema":{"type":"string"}},"Location":{"description":"New key URL.","schema":{"type":"string"}},"X-Content-Type":{"description":"Stored value media type.","schema":{"type":"string"}},"X-Expires-At":{"description":"ISO 8601 expiration when present.","schema":{"type":"string"}},"X-Value-Bytes":{"description":"UTF-8 size.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Generate a random key","tags":["v1"],"x-rate-limit":"10/second/IP; shared 5,000 attempted mutations/day"}},"/v1/keys/{key}":{"delete":{"description":"GET sliding renewal occurs after 5% of TTL, except read-only capabilities. GET refuses burn values with 409. PUT/PATCH preserve protection. Merge Patch recursively merges objects; null members delete, arrays/scalars replace. DELETE missing returns 404. Conditional checks and writes share one lock. Rate limit: 10/second/IP shared across methods on this path; mutations also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"delete_v1_keys_key","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Strong quoted ETag (or list); * requires existence. PATCH requires an exact tag.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Only * is supported; cannot combine with If-Match.","in":"header","name":"If-None-Match","required":false,"schema":{"const":"*","type":"string"}}],"responses":{"204":{"description":"Delete key"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Delete key","tags":["v1"],"x-rate-limit":"10/second/IP shared across methods on this path; mutations also count daily"},"get":{"description":"GET sliding renewal occurs after 5% of TTL, except read-only capabilities. GET refuses burn values with 409. PUT/PATCH preserve protection. Merge Patch recursively merges objects; null members delete, arrays/scalars replace. DELETE missing returns 404. Conditional checks and writes share one lock. Rate limit: 10/second/IP shared across methods on this path; mutations also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers. format=raw with JSON content returns the stored JSON document rather than the envelope.","operationId":"get_v1_keys_key","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"raw returns exact UTF-8 text; otherwise metadata plus string value.","in":"query","name":"format","required":false,"schema":{"enum":["raw"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"envelope":{"value":{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"value":"hello","version":"opaque-version"}},"raw_json":{"summary":"format=raw for a JSON key","value":{"checks":[true,null,42]}}},"schema":{"anyOf":[{"$ref":"#/components/schemas/KeyRead"},{}]}},"text/plain":{"schema":{"type":"string"}}},"description":"Read value and metadata","headers":{"ETag":{"description":"Strong opaque version; legacy mutations also change it.","schema":{"type":"string"}},"X-Content-Type":{"description":"Stored value media type.","schema":{"type":"string"}},"X-Expires-At":{"description":"ISO 8601 expiration when present.","schema":{"type":"string"}},"X-Value-Bytes":{"description":"UTF-8 size.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Read value and metadata","tags":["v1"],"x-rate-limit":"10/second/IP shared across methods on this path; mutations also count daily"},"head":{"description":"GET sliding renewal occurs after 5% of TTL, except read-only capabilities. GET refuses burn values with 409. PUT/PATCH preserve protection. Merge Patch recursively merges objects; null members delete, arrays/scalars replace. DELETE missing returns 404. Conditional checks and writes share one lock. Rate limit: 10/second/IP shared across methods on this path; mutations also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"head_v1_keys_key","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Check metadata without renewal or consumption","headers":{"ETag":{"description":"Strong opaque version; legacy mutations also change it.","schema":{"type":"string"}},"X-Content-Type":{"description":"Stored value media type.","schema":{"type":"string"}},"X-Expires-At":{"description":"ISO 8601 expiration when present.","schema":{"type":"string"}},"X-Value-Bytes":{"description":"UTF-8 size.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Check metadata without renewal or consumption","tags":["v1"],"x-rate-limit":"10/second/IP shared across methods on this path; mutations also count daily"},"options":{"operationId":"options_get_v1_keys_key","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"patch":{"description":"GET sliding renewal occurs after 5% of TTL, except read-only capabilities. GET refuses burn values with 409. PUT/PATCH preserve protection. Merge Patch recursively merges objects; null members delete, arrays/scalars replace. DELETE missing returns 404. Conditional checks and writes share one lock. Rate limit: 10/second/IP shared across methods on this path; mutations also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"patch_v1_keys_key","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Strong quoted ETag (or list); * requires existence. PATCH requires an exact tag.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Only * is supported; cannot combine with If-Match.","in":"header","name":"If-None-Match","required":false,"schema":{"const":"*","type":"string"}},{"description":"Integer seconds; preserves existing TTL when omitted.","in":"query","name":"ttl_seconds","required":false,"schema":{"maximum":31536000,"minimum":1,"type":"integer"}},{"description":"Cannot remove or extend an existing absolute deadline.","in":"query","name":"ttl_mode","required":false,"schema":{"enum":["sliding","absolute"],"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"application/merge-patch+json":{"schema":{}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"version":"opaque-version"},"schema":{"$ref":"#/components/schemas/Metadata"}}},"description":"Apply JSON Merge Patch","headers":{"ETag":{"description":"Strong opaque version; legacy mutations also change it.","schema":{"type":"string"}},"X-Content-Type":{"description":"Stored value media type.","schema":{"type":"string"}},"X-Expires-At":{"description":"ISO 8601 expiration when present.","schema":{"type":"string"}},"X-Value-Bytes":{"description":"UTF-8 size.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Apply JSON Merge Patch","tags":["v1"],"x-rate-limit":"10/second/IP shared across methods on this path; mutations also count daily"},"put":{"description":"GET sliding renewal occurs after 5% of TTL, except read-only capabilities. GET refuses burn values with 409. PUT/PATCH preserve protection. Merge Patch recursively merges objects; null members delete, arrays/scalars replace. DELETE missing returns 404. Conditional checks and writes share one lock. Rate limit: 10/second/IP shared across methods on this path; mutations also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"put_v1_keys_key","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Strong quoted ETag (or list); * requires existence. PATCH requires an exact tag.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Only * is supported; cannot combine with If-Match.","in":"header","name":"If-None-Match","required":false,"schema":{"const":"*","type":"string"}},{"description":"Integer seconds; preserves existing TTL when omitted.","in":"query","name":"ttl_seconds","required":false,"schema":{"maximum":31536000,"minimum":1,"type":"integer"}},{"description":"Cannot remove or extend an existing absolute deadline.","in":"query","name":"ttl_mode","required":false,"schema":{"enum":["sliding","absolute"],"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"text/plain":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"version":"opaque-version"},"schema":{"$ref":"#/components/schemas/Metadata"}}},"description":"Create or replace exact UTF-8 text","headers":{"ETag":{"description":"Strong opaque version; legacy mutations also change it.","schema":{"type":"string"}},"X-Content-Type":{"description":"Stored value media type.","schema":{"type":"string"}},"X-Expires-At":{"description":"ISO 8601 expiration when present.","schema":{"type":"string"}},"X-Value-Bytes":{"description":"UTF-8 size.","schema":{"type":"string"}}}},"201":{"content":{"application/json":{"example":{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"version":"opaque-version"},"schema":{"$ref":"#/components/schemas/Metadata"}}},"description":"Created","headers":{"ETag":{"description":"Strong opaque version; legacy mutations also change it.","schema":{"type":"string"}},"X-Content-Type":{"description":"Stored value media type.","schema":{"type":"string"}},"X-Expires-At":{"description":"ISO 8601 expiration when present.","schema":{"type":"string"}},"X-Value-Bytes":{"description":"UTF-8 size.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Create or replace exact UTF-8 text","tags":["v1"],"x-rate-limit":"10/second/IP shared across methods on this path; mutations also count daily"}},"/v1/keys/{key}/consume":{"options":{"operationId":"options_post_v1_keys_key_consume","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"Meta/history never renew or consume. Consume requires write access; only one competing consumer succeeds. History requires prior history=true on a counter mutation; disabled returns 409. Touch never revives expired keys. A lost consume response cannot be recovered. Rate limit: 10/second/IP; touch/consume also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"post_v1_keys_key_consume","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Strong quoted ETag (or list); * requires existence. PATCH requires an exact tag.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Only * is supported; cannot combine with If-Match.","in":"header","name":"If-None-Match","required":false,"schema":{"const":"*","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"consumed":true,"content_type":"text/plain","id":"example-key","value":"hello"},"schema":{"$ref":"#/components/schemas/Consumed"}}},"description":"Read and delete a burn value once"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Read and delete a burn value once","tags":["v1"],"x-rate-limit":"10/second/IP; touch/consume also count daily"}},"/v1/keys/{key}/history":{"get":{"description":"Meta/history never renew or consume. Consume requires write access; only one competing consumer succeeds. History requires prior history=true on a counter mutation; disabled returns 409. Touch never revives expired keys. A lost consume response cannot be recovered. Rate limit: 10/second/IP; touch/consume also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"get_v1_keys_key_history","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"UTC retention: 168 hours, 90 days, 24 months.","in":"query","name":"resolution","required":false,"schema":{"default":"hour","enum":["hour","day","month"],"type":"string"}},{"description":"Timezone-aware ISO 8601 bucket-start boundary; start inclusive, end exclusive.","in":"query","name":"start","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Timezone-aware ISO 8601 bucket-start boundary; start inclusive, end exclusive.","in":"query","name":"end","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"buckets":[{"delta":"2","last_value":"2","operations":1,"start":"2026-01-02T00:00:00Z"}],"id":"example-key","resolution":"hour","retained_from":"2026-01-01T00:00:00Z","retention_buckets":168,"timezone":"UTC"},"schema":{"$ref":"#/components/schemas/History"}}},"description":"Read bounded counter aggregates"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Read bounded counter aggregates","tags":["v1"],"x-rate-limit":"10/second/IP; touch/consume also count daily"},"head":{"description":"Meta/history never renew or consume. Consume requires write access; only one competing consumer succeeds. History requires prior history=true on a counter mutation; disabled returns 409. Touch never revives expired keys. A lost consume response cannot be recovered. Rate limit: 10/second/IP; touch/consume also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"head_v1_keys_key_history","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"UTC retention: 168 hours, 90 days, 24 months.","in":"query","name":"resolution","required":false,"schema":{"default":"hour","enum":["hour","day","month"],"type":"string"}},{"description":"Timezone-aware ISO 8601 bucket-start boundary; start inclusive, end exclusive.","in":"query","name":"start","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Timezone-aware ISO 8601 bucket-start boundary; start inclusive, end exclusive.","in":"query","name":"end","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"Read bounded counter aggregates"},"400":{"description":"Invalid input"},"401":{"description":"Malformed Authorization"},"403":{"description":"Insufficient access"},"404":{"description":"Missing, expired or quarantined"},"409":{"description":"Incompatible operation"},"412":{"description":"Precondition failed"},"413":{"description":"UTF-8 value or 1 MiB request limit"},"415":{"description":"Unsupported media type"},"428":{"description":"PATCH requires exact ETag"},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"HEAD: Read bounded counter aggregates","tags":["v1"],"x-rate-limit":"10/second/IP; touch/consume also count daily"},"options":{"operationId":"options_get_v1_keys_key_history","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/v1/keys/{key}/meta":{"get":{"description":"Meta/history never renew or consume. Consume requires write access; only one competing consumer succeeds. History requires prior history=true on a counter mutation; disabled returns 409. Touch never revives expired keys. A lost consume response cannot be recovered. Rate limit: 10/second/IP; touch/consume also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"get_v1_keys_key_meta","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"version":"opaque-version"},"schema":{"$ref":"#/components/schemas/Metadata"}}},"description":"Read safe metadata","headers":{"ETag":{"description":"Strong opaque version; legacy mutations also change it.","schema":{"type":"string"}},"X-Content-Type":{"description":"Stored value media type.","schema":{"type":"string"}},"X-Expires-At":{"description":"ISO 8601 expiration when present.","schema":{"type":"string"}},"X-Value-Bytes":{"description":"UTF-8 size.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Read safe metadata","tags":["v1"],"x-rate-limit":"10/second/IP; touch/consume also count daily"},"head":{"description":"Meta/history never renew or consume. Consume requires write access; only one competing consumer succeeds. History requires prior history=true on a counter mutation; disabled returns 409. Touch never revives expired keys. A lost consume response cannot be recovered. Rate limit: 10/second/IP; touch/consume also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"head_v1_keys_key_meta","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Read safe metadata","headers":{"ETag":{"description":"Strong opaque version; legacy mutations also change it.","schema":{"type":"string"}},"X-Content-Type":{"description":"Stored value media type.","schema":{"type":"string"}},"X-Expires-At":{"description":"ISO 8601 expiration when present.","schema":{"type":"string"}},"X-Value-Bytes":{"description":"UTF-8 size.","schema":{"type":"string"}}}},"400":{"description":"Invalid input"},"401":{"description":"Malformed Authorization"},"403":{"description":"Insufficient access"},"404":{"description":"Missing, expired or quarantined"},"409":{"description":"Incompatible operation"},"412":{"description":"Precondition failed"},"413":{"description":"UTF-8 value or 1 MiB request limit"},"415":{"description":"Unsupported media type"},"428":{"description":"PATCH requires exact ETag"},"429":{"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"HEAD: Read safe metadata","tags":["v1"],"x-rate-limit":"10/second/IP; touch/consume also count daily"},"options":{"operationId":"options_get_v1_keys_key_meta","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"}},"/v1/keys/{key}/touch":{"options":{"operationId":"options_post_v1_keys_key_touch","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}}],"responses":{"200":{"description":"Allow header lists methods. No cross-origin CORS grant is implied."}},"summary":"Automatic allowed-method discovery"},"post":{"description":"Meta/history never renew or consume. Consume requires write access; only one competing consumer succeeds. History requires prior history=true on a counter mutation; disabled returns 409. Touch never revives expired keys. A lost consume response cannot be recovered. Rate limit: 10/second/IP; touch/consume also count daily. Responses are private, no-store. No credentials or private metadata are returned to unauthorized callers.","operationId":"post_v1_keys_key_touch","parameters":[{"description":"Existing key. No enumeration.","in":"path","name":"key","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,200}$","type":"string"}},{"description":"Strong quoted ETag (or list); * requires existence. PATCH requires an exact tag.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Only * is supported; cannot combine with If-Match.","in":"header","name":"If-None-Match","required":false,"schema":{"const":"*","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{},"schema":{"$ref":"#/components/schemas/Touch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"absolute_expires_at":"2026-01-01T01:00:00+00:00","burn":false,"content_type":"text/plain","created_at":"2026-01-01T00:00:00+00:00","expires_at":"2026-01-01T01:00:00+00:00","id":"example-key","protected":false,"size_bytes":5,"ttl_mode":"absolute","ttl_seconds":3600,"version":"opaque-version"},"schema":{"$ref":"#/components/schemas/Metadata"}}},"description":"Renew within absolute deadline","headers":{"ETag":{"description":"Strong opaque version; legacy mutations also change it.","schema":{"type":"string"}},"X-Content-Type":{"description":"Stored value media type.","schema":{"type":"string"}},"X-Expires-At":{"description":"ISO 8601 expiration when present.","schema":{"type":"string"}},"X-Value-Bytes":{"description":"UTF-8 size.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid input"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed Authorization"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient access"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing, expired or quarantined"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Incompatible operation"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"UTF-8 value or 1 MiB request limit"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"PATCH requires exact ETag"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate/storage/daily limit; Retry-After when supplied.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Storage unavailable"}},"security":[{"Bearer":[]},{"QueryPassword":[]},{}],"summary":"Renew within absolute deadline","tags":["v1"],"x-rate-limit":"10/second/IP; touch/consume also count daily"}}},"servers":[{"url":"/"}],"x-websockets":{"/stream/ws":{"description":"One-second aggregate counts of legacy broadcast events, not a complete HTTP request counter; never identifiers or values. Not SSE.","message":{"$ref":"#/components/schemas/Activity"}}}}
