{"openapi":"3.1.1","jsonSchemaDialect":"https://spec.openapis.org/oas/3.1/dialect/base","info":{"title":"Kevin Fincel contact API","version":"1.1","description":"Send Kevin a message. A successful response records provider acceptance; it does not promise inbox placement or reading. 3 attempts per hour in the strict bucket. Agent requests need no spam check. Send one introduction per person you represent. Limits count HTTP attempts, including invalid requests, per server instance and trusted IP attribution bucket. IPv4 uses one bucket; IPv6 shares a /64 bucket. Unknown attribution uses one shared strict bucket. Shared networks share the allowance. These are request limits, not successful delivery counts. Legacy mode: retrySupported:false. Idempotency-Key is ignored; no UUID validation or deduplication is active. A 504 may already have reached the provider; do not resend automatically."},"servers":[{"url":"https://finceldesign.com"}],"security":[],"x-contact-capabilities":{"deliveryMode":"legacy","configured":true,"retrySupported":false,"enabled":true,"rate":"3 attempts per hour in the strict bucket. Agent requests need no spam check. Send one introduction per person you represent. Limits count HTTP attempts, including invalid requests, per server instance and trusted IP attribution bucket. IPv4 uses one bucket; IPv6 shares a /64 bucket. Unknown attribution uses one shared strict bucket. Shared networks share the allowance. These are request limits, not successful delivery counts.","retry":"Legacy mode: retrySupported:false. Idempotency-Key is ignored; no UUID validation or deduplication is active. A 504 may already have reached the provider; do not resend automatically."},"x-contact-errors":{"invalid_json":{"http":400,"action":"Correct the UTF-8 JSON object; no delivery occurred."},"invalid_request":{"http":400,"action":"Supply a readable body; no delivery occurred."},"request_timeout":{"http":408,"action":"Body was incomplete; no delivery occurred. Retry the same keyed request."},"payload_too_large":{"http":413,"action":"Reduce the body to the published byte limit."},"unsupported_media_type":{"http":415,"action":"Send application/json with UTF-8."},"unsupported_encoding":{"http":415,"action":"Send uncompressed JSON."},"browser_origin_required":{"http":403,"action":"Use the same-origin browser form or a server-side agent client."},"clearance_required":{"http":403,"action":"Follow /api/clearance in the browser before resubmitting."},"missing_fields":{"http":422,"action":"Supply name, replyTo and message."},"invalid_reply_to":{"http":422,"action":"Supply one ASCII dot-atom mailbox with a dotted DNS-style domain."},"invalid_fields":{"http":422,"action":"Correct the bounded fieldErrors; no delivery occurred."},"rate_limited":{"http":429,"action":"Wait matching Retry-After and retryAfter seconds before another HTTP attempt."},"delivery_rejected":{"http":502,"action":"Provider definitively rejected delivery. Retry only if retryable is true, retaining any original key and payload."},"delivery_unconfigured":{"http":503,"legacyOnly":true,"action":"No provider attempt occurred. Keep your draft while configuration is restored."},"contact_unavailable":{"http":503,"action":"Configuration, storage or capacity is unavailable. Keep your draft; respect retryable and retryAfter."},"delivery_deferred":{"http":503,"action":"Provider or capacity deferred the attempt. Respect retryable and retryAfter; preserve any existing key and payload."},"delivery_unknown":{"http":504,"action":"Provider may have accepted. Only durable keyed requests with retryable:true may retry identical key and payload within retryUntil. Otherwise stop; never create a new key to resolve uncertainty."}},"paths":{"/api/contact":{"get":{"operationId":"discoverIntroduction","summary":"Read current contact capabilities before sending","security":[],"responses":{"200":{"description":"Runtime configuration, limits and OpenAPI linkage; configured describes local config validity, not database health.","headers":{"Cache-Control":{"schema":{"const":"no-store"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Discovery"}}}}}},"post":{"operationId":"submitIntroduction","summary":"Send Kevin an introduction","security":[],"description":"HTTPS application/json UTF-8 object; no Content-Encoding other than identity. The byte cap and body deadline are application bounds, not full edge DDoS protection. No authentication is required. Server-side agents omit Origin and Sec-Fetch-Site. These headers classify transport independently of channel; they do not authenticate identity. Use https://finceldesign.com/#contact or same-origin browser requests following /api/clearance. Browsers manage Origin and Sec-Fetch-Site; do not attempt to remove them. Cross-origin browser CORS is not supported. Every POST response is Cache-Control:no-store with X-Request-Id, a fresh opaque requestId per HTTP attempt. Never exposes recipient addresses, provider identifiers, submitted values or credentials. Legacy mode: retrySupported:false. Idempotency-Key is ignored; no UUID validation or deduplication is active. A 504 may already have reached the provider; do not resend automatically.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Legacy mode: retrySupported:false. Idempotency-Key is ignored; no UUID validation or deduplication is active. A 504 may already have reached the provider; do not resend automatically.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Introduction"},"examples":{"introduction":{"summary":"Minimal agent introduction; omitted channel defaults to agent","value":{"name":"Alex Example","replyTo":"alex@example.com","message":"I represent an owner who would like to discuss automating intake. Please reply to Alex."}},"normalized":{"summary":"Trim surrounding spaces and normalize message CRLF; preserve mailbox case","value":{"name":"  Alex Example  ","replyTo":"Alex@example.com","message":"  First line\r\nSecond line 😀  ","company":"","nextStep":"Discuss scope","channel":"agent","website":""}}}}}},"responses":{"200":{"description":"Provider accepted. Stop sending; this is not inbox placement or reading.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Accepted"}}}},"400":{"description":"invalid_json: Correct the UTF-8 JSON object; no delivery occurred.\ninvalid_request: Supply a readable body; no delivery occurred.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/invalid_json"},{"$ref":"#/components/schemas/invalid_request"}]}}}},"403":{"description":"browser_origin_required: Use the same-origin browser form or a server-side agent client.\nclearance_required: Follow /api/clearance in the browser before resubmitting.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/browser_origin_required"},{"$ref":"#/components/schemas/clearance_required"}]}}}},"408":{"description":"request_timeout: Body was incomplete; no delivery occurred. Retry the same keyed request.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/request_timeout"}]}}}},"413":{"description":"payload_too_large: Reduce the body to the published byte limit.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/payload_too_large"}]}}}},"415":{"description":"unsupported_media_type: Send application/json with UTF-8.\nunsupported_encoding: Send uncompressed JSON.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/unsupported_media_type"},{"$ref":"#/components/schemas/unsupported_encoding"}]}}}},"422":{"description":"missing_fields: Supply name, replyTo and message.\ninvalid_reply_to: Supply one ASCII dot-atom mailbox with a dotted DNS-style domain.\ninvalid_fields: Correct the bounded fieldErrors; no delivery occurred.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/missing_fields"},{"$ref":"#/components/schemas/invalid_reply_to"},{"$ref":"#/components/schemas/invalid_fields"}]}}}},"429":{"description":"rate_limited: Wait matching Retry-After and retryAfter seconds before another HTTP attempt.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/rate_limited"}]}}}},"502":{"description":"delivery_rejected: Provider definitively rejected delivery. Retry only if retryable is true, retaining any original key and payload.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/delivery_rejected"}]}}}},"503":{"description":"delivery_unconfigured: No provider attempt occurred. Keep your draft while configuration is restored.\ncontact_unavailable: Configuration, storage or capacity is unavailable. Keep your draft; respect retryable and retryAfter.\ndelivery_deferred: Provider or capacity deferred the attempt. Respect retryable and retryAfter; preserve any existing key and payload.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/delivery_unconfigured"},{"$ref":"#/components/schemas/contact_unavailable"},{"$ref":"#/components/schemas/delivery_deferred"}]}}}},"504":{"description":"delivery_unknown: Provider may have accepted. Only durable keyed requests with retryable:true may retry identical key and payload within retryUntil. Otherwise stop; never create a new key to resolve uncertainty.","headers":{"Cache-Control":{"schema":{"const":"no-store"}},"X-Request-Id":{"schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"When supplied, integer seconds matching JSON retryAfter.","schema":{"type":"string","pattern":"^[0-9]+$"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/delivery_unknown"}]}}}}},"x-codeSamples":[{"lang":"Shell","label":"curl (server-side)","source":"# Read GET https://finceldesign.com/api/contact and /openapi.json before sending.\n# Keep this key and body for this logical introduction. Generate once, not on retry.\nKEY=\"$(node -p 'crypto.randomUUID()')\"\ncurl --request POST 'https://finceldesign.com/api/contact' \\\n  --header 'Content-Type: application/json' \\\n  --header \"Idempotency-Key: $KEY\" \\\n  --data-raw '{\"name\":\"Alex Example\",\"replyTo\":\"alex@example.com\",\"message\":\"I represent an owner who would like to discuss automating intake. Please reply to Alex.\"}'\n# No --retry: inspect the machine error code and published retry instructions.\n# Never execute these examples against a live deployment without intending contact."},{"lang":"JavaScript","label":"Node.js fetch (server-side)","source":"// Read GET https://finceldesign.com/api/contact and /openapi.json before sending.\n// Keep key and body outside any retry loop; generate once per NEW introduction.\nconst key = crypto.randomUUID();\nconst body = {\"name\":\"Alex Example\",\"replyTo\":\"alex@example.com\",\"message\":\"I represent an owner who would like to discuss automating intake. Please reply to Alex.\"};\ntry {\n  const response = await fetch(\"https://finceldesign.com/api/contact\", {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application/json\", \"Idempotency-Key\": key },\n    body: JSON.stringify(body)\n  });\n  const result = await response.json();\n  let action = \"Correct the request using the documented error code.\";\n  if (result.ok === true) action = \"Provider accepted; stop sending.\";\n  else switch (result.error) {\n    case \"idempotency_conflict\":\n    case \"submission_unresolved\":\n      action = \"Stop; preserve the original introduction for investigation.\"; break;\n    case \"delivery_unknown\":\n      action = result.retrySupported && result.retryable && result.retryUntil\n        ? \"Retry only this key and body before retryUntil, after retryAfter seconds.\"\n        : \"Stop; acceptance is uncertain and safe retry is not available.\"; break;\n    case \"submission_in_progress\":\n    case \"delivery_deferred\":\n    case \"delivery_rejected\":\n    case \"contact_unavailable\":\n      action = result.retryable\n        ? \"Wait retryAfter if present, then consult current discovery; retain key and body.\"\n        : \"Stop and keep the draft.\"; break;\n    case \"rate_limited\":\n    case \"request_timeout\":\n      action = \"No new delivery from this request; wait Retry-After if present and retain key and body.\"; break;\n  }\n  console.log({ result, action });\n} catch {\n  console.log(\"Network or response failure: acceptance is unknown. Keep key and body; consult current discovery before any retry.\");\n}\n// No Origin or Sec-Fetch-Site: this sample is for Node.js, not browser header bypass.\n// These examples are not automatically run against production."}],"x-maxBodyBytes":32768,"x-bodyReadTimeoutMs":5000}}},"components":{"schemas":{"Introduction":{"type":"object","additionalProperties":false,"required":["name","replyTo","message"],"properties":{"name":{"type":"string","maxLength":32768,"x-normalization":"trim","description":"Required, non-whitespace after normalization. At most 200 UTF-16 units after normalization, not raw Unicode code points.","minLength":1,"pattern":"\\S","x-maxUtf16Units":200,"x-normalizedSchema":{"type":"string","maxLength":200}},"replyTo":{"type":"string","maxLength":32768,"x-normalization":"trim","description":"Required, non-whitespace after normalization. At most 320 UTF-16 units after normalization, not raw Unicode code points. replyTo accepts one ASCII dot-atom mailbox: local part at most 64 characters, no leading/trailing/consecutive dots, no quotes/display-name/list syntax. Domain at most 255 characters, at least two DNS-style labels of 1–63 ASCII letters/digits/hyphens, no edge hyphens, final label at least two characters. Syntax does not prove ownership.","minLength":1,"pattern":"^\\s*[\\x21-\\x7e]+\\s*$","x-maxUtf16Units":320,"x-normalizedSchema":{"type":"string","maxLength":320},"x-format":"ascii-mailbox"},"message":{"type":"string","maxLength":32768,"x-normalization":"trim-crlf","description":"Required, non-whitespace after normalization. At most 6000 UTF-16 units after normalization, not raw Unicode code points.","minLength":1,"pattern":"\\S","x-maxUtf16Units":6000,"x-normalizedSchema":{"type":"string","maxLength":6000}},"company":{"type":"string","maxLength":32768,"x-normalization":"trim","description":"Optional. At most 200 UTF-16 units after normalization, not raw Unicode code points.","x-maxUtf16Units":200,"x-normalizedSchema":{"type":"string","maxLength":200}},"nextStep":{"type":"string","maxLength":32768,"x-normalization":"trim","description":"Optional. At most 80 UTF-16 units after normalization, not raw Unicode code points.","x-maxUtf16Units":80,"x-normalizedSchema":{"type":"string","maxLength":80}},"channel":{"type":"string","maxLength":32768,"x-normalization":"trim","description":"Optional. Trimmed value must be one of contact, ask-kevin, agent; omission defaults to agent.","x-normalizedEnum":["contact","ask-kevin","agent"],"default":"agent","pattern":"^\\s*(?:contact|ask-kevin|agent)\\s*$"},"website":{"type":"string","maxLength":32768,"x-normalization":"trim","description":"Optional. website is compatibility-only: omit it or send an empty string (whitespace is trimmed). Nonempty website returns 422 invalid_fields, including for agents, and is never delivered.","deprecated":true,"x-compatibilityOnly":true,"pattern":"^\\s*$"}},"description":"Every documented field must be a string. Required values must contain non-whitespace content. Optional empty strings canonicalize to omission; channel omission defaults to agent, but an empty channel is invalid. Lone UTF-16 surrogates, NUL and C0/C1 control characters are rejected before trimming. Message permits TAB, LF and CRLF; single-line fields reject all controls including CR/LF. Fields are trimmed; message normalizes CRLF to LF before trimming and checking length. Email local-part case is preserved. No Unicode compatibility folding is performed. Limits count UTF-16 code units after normalization: an emoji such as 😀 uses two units. 100 emoji fit a 200-unit name; 101 do not. Raw JSON Schema maxLength is only a conservative body-size bound, not the field limit. x-normalizedSchema.maxLength counts code points after normalization and remains an upper bound; x-maxUtf16Units is authoritative. replyTo accepts one ASCII dot-atom mailbox: local part at most 64 characters, no leading/trailing/consecutive dots, no quotes/display-name/list syntax. Domain at most 255 characters, at least two DNS-style labels of 1–63 ASCII letters/digits/hyphens, no edge hyphens, final label at least two characters. Syntax does not prove ownership. Unknown properties return 422; fieldErrors use $ without echoing unknown names or submitted values. website is compatibility-only: omit it or send an empty string (whitespace is trimmed). Nonempty website returns 422 invalid_fields, including for agents, and is never delivered."},"FieldError":{"type":"object","additionalProperties":false,"required":["path","code","message"],"properties":{"path":{"enum":["name","replyTo","message","company","nextStep","channel","website","$"]},"code":{"enum":["required","invalid_type","too_long","invalid_characters","invalid_format","unsupported_value","unsupported_field","unknown_fields"]},"message":{"type":"string"}}},"Discovery":{"type":"object","required":["contractVersion","deliveryMode","configured","retrySupported","endpoint","openapi","operationId","fields"],"properties":{"contractVersion":{"const":"1.1"},"deliveryMode":{"const":"legacy"},"configured":{"const":true},"retrySupported":{"const":false},"endpoint":{"const":"https://finceldesign.com/api/contact"},"openapi":{"const":"https://finceldesign.com/openapi.json"},"operationId":{"const":"submitIntroduction"},"fields":{"type":"object"}}},"Accepted":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","receivedAt"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":true},"receivedAt":{"type":"string","format":"date-time"}},"description":"200 ok:true includes receivedAt and retrySupported:false; no durable receipt is promised."},"invalid_json":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"invalid_json"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Correct the UTF-8 JSON object; no delivery occurred."},"invalid_request":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"invalid_request"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Supply a readable body; no delivery occurred."},"request_timeout":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"request_timeout"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Body was incomplete; no delivery occurred. Retry the same keyed request."},"payload_too_large":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"payload_too_large"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Reduce the body to the published byte limit."},"unsupported_media_type":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"unsupported_media_type"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Send application/json with UTF-8."},"unsupported_encoding":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"unsupported_encoding"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Send uncompressed JSON."},"browser_origin_required":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"browser_origin_required"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Use the same-origin browser form or a server-side agent client."},"clearance_required":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"clearance_required"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Follow /api/clearance in the browser before resubmitting."},"missing_fields":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message","fieldErrors"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"missing_fields"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1},"fieldErrors":{"type":"array","minItems":1,"maxItems":8,"items":{"$ref":"#/components/schemas/FieldError"}}},"description":"Supply name, replyTo and message."},"invalid_reply_to":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message","fieldErrors"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"invalid_reply_to"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1},"fieldErrors":{"type":"array","minItems":1,"maxItems":8,"items":{"$ref":"#/components/schemas/FieldError"}}},"description":"Supply one ASCII dot-atom mailbox with a dotted DNS-style domain."},"invalid_fields":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message","fieldErrors"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"invalid_fields"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1},"fieldErrors":{"type":"array","minItems":1,"maxItems":8,"items":{"$ref":"#/components/schemas/FieldError"}}},"description":"Correct the bounded fieldErrors; no delivery occurred."},"rate_limited":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"rate_limited"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Wait matching Retry-After and retryAfter seconds before another HTTP attempt."},"delivery_rejected":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"delivery_rejected"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Provider definitively rejected delivery. Retry only if retryable is true, retaining any original key and payload."},"delivery_unconfigured":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"delivery_unconfigured"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"No provider attempt occurred. Keep your draft while configuration is restored."},"contact_unavailable":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"contact_unavailable"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Configuration, storage or capacity is unavailable. Keep your draft; respect retryable and retryAfter."},"delivery_deferred":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"delivery_deferred"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Provider or capacity deferred the attempt. Respect retryable and retryAfter; preserve any existing key and payload."},"delivery_unknown":{"type":"object","additionalProperties":false,"required":["contractVersion","requestId","deliveryMode","retrySupported","ok","error","message"],"properties":{"contractVersion":{"const":"1.1"},"requestId":{"type":"string","format":"uuid"},"deliveryMode":{"const":"legacy"},"retrySupported":{"const":false},"ok":{"const":false},"error":{"const":"delivery_unknown"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfter":{"type":"integer","minimum":1}},"description":"Provider may have accepted. Only durable keyed requests with retryable:true may retry identical key and payload within retryUntil. Otherwise stop; never create a new key to resolve uncertainty."}}}}