{"openapi":"3.1.0","info":{"title":"EngageCycle API","version":"1","description":"Read and change a business's clients, catalog, and proposals; read its templates, presets, campaigns, offers, leads, credits, documents, and events; and send an event to its webhook again. Authentication: Authorization: Bearer <API key>. Money is integer minor units with the business's currency. Every error is { error: { code, message, field?, details? } }."},"servers":[{"url":"https://app.engagecycle.com/api/v1"}],"security":[{"bearer":[]}],"tags":[{"name":"Account"},{"name":"Templates and presets"},{"name":"Campaigns and offers"},{"name":"Clients"},{"name":"Catalog"},{"name":"Proposals"},{"name":"Automation"},{"name":"Documents"},{"name":"Events"},{"name":"Webhooks","description":"Events EngageCycle POSTs to your webhook endpoints. The guide is at /api/docs/webhooks."}],"paths":{"/me":{"get":{"operationId":"getMe","tags":["Account"],"summary":"The business and this key","description":"Any key.","x-scope":null,"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/credits":{"get":{"operationId":"getCredits","tags":["Account"],"summary":"Credits left","description":"One credit is one proposal reaching a client for the first time.\n\nAny key.","x-scope":null,"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credits"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/templates":{"get":{"operationId":"getTemplates","tags":["Templates and presets"],"summary":"List templates proposals can use","description":"Published Proposal templates without prices of their own, newest first.\n\nScope: `catalog:read`.","x-scope":"catalog:read","parameters":[{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 200","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"The next_cursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Template"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/presets":{"get":{"operationId":"getPresets","tags":["Templates and presets"],"summary":"List presets","description":"Presets: saved sets of services, packages, add-ons, and prices to start a proposal from (preset_id on POST /proposals).\n\nScope: `catalog:read`.","x-scope":"catalog:read","parameters":[{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 200","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"The next_cursor from the previous page","schema":{"type":"string"}},{"name":"archived","in":"query","required":false,"schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Preset"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/campaigns":{"get":{"operationId":"getCampaigns","tags":["Campaigns and offers"],"summary":"List campaigns","description":"Scope: `campaigns:read`.","x-scope":"campaigns:read","parameters":[{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 200","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"The next_cursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Campaign"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/campaigns/{id}":{"get":{"operationId":"getCampaignsId","tags":["Campaigns and offers"],"summary":"Get a campaign with its counts","description":"Scope: `campaigns:read`.","x-scope":"campaigns:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Campaign"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/offers":{"get":{"operationId":"getOffers","tags":["Campaigns and offers"],"summary":"List offers","description":"Scope: `offers:read`.","x-scope":"offers:read","parameters":[{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 200","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"The next_cursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Offer"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/offers/{id}":{"get":{"operationId":"getOffersId","tags":["Campaigns and offers"],"summary":"Get an offer","description":"Scope: `offers:read`.","x-scope":"offers:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Offer"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/leads":{"get":{"operationId":"getLeads","tags":["Campaigns and offers"],"summary":"List leads from offers","description":"Scope: `offers:read`.","x-scope":"offers:read","parameters":[{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 200","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"The next_cursor from the previous page","schema":{"type":"string"}},{"name":"offer_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["started","verified","signed","abandoned","discarded","converted_existing","awaiting_review","declined_by_business","review_expired"]}},{"name":"created_since","in":"query","required":false,"schema":{}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Lead"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/clients":{"get":{"operationId":"getClients","tags":["Clients"],"summary":"List clients","description":"Newest first. Archived clients only with archived=true. Filter by a client field with field.<name>=<value> (values compare as text: true, 2, Single).\n\nScope: `clients:read`.","x-scope":"clients:read","parameters":[{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 200","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"The next_cursor from the previous page","schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"external_id","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"email","in":"query","required":false,"schema":{"type":"string","maxLength":254}},{"name":"archived","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}},{"name":"has_open_proposal","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}},{"name":"updated_since","in":"query","required":false,"schema":{}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Client"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postClients","tags":["Clients"],"summary":"Add a client","description":"Checked like an import row: display_name, and an email or external_id. One email can belong to several clients (a person and their business, say), so an email already in use still makes a new client; email_shared_with lists the others.\n\nScope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedClient"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"external_id":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"display_name":{"type":"string","minLength":1,"maxLength":200},"first_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}]},"phone":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}]},"type":{"description":"individual (the default) or business: an entity, whose display_name is the business's name and whose contact signs for it","type":"string","enum":["individual","business"]},"contact_name":{"description":"A business's contact person, in full. Business clients only","anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"contact_title":{"description":"The contact's title (Managing Member), prefilled when they sign. Business clients only","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"representative":{"description":"Someone else signs for this individual client (power of attorney, guardian, executor, or personal representative): name, email, optional phone, and capacity. Everything is sent to them and nothing to the client. null removes it. Refused on a business","anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"email":{"type":"string"},"phone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"capacity":{"type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]}},"required":["name","email","capacity"]},{"type":"null"}]},"prior_price_cents":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number","boolean","null"]}}},"additionalProperties":false}}}}}},"/clients/{id}":{"get":{"operationId":"getClientsId","tags":["Clients"],"summary":"Get a client","description":"Scope: `clients:read`.","x-scope":"clients:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patchClientsId","tags":["Clients"],"summary":"Change a client","description":"Only what you send changes; null clears a value. Fields not sent keep their values, and hidden fields are never touched.\n\nScope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"external_id":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"display_name":{"type":"string","minLength":1,"maxLength":200},"first_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}]},"phone":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}]},"type":{"description":"individual (the default) or business: an entity, whose display_name is the business's name and whose contact signs for it","type":"string","enum":["individual","business"]},"contact_name":{"description":"A business's contact person, in full. Business clients only","anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"contact_title":{"description":"The contact's title (Managing Member), prefilled when they sign. Business clients only","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"representative":{"description":"Someone else signs for this individual client (power of attorney, guardian, executor, or personal representative): name, email, optional phone, and capacity. Everything is sent to them and nothing to the client. null removes it. Refused on a business","anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"email":{"type":"string"},"phone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"capacity":{"type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]}},"required":["name","email","capacity"]},{"type":"null"}]},"prior_price_cents":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number","boolean","null"]}}},"additionalProperties":false}}}}}},"/clients/{id}/signing":{"post":{"operationId":"postClientsIdSigning","tags":["Clients"],"summary":"Set who must sign a client's proposals","description":"The default for new proposals when the client has signers besides themselves (Multiple signers): all of them, or any one. 403 without Multiple signers on the plan.\n\nScope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rule":{"type":"string","enum":["all","any"]}},"required":["rule"],"additionalProperties":false}}}}}},"/clients/{id}/archive":{"post":{"operationId":"postClientsIdArchive","tags":["Clients"],"summary":"Archive a client","description":"Archived clients leave lists, campaigns, and pickers; their history stays.\n\nScope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/clients/{id}/restore":{"post":{"operationId":"postClientsIdRestore","tags":["Clients"],"summary":"Restore an archived client","description":"Scope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/clients/{id}/people":{"get":{"operationId":"getClientsIdPeople","tags":["Clients"],"summary":"List a client's people","description":"People copied on the client's new proposals: they get a view-only link and the signed copy, and can never choose or sign.\n\nScope: `clients:read`.","x-scope":"clients:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ClientPerson"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postClientsIdPeople","tags":["Clients"],"summary":"Copy someone on a client's proposals","description":"client_asked must be true: the client asked you to share their proposals with this person, and it's recorded with the API key and the time. The client's own email is refused. role signer needs Multiple signers on the plan (400 validation otherwise).\n\nScope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientPerson"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"email":{"type":"string","maxLength":254},"phone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"relationship":{"type":"string","enum":["spouse","family","assistant","business_partner","other"]},"title":{"description":"Their title at the business (Member, Partner); used only on a business client","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"role":{"description":"copied (the default), or signer where the business has Multiple signers","type":"string","enum":["copied","signer"]},"client_asked":{"description":"The client asked you to share their proposal with this person; required to add someone or change their email","type":"boolean"}},"required":["name","email","relationship"],"additionalProperties":false}}}}}},"/clients/{id}/people/{personId}":{"patch":{"operationId":"patchClientsIdPeoplePersonId","tags":["Clients"],"summary":"Change one of a client's people","description":"Only what you send changes. A new email needs client_asked: true again. Proposals already sent keep who they were sent to.\n\nScope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"personId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientPerson"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"email":{"type":"string","maxLength":254},"phone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"relationship":{"type":"string","enum":["spouse","family","assistant","business_partner","other"]},"title":{"description":"Their title at the business (Member, Partner); used only on a business client","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"role":{"description":"copied (the default), or signer where the business has Multiple signers","type":"string","enum":["copied","signer"]},"client_asked":{"description":"The client asked you to share their proposal with this person; required to add someone or change their email","type":"boolean"}},"additionalProperties":false}}}}},"delete":{"operationId":"deleteClientsIdPeoplePersonId","tags":["Clients"],"summary":"Stop copying someone on a client's proposals","description":"Proposals already sent keep who they were sent to.\n\nScope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"personId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deleted":{"type":"boolean","const":true}},"required":["id","deleted"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/clients/batch":{"post":{"operationId":"postClientsBatch","tags":["Clients"],"summary":"Import clients as JSON rows","description":"{ rows: [ { external_id, display_name, email, first_name, phone, prior_price, client_type, business_name, contact_name, contact_title, <field>: value } ] }, 1 to 5,000 rows. prior_price is in major units (350.00), like a CSV. client_type is Individual or Business; a row with a business_name is a business named for it, and its display_name is the contact when contact_name is empty. A column a row leaves out keeps the client's value. A column no client field takes is 422 unknown_columns.\n\nScope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportSummary"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"description":"{ rows: [...] }","content":{"application/json":{"schema":{}}}}}},"/clients/import":{"post":{"operationId":"postClientsImport","tags":["Clients"],"summary":"Import clients from a CSV file","description":"text/csv (text/plain and application/octet-stream are read as CSV too), or multipart form data with a file field. The same columns as POST /clients/batch, business columns included. 1 to 5,000 data rows: 413 too_many_rows past that. A column no client field takes is 422 unknown_columns.\n\nScope: `clients:write`.","x-scope":"clients:write","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportSummary"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"description":"A CSV with a header row","content":{"text/csv":{"schema":{}},"multipart/form-data":{"schema":{}}}}}},"/catalog":{"get":{"operationId":"getCatalog","tags":["Catalog"],"summary":"List catalog items","description":"Active items unless status says otherwise. Prices are minor units; unit_cents is null for no price yet.\n\nScope: `catalog:read`.","x-scope":"catalog:read","parameters":[{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 200","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"The next_cursor from the previous page","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"default":"active","type":"string","enum":["active","archived","all"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CatalogItem"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postCatalog","tags":["Catalog"],"summary":"Add a catalog item","description":"A single item has min_qty and max_qty 1; a counted one (per location, per return) sets a range and a unit_label. A rate billed as used sets billed_as_used and a unit_label (per form): it has no quantity and is never in a total. A unit_cents other than null needs the catalog:prices scope. Changing the catalog never changes proposals already made.\n\nScope: `catalog:write`.","x-scope":"catalog:write","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogItem"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"category":{"default":"","type":"string","maxLength":60},"description":{"default":"","type":"string","maxLength":500},"includes":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"unit_label":{"default":"","type":"string","maxLength":40},"unit_plural":{"default":"","type":"string","maxLength":40},"unit_cents":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"billing":{"default":"one_time","type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]},"min_qty":{"default":1,"type":"integer","minimum":0,"maximum":999},"max_qty":{"default":1,"type":"integer","minimum":1,"maximum":999},"billed_as_used":{"default":false,"type":"boolean"}},"required":["name"],"additionalProperties":false}}}}}},"/catalog/{id}":{"get":{"operationId":"getCatalogId","tags":["Catalog"],"summary":"Get a catalog item","description":"Scope: `catalog:read`.","x-scope":"catalog:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogItem"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patchCatalogId","tags":["Catalog"],"summary":"Change a catalog item","description":"Only what you send changes. An archived item must be restored first. Changing unit_cents needs the catalog:prices scope; a price change is logged with the old and new price, and live offers price from the catalog, so they use the new price at once.\n\nScope: `catalog:write`.","x-scope":"catalog:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogItem"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"category":{"type":"string","maxLength":60},"description":{"type":"string","maxLength":500},"includes":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"unit_label":{"type":"string","maxLength":40},"unit_plural":{"type":"string","maxLength":40},"unit_cents":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"billing":{"type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]},"min_qty":{"type":"integer","minimum":0,"maximum":999},"max_qty":{"type":"integer","minimum":1,"maximum":999},"billed_as_used":{"type":"boolean"}},"additionalProperties":false}}}}}},"/catalog/{id}/archive":{"post":{"operationId":"postCatalogIdArchive","tags":["Catalog"],"summary":"Archive a catalog item","description":"It leaves pickers; proposals and presets that hold it keep their copy.\n\nScope: `catalog:write`.","x-scope":"catalog:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogItem"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/catalog/{id}/restore":{"post":{"operationId":"postCatalogIdRestore","tags":["Catalog"],"summary":"Restore a catalog item","description":"Scope: `catalog:write`.","x-scope":"catalog:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogItem"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/proposals":{"get":{"operationId":"getProposals","tags":["Proposals"],"summary":"List proposals","description":"Newest first. Without status, everything that went out (no drafts); status=draft lists drafts made in the builder or the API. since is kept as another name for updated_since.\n\nScope: `proposals:read`.","x-scope":"proposals:read","parameters":[{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 200","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"The next_cursor from the previous page","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","sent","viewed","signed","declined","expired","revoked","superseded"]}},{"name":"handoff","in":"query","required":false,"schema":{"type":"string","enum":["pending","confirmed","failed"]}},{"name":"client_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"campaign_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"offer_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"template_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"created_since","in":"query","required":false,"schema":{}},{"name":"updated_since","in":"query","required":false,"schema":{}},{"name":"signed_since","in":"query","required":false,"schema":{}},{"name":"since","in":"query","required":false,"schema":{}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Proposal"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postProposals","tags":["Proposals"],"summary":"Make a draft proposal","description":"For one client, from a preset (preset_id), from a build in the short form (build), or empty. template_id defaults to the business's default template. It starts with the client's copied people; copied_people replaces them for this proposal only. Nothing is sent: preview it, then send it.\n\nScope: `proposals:write`.","x-scope":"proposals:write","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalDetail"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"client_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"preset_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"template_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"note":{"type":"string","maxLength":2000},"period":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":40},"label":{"type":"string","minLength":1,"maxLength":80}},"required":["key","label"],"additionalProperties":false},"expiry_days":{"type":"integer","minimum":1,"maximum":365},"build":{"type":"object","properties":{"mode":{"type":"string","enum":["fixed","choose"]},"packages":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"badge":{"default":null,"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"description":{"default":"","type":"string","maxLength":500},"items":{"default":[],"maxItems":60,"type":"array","items":{"anyOf":[{"type":"object","properties":{"catalog_item_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"qty":{"default":1,"type":"integer","minimum":0,"maximum":999},"unit_cents":{"type":"integer","minimum":0,"maximum":100000000},"unit_label":{"type":"string","maxLength":40},"unit_plural":{"type":"string","maxLength":40}},"required":["catalog_item_id"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"default":"","type":"string","maxLength":500},"includes":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"unit_label":{"default":"","type":"string","maxLength":40},"unit_plural":{"type":"string","maxLength":40},"unit_cents":{"type":"integer","minimum":0,"maximum":100000000},"qty":{"default":1,"type":"integer","minimum":0,"maximum":999},"billing":{"default":"one_time","type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]},"billed_as_used":{"default":false,"type":"boolean"}},"required":["name","unit_cents"],"additionalProperties":false}]}}},"required":["name"],"additionalProperties":false}},"addons":{"default":[],"maxItems":30,"type":"array","items":{"type":"object","properties":{"catalog_item_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"unit_label":{"type":"string","maxLength":40},"unit_plural":{"type":"string","maxLength":40},"unit_cents":{"type":"integer","minimum":0,"maximum":100000000},"billing":{"type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]},"billed_as_used":{"type":"boolean"},"kind":{"type":"string","enum":["toggle","quantity"]},"min_qty":{"default":0,"type":"integer","minimum":0,"maximum":999},"max_qty":{"type":"integer","minimum":1,"maximum":999},"only_with":{"default":null,"anyOf":[{"maxItems":8,"type":"array","items":{"type":"integer","minimum":0,"maximum":7}},{"type":"null"}]}},"required":["kind"],"additionalProperties":false}},"discounts":{}},"required":["mode","packages"],"additionalProperties":false},"copied_people":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"email":{"type":"string","maxLength":254},"phone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"relationship":{"type":"string","enum":["spouse","family","assistant","business_partner","other"]},"title":{"description":"Their title at the business (Member, Partner); used only on a business client","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"role":{"description":"copied (the default), or signer where the business has Multiple signers","type":"string","enum":["copied","signer"]},"client_asked":{"description":"The client asked you to share their proposal with this person; required to add someone or change their email","type":"boolean"}},"required":["name","email","relationship"],"additionalProperties":false}},"copied_signed_copy":{"type":"boolean"},"signing":{"anyOf":[{"type":"object","properties":{"rule":{"type":"string","enum":["all","any"]},"order":{"default":"any","type":"string","enum":["any","in_order"]}},"required":["rule"]},{"type":"null"}]}},"required":["client_id"],"additionalProperties":false}}}}}},"/proposals/{id}":{"get":{"operationId":"getProposalsId","tags":["Proposals"],"summary":"Get a proposal","description":"With copied_people: everyone copied on it, whether their view-only link was emailed, and when they last looked.\n\nScope: `proposals:read`.","x-scope":"proposals:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalDetail"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patchProposalsId","tags":["Proposals"],"summary":"Change a draft","description":"Any change to the document throws away the preview; changing only copied_people or copied_signed_copy keeps it. A build sent here replaces the draft's packages and add-ons. 409 invalid_state once it's sent.\n\nScope: `proposals:write`.","x-scope":"proposals:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalDetail"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"template_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"note":{"type":"string","maxLength":2000},"period":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":40},"label":{"type":"string","minLength":1,"maxLength":80}},"required":["key","label"],"additionalProperties":false},"expiry_days":{"type":"integer","minimum":1,"maximum":365},"build":{"type":"object","properties":{"mode":{"type":"string","enum":["fixed","choose"]},"packages":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"badge":{"default":null,"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"description":{"default":"","type":"string","maxLength":500},"items":{"default":[],"maxItems":60,"type":"array","items":{"anyOf":[{"type":"object","properties":{"catalog_item_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"qty":{"default":1,"type":"integer","minimum":0,"maximum":999},"unit_cents":{"type":"integer","minimum":0,"maximum":100000000},"unit_label":{"type":"string","maxLength":40},"unit_plural":{"type":"string","maxLength":40}},"required":["catalog_item_id"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"default":"","type":"string","maxLength":500},"includes":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"unit_label":{"default":"","type":"string","maxLength":40},"unit_plural":{"type":"string","maxLength":40},"unit_cents":{"type":"integer","minimum":0,"maximum":100000000},"qty":{"default":1,"type":"integer","minimum":0,"maximum":999},"billing":{"default":"one_time","type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]},"billed_as_used":{"default":false,"type":"boolean"}},"required":["name","unit_cents"],"additionalProperties":false}]}}},"required":["name"],"additionalProperties":false}},"addons":{"default":[],"maxItems":30,"type":"array","items":{"type":"object","properties":{"catalog_item_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"unit_label":{"type":"string","maxLength":40},"unit_plural":{"type":"string","maxLength":40},"unit_cents":{"type":"integer","minimum":0,"maximum":100000000},"billing":{"type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]},"billed_as_used":{"type":"boolean"},"kind":{"type":"string","enum":["toggle","quantity"]},"min_qty":{"default":0,"type":"integer","minimum":0,"maximum":999},"max_qty":{"type":"integer","minimum":1,"maximum":999},"only_with":{"default":null,"anyOf":[{"maxItems":8,"type":"array","items":{"type":"integer","minimum":0,"maximum":7}},{"type":"null"}]}},"required":["kind"],"additionalProperties":false}},"discounts":{}},"required":["mode","packages"],"additionalProperties":false},"copied_people":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"email":{"type":"string","maxLength":254},"phone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"relationship":{"type":"string","enum":["spouse","family","assistant","business_partner","other"]},"title":{"description":"Their title at the business (Member, Partner); used only on a business client","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"role":{"description":"copied (the default), or signer where the business has Multiple signers","type":"string","enum":["copied","signer"]},"client_asked":{"description":"The client asked you to share their proposal with this person; required to add someone or change their email","type":"boolean"}},"required":["name","email","relationship"],"additionalProperties":false}},"copied_signed_copy":{"type":"boolean"},"signing":{"anyOf":[{"type":"object","properties":{"rule":{"type":"string","enum":["all","any"]},"order":{"default":"any","type":"string","enum":["any","in_order"]}},"required":["rule"]},{"type":"null"}]}},"additionalProperties":false}}}}}},"/proposals/{id}/copied/{personId}/resend":{"post":{"operationId":"postProposalsIdCopiedPersonIdResend","tags":["Proposals"],"summary":"Send a copied person their copy again","description":"Emails them their view-only link again: the same link while the proposal is open, otherwise a new one (their earlier link stops). After Remove access it gives them a new link. Needs an email sender; refused while email is paused, as other sends are.\n\nScope: `proposals:send`.","x-scope":"proposals:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"personId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CopyResent"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/proposals/{id}/copied/{personId}/remove-access":{"post":{"operationId":"postProposalsIdCopiedPersonIdRemoveAccess","tags":["Proposals"],"summary":"Remove a copied person's access","description":"Their link says it's no longer active, for good, and they get no signed copy or withdrawn notice. Send their copy again to give them a new link.\n\nScope: `proposals:write`.","x-scope":"proposals:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"personId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CopiedPerson"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/proposals/{id}/preview":{"post":{"operationId":"postProposalsIdPreview","tags":["Proposals"],"summary":"Preview a draft","description":"Freezes exactly what the client would get and fixes its respond-by date. Send needs this preview_sha256. A preview goes stale at the end of the business's day or after 24 hours.\n\nScope: `proposals:write`.","x-scope":"proposals:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Preview"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/proposals/{id}/preview/document":{"get":{"operationId":"getProposalsIdPreviewDocument","tags":["Proposals"],"summary":"The previewed document","description":"The rendered HTML of the stored preview, the same as the client will see.\n\nScope: `proposals:read`.","x-scope":"proposals:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"text/html":{"schema":{"type":"string"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/proposals/{id}/send":{"post":{"operationId":"postProposalsIdSend","tags":["Proposals"],"summary":"Send a previewed draft","description":"Needs the preview_sha256 from the preview: 409 not_previewed, preview_changed, or preview_stale otherwise. email: true emails the link (409 send_blocked while email is paused, as in the admin); false makes the link without emailing it. Uses a credit (402 out_of_credits when there's none); a revision is free, unless the version it replaces was withdrawn before the client opened it, which gave its credit back. The link is never in this answer: read it with GET /proposals/{id}/link.\n\nScope: `proposals:send`.","x-scope":"proposals:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sent"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"preview_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"email":{"type":"boolean"},"email_copied":{"type":"boolean"}},"required":["preview_sha256","email"],"additionalProperties":false}}}}}},"/proposals/{id}/withdraw":{"post":{"operationId":"postProposalsIdWithdraw","tags":["Proposals"],"summary":"Withdraw a sent proposal","description":"Its link then says it was withdrawn. email_client emails the client the withdrawn notice when the business has a sender. Withdrawn before it was opened, its credit comes back.\n\nScope: `proposals:send`.","x-scope":"proposals:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Withdrawn"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email_client":{"type":"boolean"},"note":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]}},"required":["email_client"],"additionalProperties":false}}}}}},"/proposals/{id}/resend":{"post":{"operationId":"postProposalsIdResend","tags":["Proposals"],"summary":"Resend a sent proposal's link to the client","description":"The admin's Resend: the client gets a new link and their earlier links stop working. An expired proposal reopens only within 30 days of its deadline: it's extended first (proposal.deadline_extended, with the reason \"Sent a new link\") to expiry_days from today, and the date the document printed doesn't change. After 30 days, or for a withdrawn one, it's refused (409 invalid_state); revise it to send it again. emailed is false when the business has no email sender (proposal.sent tells your automation). The link is never in this answer.\n\nScope: `proposals:send`.","x-scope":"proposals:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Resent"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/proposals/{id}/extend":{"post":{"operationId":"postProposalsIdExtend","tags":["Proposals"],"summary":"Extend a sent proposal's deadline","description":"More time on the same proposal: the link the client has keeps working, and the document keeps the respond-by date it printed. Open proposals any time before the deadline; an expired one within 30 days of its deadline, which reopens it. notify_client (default true) emails a second link with the new date. Its expires_at is then the new deadline, with original_expires_at the printed date. 409 invalid_state for a draft, a closed proposal, one that ended more than 30 days ago, or one in a walkthrough (extend the walkthrough in EngageCycle); 422 validation for the date. Writes proposal.deadline_extended.\n\nScope: `proposals:send`.","x-scope":"proposals:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Extended"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expires_on":{"type":"string","maxLength":40,"description":"The new deadline, a date in the business's time zone (YYYY-MM-DD). It ends at the end of that day. Later than the current deadline, not in the past, and at most 180 days from today."},"reason":{"description":"Why, for the business's own team: in the activity and the event, never shown to the client","anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"notify_client":{"description":"Email the client (and each signer whose turn it is) a second link with the new date; the link they have keeps working. Default true.","type":"boolean"}},"required":["expires_on"],"additionalProperties":false}}}}}},"/proposals/{id}/revise":{"post":{"operationId":"postProposalsIdRevise","tags":["Proposals"],"summary":"Start a revision","description":"A draft copied from what was sent (or the revision already started). Sending it replaces the old version, and the old link leads to it.\n\nScope: `proposals:write`.","x-scope":"proposals:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Revision"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/proposals/{id}/link":{"get":{"operationId":"getProposalsIdLink","tags":["Proposals"],"summary":"The client's signing link","description":"The link the client already has, while the proposal is open. Nothing new is made. Every read is in the activity log.\n\nScope: `proposals:links`.","x-scope":"proposals:links","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SigningLink"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/proposals/{id}/pdf":{"get":{"operationId":"getProposalsIdPdf","tags":["Proposals"],"summary":"The signed PDF","description":"With the certificate page. X-EngageCycle-Sha256 is the file's hash. 409 not_signed before it's signed, and pdf_not_ready while it's being made.\n\nScope: `proposals:read`.","x-scope":"proposals:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/pdf":{"schema":{"type":"string"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/proposals/{id}/handoff":{"post":{"operationId":"postProposalsIdHandoff","tags":["Automation"],"summary":"Record the handoff of a signed proposal","description":"Your automation says it filed the signed proposal (confirmed) or couldn't (failed).\n\nScope: `proposals:write`.","x-scope":"proposals:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"handoff":{"type":"object","properties":{"status":{"type":"string"},"at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"detail":{"type":["string","null"]}},"required":["status","at","detail"],"additionalProperties":false}},"required":["ok","handoff"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["confirmed","failed"]},"detail":{"type":"string","maxLength":2000}},"required":["status"],"additionalProperties":false}}}}}},"/proposals/{id}/booked":{"post":{"operationId":"postProposalsIdBooked","tags":["Automation"],"summary":"Record a booked call","description":"Scope: `proposals:write`.","x-scope":"proposals:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"proposal_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"booked":{"type":"boolean","const":true}},"required":["ok","proposal_id","booked"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","minLength":1,"maxLength":40},"external_id":{"type":"string","maxLength":200},"starts_at":{},"source":{"default":"api","type":"string","maxLength":40}},"required":["provider"]}}}}}},"/bookings/match":{"post":{"operationId":"postBookingsMatch","tags":["Automation"],"summary":"Match a booking to an open proposal by email","description":"404 no_open_proposal when the email has none, so bookings that aren't about a proposal can be ignored. When several clients use the email (a person and their business, say), each one's open proposal is booked.\n\nScope: `proposals:write`.","x-scope":"proposals:write","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"proposal_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"The newest open proposal booked"},"booked":{"type":"boolean","const":true},"proposal_ids":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"description":"Every open proposal booked, newest first. One email can belong to several clients (a person and their business, say), and each one's open proposal is marked."}},"required":["ok","proposal_id","booked","proposal_ids"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","minLength":1,"maxLength":40},"external_id":{"type":"string","maxLength":200},"starts_at":{},"source":{"default":"api","type":"string","maxLength":40},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["provider","email"]}}}}}},"/documents":{"get":{"operationId":"getDocuments","tags":["Documents"],"summary":"List documents","description":"Agreements and consents sent on their own, newest first (never a draft, never a proposal). 403 forbidden when Agreement and Consent aren't on the plan.\n\nScope: `documents:read`.","x-scope":"documents:read","parameters":[{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 200","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"The next_cursor from the previous page","schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["agreement","consent"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["sent","viewed","signed","declined","expired","revoked","superseded"]}},{"name":"client_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"since","in":"query","required":false,"description":"Changed since this time","schema":{"description":"Changed since this time"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Document"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/documents/{id}":{"get":{"operationId":"getDocumentsId","tags":["Documents"],"summary":"Get a document","description":"Its kind, template, status, client, signers (position and answer), and the signature once signed. A proposal's id is not found here.\n\nScope: `documents:read`.","x-scope":"documents:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Document"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/documents/{id}/pdf":{"get":{"operationId":"getDocumentsIdPdf","tags":["Documents"],"summary":"The signed PDF","description":"With the certificate page. X-EngageCycle-Sha256 is the file's hash. 409 not_signed or pdf_not_ready while there isn't one.\n\nScope: `documents:read`.","x-scope":"documents:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/pdf":{"schema":{"type":"string"}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/events":{"get":{"operationId":"getEvents","tags":["Events"],"summary":"List events","description":"The same envelope as the webhook, oldest first, every event recorded (also those recorded while the webhook was off). Pass the last next_cursor as since to get only what's new; an event never appears before one that was written earlier and is still being committed, so polling misses nothing. type can repeat. Documents' events (document.*) come back only when named in type, with the documents:read scope. Links in payloads come back only with the proposals:links scope.\n\nScope: `events:read`.","x-scope":"events:read","parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":60},{"maxItems":20,"type":"array","items":{"type":"string","maxLength":60}}]}},{"name":"proposal_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"since","in":"query","required":false,"schema":{"type":"string","maxLength":400}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"next_cursor":{"description":"Pass as cursor (or since, for events) to get the next page; null at the end","type":["string","null"]}},"required":["data","next_cursor"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); deleted (the business is being deleted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/events/{id}/redeliver":{"post":{"operationId":"postEventsIdRedeliver","tags":["Events"],"summary":"Send an event to your webhook again","description":"Marks a delivered or failed event to be delivered again, with the same event id and a new signature. 409 webhook_off when the webhook isn't on.\n\nScope: `events:write`.","x-scope":"events:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","maxLength":40}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string, up to 200 characters. Repeating the request with the same key within 24 hours returns the first answer instead of doing it again.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"delivery":{"type":"string","const":"due"}},"required":["id","type","delivery"],"additionalProperties":false}}}},"401":{"description":"unauthorized: no key, or a key that's wrong or turned off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"missing_scope (the key doesn't have the scope); not_on_plan (the plan doesn't include the API); paused, closed, or deleted (the business can only read)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"too_large: the request body is too big","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait Retry-After seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Any other error: the description says which, and docs/API.md lists every code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{"proposal.sent":{"post":{"operationId":"webhookProposalSent","tags":["Webhooks"],"summary":"A proposal is ready to email: its link, and copied people's view links","description":"Sent to each of the business's endpoints that takes `proposal.sent`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.sent"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"signers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"state":{"type":"string"},"position":{"type":"integer"},"signing_url":{"type":"string"}},"required":["name","state","position","signing_url"]}},"signing":{"type":"object","properties":{"rule":{"type":"string"},"order":{"type":["string","null"]}},"required":["rule","order"]},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"is_resend":{"type":"boolean"},"copied_people":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"view_url":{"type":"string"}},"required":["name","view_url"]}},"signing_url":{"type":"string"}},"required":["proposal","is_resend","copied_people","signing_url"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_cd940864700543e98771895f19c97eb4","type":"proposal.sent","created_at":"2027-01-11T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"signers":[{"name":"Jordan Example","state":"open","position":1,"signing_url":"https://example-office.engagecycle.com/p/On7a9UWsOS6hYAXtuhNT8kp026sn-96xKrbvtS9l_bA"},{"name":"Taylor Example","state":"open","position":2,"signing_url":"https://example-office.engagecycle.com/p/dVGzFqFIKXReyoYWrOiBFnS0utZa_I0yB1Grx9QJUVU"},{"name":"Morgan Example","state":"open","position":3,"signing_url":"https://example-office.engagecycle.com/p/03_dKH7LXgzS3iPwHhEEr_3nvm3DTMGClZbV4P10KDQ"}],"signing":{"rule":"any","order":null},"proposal":{"id":"e80e9d66-947a-490d-bb61-5043472174f4","booked":false,"client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"sent","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]},"is_resend":false,"copied_people":[{"name":"Casey Example","view_url":"https://example-office.engagecycle.com/v/FV0Y0AgLQD-qq-f4hrUH0M-gmatjApEMde4PXdgjBRc"}],"signing_url":"https://example-office.engagecycle.com/p/On7a9UWsOS6hYAXtuhNT8kp026sn-96xKrbvtS9l_bA"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.viewed":{"post":{"operationId":"webhookProposalViewed","tags":["Webhooks"],"summary":"The client opened the proposal for the first time","description":"Sent to each of the business's endpoints that takes `proposal.viewed`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.viewed"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"viewed_at":{"type":"string"}},"required":["proposal","viewed_at"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_8cd76000809848498c78cddc4f5e5dfe","type":"proposal.viewed","created_at":"2027-01-11T17:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"proposal":{"id":"e80e9d66-947a-490d-bb61-5043472174f4","booked":false,"client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]},"viewed_at":"2027-01-11T17:00:00.000Z"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.booking_clicked":{"post":{"operationId":"webhookProposalBookingClicked","tags":["Webhooks"],"summary":"The client clicked the book-a-call button","description":"Sent to each of the business's endpoints that takes `proposal.booking_clicked`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.booking_clicked"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"clicked_at":{"type":"string"}},"required":["proposal","clicked_at"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_20265e8be53f45c2b8509d15081d2349","type":"proposal.booking_clicked","created_at":"2027-01-11T18:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"proposal":{"id":"e80e9d66-947a-490d-bb61-5043472174f4","booked":false,"client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]},"clicked_at":"2027-01-11T18:00:00.000Z"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.booked":{"post":{"operationId":"webhookProposalBooked","tags":["Webhooks"],"summary":"A booking was confirmed for the proposal","description":"Sent to each of the business's endpoints that takes `proposal.booked`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.booked"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"booking":{"type":"object","properties":{"provider":{"type":"string"},"starts_at":{"type":"string"},"external_id":{"type":"string"}},"required":["provider","starts_at","external_id"]},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]}},"required":["booking","proposal"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_15d780857abc4fd29ebc9a8951a92ab8","type":"proposal.booked","created_at":"2027-01-12T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"booking":{"provider":"calendly","starts_at":"2027-01-13T16:00:00.000Z","external_id":"bk_1001"},"proposal":{"id":"e80e9d66-947a-490d-bb61-5043472174f4","booked":true,"client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]}}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.signed":{"post":{"operationId":"webhookProposalSigned","tags":["Webhooks"],"summary":"The proposal is signed and its PDF is ready","description":"Sent to each of the business's endpoints that takes `proposal.signed`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.signed"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"pdf":{"type":"object","properties":{"url":{"type":"string"},"sha256":{"type":"string"},"filename":{"type":"string"}},"required":["url","sha256","filename"]},"signers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"chose":{"type":"boolean"},"title":{"type":"string"},"position":{"type":"integer"},"signed_at":{"type":"string"},"signing_method":{"type":"string"},"signing_url":{"type":["string","null"]}},"required":["name","chose","position","signed_at","signing_method","signing_url"]}},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}},"original_expires_at":{"type":"string"}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"signature":{"type":"object","properties":{"mode":{"type":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"qty":{"type":"integer"},"name":{"type":"string"},"billing":{"type":"string"},"unit_cents":{"type":"integer"},"amount_cents":{"type":"integer"},"catalog_item_id":{"description":"Null in the example; the guide says what else it can be."}},"required":["qty","name","billing","unit_cents","amount_cents","catalog_item_id"]}},"addons":{"type":"array"},"totals":{"type":"array","items":{"type":"object","properties":{"cents":{"type":"integer"},"billing":{"type":"string"}},"required":["cents","billing"]}},"currency":{"type":"string"},"discounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"code":{"description":"Null in the example; the guide says what else it can be."},"kind":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"billing":{"type":"string"},"trimmed":{"type":"boolean"},"percent_bp":{"description":"Null in the example; the guide says what else it can be."},"discount_id":{"description":"Null in the example; the guide says what else it can be."},"amount_cents":{"type":"integer"}},"required":["id","code","kind","name","label","billing","trimmed","percent_bp","discount_id","amount_cents"]}},"documents":{"type":"array"},"signed_at":{"type":"string"},"selections":{"type":"array","items":{"type":"object","properties":{"group":{"type":"string"},"title":{"type":"string"},"option":{"type":"string"},"price_cents":{"type":"integer"}},"required":["group","title","option","price_cents"]}},"typed_name":{"type":"string"},"attested_by":{"description":"Null in the example; the guide says what else it can be."},"total_cents":{"type":"integer"},"on_behalf_of":{"type":"string"},"signer_title":{"type":"string"},"via_proposal":{"description":"Null in the example; the guide says what else it can be."},"listed_totals":{"type":"array","items":{"type":"object","properties":{"cents":{"type":"integer"},"billing":{"type":"string"}},"required":["cents","billing"]}},"monthly_cents":{"type":"integer"},"signing_method":{"type":"string"},"prior_price_cents":{"description":"Null in the example; the guide says what else it can be."}},"required":["mode","lines","addons","totals","currency","documents","signed_at","selections","typed_name","attested_by","total_cents","via_proposal","monthly_cents","signing_method","prior_price_cents"]},"entitlements":{"type":"object","properties":{},"required":[]},"could_also_sign":{"type":"array","items":{"type":"string"}}},"required":["pdf","proposal","signature","entitlements"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_870bcb9c2b4644a08f7ad30d41e6db90","type":"proposal.signed","created_at":"2027-01-18T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"pdf":{"url":"https://app.engagecycle.com/api/v1/proposals/e80e9d66-947a-490d-bb61-5043472174f4/pdf","sha256":"3f9f7bbf149b229534995e9ca8663f94bd52fab3c33bcbb2fe4aa89a51230dd5","filename":"Proposal - Example Co - 2027.pdf"},"signers":[{"name":"Jordan Example","chose":true,"title":"Owner","position":1,"signed_at":"2027-01-18T15:00:00.000Z","signing_method":"magic_link","signing_url":null}],"proposal":{"id":"e80e9d66-947a-490d-bb61-5043472174f4","booked":true,"client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"signed","version":1,"campaign":null,"expires_at":"2027-02-16T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"],"original_expires_at":"2027-02-02T05:59:59.999Z"},"signature":{"mode":"choose","lines":[{"qty":1,"name":"Annual with planning","billing":"one_time","unit_cents":61000,"amount_cents":61000,"catalog_item_id":null}],"addons":[],"totals":[{"cents":56000,"billing":"one_time"}],"currency":"USD","discounts":[{"id":"d1","code":null,"kind":"per_client","name":"Returning client discount","label":"Returning client discount","billing":"one_time","trimmed":false,"percent_bp":null,"discount_id":null,"amount_cents":5000}],"documents":[],"signed_at":"2027-01-18T15:00:00.000Z","selections":[{"group":"packages","title":"Plus","option":"plus","price_cents":61000}],"typed_name":"Jordan Example","attested_by":null,"total_cents":56000,"on_behalf_of":"Example Co","signer_title":"Owner","via_proposal":null,"listed_totals":[{"cents":61000,"billing":"one_time"}],"monthly_cents":0,"signing_method":"magic_link","prior_price_cents":null},"entitlements":{},"could_also_sign":["Taylor Example","Morgan Example"]}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.declined":{"post":{"operationId":"webhookProposalDeclined","tags":["Webhooks"],"summary":"The client declined the proposal","description":"Sent to each of the business's endpoints that takes `proposal.declined`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.declined"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"decline":{"type":"object","properties":{"note":{"type":"string"},"reason":{"type":"string"},"reason_label":{"type":"string"}},"required":["note","reason","reason_label"]},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]}},"required":["decline","proposal"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_254ece4e28274a78a36acc2f957267c3","type":"proposal.declined","created_at":"2027-01-13T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"decline":{"note":"We found someone closer to home.","reason":"switching_provider","reason_label":"I'm going with someone else"},"proposal":{"id":"6ad29928-c32b-439a-874e-c600a32dec24","booked":false,"client":{"utm":null,"email":"riley@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1002","display_name":"Riley Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"declined","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]}}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.signer_signed":{"post":{"operationId":"webhookProposalSignerSigned","tags":["Webhooks"],"summary":"One signer of several signed","description":"Sent to each of the business's endpoints that takes `proposal.signer_signed`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.signer_signed"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"signer":{"type":"object","properties":{"name":{"type":"string"},"chose":{"type":"boolean"},"title":{"type":"string"},"position":{"type":"integer"},"signed_at":{"type":"string"},"signing_method":{"type":"string"}},"required":["name","chose","position","signed_at","signing_method"]},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}},"original_expires_at":{"type":"string"}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"remaining":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"position":{"type":"integer"}},"required":["name","position"]}}},"required":["signer","proposal","remaining"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_eda8b875d83249e18c8b568364a74377","type":"proposal.signer_signed","created_at":"2027-01-18T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"signer":{"name":"Jordan Example","chose":true,"title":"Owner","position":1,"signed_at":"2027-01-18T15:00:00.000Z","signing_method":"magic_link"},"proposal":{"id":"e80e9d66-947a-490d-bb61-5043472174f4","booked":true,"client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"expires_at":"2027-02-16T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"],"original_expires_at":"2027-02-02T05:59:59.999Z"},"remaining":[]}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.signer_declined":{"post":{"operationId":"webhookProposalSignerDeclined","tags":["Webhooks"],"summary":"One signer declined while others can still sign","description":"Sent to each of the business's endpoints that takes `proposal.signer_declined`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.signer_declined"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"signer":{"type":"object","properties":{"name":{"type":"string"},"position":{"type":"integer"}},"required":["name","position"]},"decline":{"type":"object","properties":{"note":{"type":"string"},"reason":{"type":"string"},"reason_label":{"type":"string"}},"required":["note","reason","reason_label"]},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}},"original_expires_at":{"type":"string"}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]}},"required":["signer","decline","proposal"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_36fdd537ef544dd59cd99ab81b1c38d5","type":"proposal.signer_declined","created_at":"2027-01-17T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"signer":{"name":"Taylor Example","position":2},"decline":{"note":"Too much for us this year.","reason":"price","reason_label":"The price"},"proposal":{"id":"e80e9d66-947a-490d-bb61-5043472174f4","booked":true,"client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"expires_at":"2027-02-16T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"],"original_expires_at":"2027-02-02T05:59:59.999Z"}}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.expired":{"post":{"operationId":"webhookProposalExpired","tags":["Webhooks"],"summary":"The proposal reached its deadline unsigned","description":"Sent to each of the business's endpoints that takes `proposal.expired`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.expired"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"expired_at":{"type":"string"}},"required":["proposal","expired_at"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_43fa8ef668fa401c9bdf2eb1d3429baa","type":"proposal.expired","created_at":"2027-02-02T06:59:59.999Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"proposal":{"id":"19541151-95d7-44c9-9488-d3d5fa01819a","booked":false,"client":{"utm":null,"email":"avery@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1003","display_name":"Avery Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"expired","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]},"expired_at":"2027-02-02T06:59:59.999Z"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.superseded":{"post":{"operationId":"webhookProposalSuperseded","tags":["Webhooks"],"summary":"Staff revised the proposal and sent a new version","description":"Sent to each of the business's endpoints that takes `proposal.superseded`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.superseded"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"superseded_at":{"type":"string"},"superseded_by":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer"}},"required":["id","version"]},"same_recipient":{"type":"boolean"}},"required":["proposal","superseded_at","superseded_by","same_recipient"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_142cc3d0a12d41d4b3c355b9dfaed4d5","type":"proposal.superseded","created_at":"2027-01-15T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"proposal":{"id":"d16f3201-3aa6-4931-82a8-e7819c516cdf","booked":false,"client":{"utm":null,"email":"harper@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1005","display_name":"Harper Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"superseded","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]},"superseded_at":"2027-01-15T15:00:00.000Z","superseded_by":{"id":"44fe80d7-47ad-4e84-bcca-431e8aaf829c","version":2},"same_recipient":true}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.withdrawn":{"post":{"operationId":"webhookProposalWithdrawn","tags":["Webhooks"],"summary":"Staff withdrew the proposal","description":"Sent to each of the business's endpoints that takes `proposal.withdrawn`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.withdrawn"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"withdrawn_at":{"type":"string"},"notify_client":{"type":"boolean"}},"required":["proposal","withdrawn_at","notify_client"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_b612150f06e146dfb4ae52075494d94d","type":"proposal.withdrawn","created_at":"2027-01-14T17:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"proposal":{"id":"643ccda8-513c-4315-8e49-a33d208df121","booked":false,"client":{"utm":null,"email":"quinn@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1004","display_name":"Quinn Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"revoked","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]},"withdrawn_at":"2027-01-14T17:00:00.000Z","notify_client":true}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.copy_viewed":{"post":{"operationId":"webhookProposalCopyViewed","tags":["Webhooks"],"summary":"A person copied on the proposal opened their view-only copy","description":"Sent to each of the business's endpoints that takes `proposal.copy_viewed`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.copy_viewed"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"viewed_at":{"type":"string"},"copied_person":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"required":["proposal","viewed_at","copied_person"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_99d15ef5f48f4f34ad45bc7034989c8d","type":"proposal.copy_viewed","created_at":"2027-01-11T16:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"proposal":{"id":"e80e9d66-947a-490d-bb61-5043472174f4","booked":false,"client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"sent","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]},"viewed_at":"2027-01-11T16:00:00.000Z","copied_person":{"id":"d524d03c-b60a-486b-9a1e-98fe7ca6f5d6","name":"Casey Example"}}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"proposal.deadline_extended":{"post":{"operationId":"webhookProposalDeadlineExtended","tags":["Webhooks"],"summary":"The client was given more time on the same proposal","description":"Sent to each of the business's endpoints that takes `proposal.deadline_extended`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"proposal.deadline_extended"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"deadline":{"type":"object","properties":{"to":{"type":"string"},"from":{"type":"string"},"reason":{"type":"string"},"reopened":{"type":"boolean"},"extended_at":{"type":"string"},"extended_by":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"]}},"required":["to","from","reason","reopened","extended_at","extended_by"]},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}},"original_expires_at":{"type":"string"}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options","original_expires_at"]},"notify_client":{"type":"boolean"},"signing_url":{"type":"string"}},"required":["deadline","proposal","notify_client","signing_url"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_c7cc00f1e1bf44179ac3f0c58a090a04","type":"proposal.deadline_extended","created_at":"2027-01-16T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"deadline":{"to":"2027-02-16T05:59:59.999Z","from":"2027-02-02T05:59:59.999Z","reason":"Waiting on documents","reopened":false,"extended_at":"2027-01-16T15:00:00.000Z","extended_by":{"name":"Robin Example","type":"user"}},"proposal":{"id":"e80e9d66-947a-490d-bb61-5043472174f4","booked":true,"client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"expires_at":"2027-02-16T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"],"original_expires_at":"2027-02-02T05:59:59.999Z"},"notify_client":true,"signing_url":"https://example-office.engagecycle.com/p/uVmAdwggoiQVuxUcgpvbrYDixFjj2aXJ6ElB2Rc4MYc"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.sent":{"post":{"operationId":"webhookDocumentSent","tags":["Webhooks"],"summary":"An agreement or consent is ready to email","description":"Sent to each of the business's endpoints that takes `document.sent`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.sent"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"signers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"state":{"type":"string"},"position":{"type":"integer"},"signing_url":{"type":"string"}},"required":["name","state","position","signing_url"]}},"signing":{"type":"object","properties":{"rule":{"type":"string"},"order":{"type":"string"}},"required":["rule","order"]},"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes"]},"is_resend":{"type":"boolean"},"signing_url":{"type":"string"}},"required":["document","is_resend","signing_url"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_6bf4f24d05b5421bac7f971bb5178ce4","type":"document.sent","created_at":"2027-01-19T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"signers":[{"name":"Jordan Example","state":"open","position":1,"signing_url":"https://example-office.engagecycle.com/p/f9ZHBiiXNQGcbnhgONCYspvqFnSjoi4cJ7hPLzagu6s"},{"name":"Taylor Example","state":"open","position":2,"signing_url":"https://example-office.engagecycle.com/p/OmwmOtkobUYjRZEtnLOSmxGoeHC6wWQrGA4YhrHuY2c"}],"signing":{"rule":"all","order":"any"},"document":{"id":"9114c923-0cee-4e3d-9774-4be2ebdcf629","kind":"consent","client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"sent","version":1,"campaign":null,"template":{"id":"581c6ae4-e81f-461a-ab36-6b97e6d54b47","name":"Use of information"},"expires_at":"2027-02-10T05:59:59.999Z","supersedes":null},"is_resend":false,"signing_url":"https://example-office.engagecycle.com/p/f9ZHBiiXNQGcbnhgONCYspvqFnSjoi4cJ7hPLzagu6s"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.viewed":{"post":{"operationId":"webhookDocumentViewed","tags":["Webhooks"],"summary":"The client opened the document for the first time","description":"Sent to each of the business's endpoints that takes `document.viewed`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.viewed"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes"]},"viewed_at":{"type":"string"}},"required":["document","viewed_at"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_f70c41a128894793b36239443a4337a6","type":"document.viewed","created_at":"2027-01-19T16:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"document":{"id":"9114c923-0cee-4e3d-9774-4be2ebdcf629","kind":"consent","client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"template":{"id":"581c6ae4-e81f-461a-ab36-6b97e6d54b47","name":"Use of information"},"expires_at":"2027-02-10T05:59:59.999Z","supersedes":null},"viewed_at":"2027-01-19T16:00:00.000Z"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.signed":{"post":{"operationId":"webhookDocumentSigned","tags":["Webhooks"],"summary":"The document is signed and its PDF is ready","description":"Sent to each of the business's endpoints that takes `document.signed`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.signed"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"pdf":{"type":"object","properties":{"url":{"type":"string"},"sha256":{"type":"string"},"filename":{"type":"string"}},"required":["url","sha256","filename"]},"signers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"chose":{"type":"boolean"},"title":{"type":"string"},"position":{"type":"integer"},"signed_at":{"type":"string"},"signing_method":{"type":"string"},"signing_url":{"type":["string","null"]}},"required":["name","chose","position","signed_at","signing_method","signing_url"]}},"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"original_expires_at":{"type":"string"}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes"]},"signature":{"type":"object","properties":{"consents":{"type":"array"},"signed_at":{"type":"string"},"typed_name":{"type":"string"},"attested_by":{"description":"Null in the example; the guide says what else it can be."},"on_behalf_of":{"type":"string"},"signer_title":{"type":"string"},"via_proposal":{"description":"Null in the example; the guide says what else it can be."},"signing_method":{"type":"string"}},"required":["consents","signed_at","typed_name","attested_by","via_proposal","signing_method"]},"no_response":{"type":"array"},"agreed_by_all":{"type":"boolean"},"declined_signers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"position":{"type":"integer"}},"required":["name","position"]}}},"required":["pdf","document","signature"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_02d24796e0cf4c1bacdac3655e5c83a0","type":"document.signed","created_at":"2027-01-22T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"pdf":{"url":"https://app.engagecycle.com/api/v1/documents/9114c923-0cee-4e3d-9774-4be2ebdcf629/pdf","sha256":"3afecf19a796e229365c6848780c40b1a8d9ea13ee7383a7ab28744d2083c9aa","filename":"Consent - Example Co - 2027.pdf"},"signers":[{"name":"Jordan Example","chose":false,"title":"Owner","position":1,"signed_at":"2027-01-21T15:00:00.000Z","signing_method":"magic_link","signing_url":null}],"document":{"id":"9114c923-0cee-4e3d-9774-4be2ebdcf629","kind":"consent","client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"signed","version":1,"campaign":null,"template":{"id":"581c6ae4-e81f-461a-ab36-6b97e6d54b47","name":"Use of information"},"expires_at":"2027-02-24T05:59:59.999Z","supersedes":null,"original_expires_at":"2027-02-10T05:59:59.999Z"},"signature":{"consents":[],"signed_at":"2027-01-22T15:00:00.000Z","typed_name":"Jordan Example","attested_by":null,"on_behalf_of":"Example Co","signer_title":"Owner","via_proposal":null,"signing_method":"magic_link"},"no_response":[],"agreed_by_all":false,"declined_signers":[{"name":"Taylor Example","position":2}]}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.declined":{"post":{"operationId":"webhookDocumentDeclined","tags":["Webhooks"],"summary":"The client declined the document","description":"Sent to each of the business's endpoints that takes `document.declined`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.declined"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"decline":{"type":"object","properties":{"note":{"type":"string"},"reason":{"type":"string"},"reason_label":{"type":"string"}},"required":["note","reason","reason_label"]},"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes"]}},"required":["decline","document"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_8e6573f9b9154cfe9b4414068e4a8da9","type":"document.declined","created_at":"2027-01-20T16:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"decline":{"note":"Not right now.","reason":"no_thanks","reason_label":"No thanks"},"document":{"id":"cdde7e7d-d39a-4923-913f-cddcf66454cd","kind":"consent","client":{"utm":null,"email":"riley@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1002","display_name":"Riley Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"declined","version":1,"campaign":null,"template":{"id":"581c6ae4-e81f-461a-ab36-6b97e6d54b47","name":"Use of information"},"expires_at":"2027-02-10T05:59:59.999Z","supersedes":null}}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.expired":{"post":{"operationId":"webhookDocumentExpired","tags":["Webhooks"],"summary":"The document reached its deadline unsigned","description":"Sent to each of the business's endpoints that takes `document.expired`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.expired"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"packet_id":{"type":"string"},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes"]},"expired_at":{"type":"string"}},"required":["document","expired_at"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_af2dbeba314a4990b18cc611c927f98c","type":"document.expired","created_at":"2027-02-14T06:59:59.999Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"document":{"id":"701260e9-01c6-4de9-8379-522bca6dcb6f","kind":"agreement","client":{"utm":null,"email":"harper@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1005","display_name":"Harper Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"expired","version":1,"campaign":null,"template":{"id":"b658e541-4668-4d38-9225-ee77dcb3b68d","name":"Engagement letter"},"packet_id":"08b957bf-bd78-41a5-a40b-766edfd2b7e5","expires_at":"2027-02-14T05:59:59.999Z","supersedes":null},"expired_at":"2027-02-14T06:59:59.999Z"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.withdrawn":{"post":{"operationId":"webhookDocumentWithdrawn","tags":["Webhooks"],"summary":"Staff withdrew the document","description":"Sent to each of the business's endpoints that takes `document.withdrawn`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.withdrawn"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes"]},"withdrawn_at":{"type":"string"},"notify_client":{"type":"boolean"}},"required":["document","withdrawn_at","notify_client"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_c99af1d24e034d2ab06a632c7ee2d2fe","type":"document.withdrawn","created_at":"2027-01-20T17:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"document":{"id":"e02dbb97-c4ac-4978-a0c9-c99388864850","kind":"agreement","client":{"utm":null,"email":"avery@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1003","display_name":"Avery Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"revoked","version":1,"campaign":null,"template":{"id":"b658e541-4668-4d38-9225-ee77dcb3b68d","name":"Engagement letter"},"expires_at":"2027-02-10T05:59:59.999Z","supersedes":null},"withdrawn_at":"2027-01-20T17:00:00.000Z","notify_client":false}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.superseded":{"post":{"operationId":"webhookDocumentSuperseded","tags":["Webhooks"],"summary":"Staff revised the document and sent a new version","description":"Sent to each of the business's endpoints that takes `document.superseded`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.superseded"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes"]},"superseded_at":{"type":"string"},"superseded_by":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer"}},"required":["id","version"]},"same_recipient":{"type":"boolean"}},"required":["document","superseded_at","superseded_by","same_recipient"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_582935f1c78046d4aa2a75519b466049","type":"document.superseded","created_at":"2027-01-20T18:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"document":{"id":"d229d6e3-9e7f-413c-923c-2ca0dc73ed83","kind":"agreement","client":{"utm":null,"email":"quinn@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1004","display_name":"Quinn Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"superseded","version":1,"campaign":null,"template":{"id":"b658e541-4668-4d38-9225-ee77dcb3b68d","name":"Engagement letter"},"expires_at":"2027-02-10T05:59:59.999Z","supersedes":null},"superseded_at":"2027-01-20T18:00:00.000Z","superseded_by":{"id":"1ade1534-7fd4-4269-9876-fe64f8209eb8","version":2},"same_recipient":true}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.signer_signed":{"post":{"operationId":"webhookDocumentSignerSigned","tags":["Webhooks"],"summary":"One signer of a document signed","description":"Sent to each of the business's endpoints that takes `document.signer_signed`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.signer_signed"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"signer":{"type":"object","properties":{"name":{"type":"string"},"chose":{"type":"boolean"},"title":{"type":"string"},"position":{"type":"integer"},"signed_at":{"type":"string"},"signing_method":{"type":"string"}},"required":["name","chose","position","signed_at","signing_method"]},"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"original_expires_at":{"type":"string"}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes"]},"remaining":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"position":{"type":"integer"}},"required":["name","position"]}}},"required":["signer","document","remaining"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_b3c4e0f0dd4847d1a7c29e954d0f8cb7","type":"document.signer_signed","created_at":"2027-01-21T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"signer":{"name":"Jordan Example","chose":false,"title":"Owner","position":1,"signed_at":"2027-01-21T15:00:00.000Z","signing_method":"magic_link"},"document":{"id":"9114c923-0cee-4e3d-9774-4be2ebdcf629","kind":"consent","client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"template":{"id":"581c6ae4-e81f-461a-ab36-6b97e6d54b47","name":"Use of information"},"expires_at":"2027-02-24T05:59:59.999Z","supersedes":null,"original_expires_at":"2027-02-10T05:59:59.999Z"},"remaining":[{"name":"Taylor Example","position":2}]}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.signer_declined":{"post":{"operationId":"webhookDocumentSignerDeclined","tags":["Webhooks"],"summary":"One signer of a document declined","description":"Sent to each of the business's endpoints that takes `document.signer_declined`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.signer_declined"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"signer":{"type":"object","properties":{"name":{"type":"string"},"position":{"type":"integer"}},"required":["name","position"]},"decline":{"type":"object","properties":{"note":{"type":"string"},"reason":{"type":"string"},"reason_label":{"type":"string"}},"required":["note","reason","reason_label"]},"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"original_expires_at":{"type":"string"}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes"]}},"required":["signer","decline","document"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_b20cd072c193438a8bae62602e6932df","type":"document.signer_declined","created_at":"2027-01-22T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"signer":{"name":"Taylor Example","position":2},"decline":{"note":"Not for me, thanks.","reason":"no_thanks","reason_label":"No thanks"},"document":{"id":"9114c923-0cee-4e3d-9774-4be2ebdcf629","kind":"consent","client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"template":{"id":"581c6ae4-e81f-461a-ab36-6b97e6d54b47","name":"Use of information"},"expires_at":"2027-02-24T05:59:59.999Z","supersedes":null,"original_expires_at":"2027-02-10T05:59:59.999Z"}}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"document.deadline_extended":{"post":{"operationId":"webhookDocumentDeadlineExtended","tags":["Webhooks"],"summary":"The client was given more time on the same document","description":"Sent to each of the business's endpoints that takes `document.deadline_extended`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"document.deadline_extended"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"deadline":{"type":"object","properties":{"to":{"type":"string"},"from":{"type":"string"},"reason":{"type":"string"},"reopened":{"type":"boolean"},"extended_at":{"type":"string"},"extended_by":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"]}},"required":["to","from","reason","reopened","extended_at","extended_by"]},"document":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"contact_name":{"type":"string"},"display_name":{"type":"string"},"contact_title":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"original_expires_at":{"type":"string"}},"required":["id","kind","client","origin","status","version","campaign","template","expires_at","supersedes","original_expires_at"]},"notify_client":{"type":"boolean"},"signing_url":{"type":"string"}},"required":["deadline","document","notify_client","signing_url"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_4ced7d61deed4e6db05b2528ba477abc","type":"document.deadline_extended","created_at":"2027-01-20T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"deadline":{"to":"2027-02-24T05:59:59.999Z","from":"2027-02-10T05:59:59.999Z","reason":"Waiting for the partner to answer","reopened":false,"extended_at":"2027-01-20T15:00:00.000Z","extended_by":{"name":"Robin Example","type":"user"}},"document":{"id":"9114c923-0cee-4e3d-9774-4be2ebdcf629","kind":"consent","client":{"utm":null,"type":"business","email":"jordan@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1001","contact_name":"Jordan Example","display_name":"Example Co","contact_title":"Owner","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"viewed","version":1,"campaign":null,"template":{"id":"581c6ae4-e81f-461a-ab36-6b97e6d54b47","name":"Use of information"},"expires_at":"2027-02-24T05:59:59.999Z","supersedes":null,"original_expires_at":"2027-02-10T05:59:59.999Z"},"notify_client":true,"signing_url":"https://example-office.engagecycle.com/p/tnWQwBpAIEwCDvrcIJn3i_BZJ9xr3RGciJWK7UkYQY0"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"packet.sent":{"post":{"operationId":"webhookPacketSent","tags":["Webhooks"],"summary":"A walkthrough went out, or its link was sent again","description":"Sent to each of the business's endpoints that takes `packet.sent`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"packet.sent"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"packet":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"position":{"type":"integer"},"required":{"type":"boolean"},"template":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"document_id":{"type":["string","null"]}},"required":["kind","title","status","position","required","template","document_id"]}},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"definition_id":{"type":"string"},"snapshot_sha256":{"type":"string"}},"required":["id","name","steps","client","origin","status","campaign","expires_at","definition_id","snapshot_sha256"]},"is_resend":{"type":"boolean"},"packet_url":{"type":"string"}},"required":["packet","is_resend","packet_url"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_6dd265d7ce024dbf8a7db79e9e1f8d05","type":"packet.sent","created_at":"2027-01-23T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"packet":{"id":"b76e19a6-5cb2-4e16-9819-9a407910c19f","name":"New client onboarding","steps":[{"kind":"proposal","title":"Renewal letter","status":"sent","position":1,"required":true,"template":{"id":"59737070-51ca-4f42-a1e9-910035887ba9","name":"Renewal letter"},"document_id":"c011617f-31c7-42bf-9efd-886ba27d3218"},{"kind":"agreement","title":"Engagement letter","status":"waiting","position":2,"required":true,"template":{"id":"b658e541-4668-4d38-9225-ee77dcb3b68d","name":"Engagement letter"},"document_id":null}],"client":{"utm":null,"email":"blake@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1006","display_name":"Blake Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"open","campaign":null,"expires_at":"2027-02-14T05:59:59.999Z","definition_id":"4defa5db-cb58-4e75-bb14-54f100357650","snapshot_sha256":"165f32f3a4b545b70d649b8fd3f0034542ba792d2128bdbdbd7c50e57127fab2"},"is_resend":false,"packet_url":"https://example-office.engagecycle.com/w/WSdFc349OeOXLm32U2KFP8LZ21QvO5JmKK4Et2Qu5aU"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"packet.completed":{"post":{"operationId":"webhookPacketCompleted","tags":["Webhooks"],"summary":"Every required step of a walkthrough is signed","description":"Sent to each of the business's endpoints that takes `packet.completed`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"packet.completed"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"steps":{"type":"array","items":{"type":"object","properties":{"pdf":{"type":"object","properties":{"url":{"type":"string"},"sha256":{"type":"string"},"filename":{"type":"string"}},"required":["url","sha256","filename"]},"kind":{"type":"string"},"title":{"type":"string"},"outcome":{"type":"string"},"position":{"type":"integer"},"required":{"type":"boolean"},"signed_at":{"type":"string"},"document_id":{"type":"string"}},"required":["pdf","kind","title","outcome","position","required","signed_at","document_id"]}},"packet":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"client":{"type":"object","properties":{"utm":{"description":"Null in the example; the guide says what else it can be."},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"description":"Null in the example; the guide says what else it can be."}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"description":"Null in the example; the guide says what else it can be."},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"definition_id":{"type":"string"},"snapshot_sha256":{"type":"string"}},"required":["id","name","client","origin","status","campaign","expires_at","definition_id","snapshot_sha256"]},"completed_at":{"type":"string"}},"required":["steps","packet","completed_at"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_01202429e62e4ec3954ef007f28cb8f4","type":"packet.completed","created_at":"2027-01-24T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"steps":[{"pdf":{"url":"https://app.engagecycle.com/api/v1/proposals/c011617f-31c7-42bf-9efd-886ba27d3218/pdf","sha256":"347a203122a849167cd0456f34af23585db7f911512230d91eab846b872ce0e7","filename":"Proposal - Blake Sample - 2027.pdf"},"kind":"proposal","title":"Renewal letter","outcome":"signed","position":1,"required":true,"signed_at":"2027-01-24T15:00:00.000Z","document_id":"c011617f-31c7-42bf-9efd-886ba27d3218"},{"pdf":{"url":"https://app.engagecycle.com/api/v1/documents/6eedd743-2a06-4250-a68c-b440a5ab1a83/pdf","sha256":"c838bc73cf0ed195322a3bb6aba5267e1804040fa6c2b9296d6f4f9231d66977","filename":"Agreement - Blake Sample - 2027.pdf"},"kind":"agreement","title":"Engagement letter","outcome":"signed","position":2,"required":true,"signed_at":"2027-01-24T15:00:00.000Z","document_id":"6eedd743-2a06-4250-a68c-b440a5ab1a83"}],"packet":{"id":"b76e19a6-5cb2-4e16-9819-9a407910c19f","name":"New client onboarding","client":{"utm":null,"email":"blake@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1006","display_name":"Blake Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"completed","campaign":null,"expires_at":"2027-02-14T05:59:59.999Z","definition_id":"4defa5db-cb58-4e75-bb14-54f100357650","snapshot_sha256":"165f32f3a4b545b70d649b8fd3f0034542ba792d2128bdbdbd7c50e57127fab2"},"completed_at":"2027-01-24T15:00:00.000Z"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"link.requested":{"post":{"operationId":"webhookLinkRequested","tags":["Webhooks"],"summary":"A client asked for their link again and a new one was issued","description":"Sent to each of the business's endpoints that takes `link.requested`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"link.requested"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"email":{"type":"string"},"flags":{"type":"object","properties":{"plan":{"type":"string"},"extra_locations":{"type":"integer"}},"required":["plan","extra_locations"]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":"string"},"display_name":{"type":"string"},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["id","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"requested_at":{"type":"string"}},"required":["proposal","requested_at"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_553697a00efc4a35a23d0edea811650e","type":"link.requested","created_at":"2027-01-14T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"proposal":{"id":"19541151-95d7-44c9-9488-d3d5fa01819a","booked":false,"client":{"utm":null,"email":"avery@example.com","flags":{"plan":"standard","extra_locations":1},"is_new":false,"source":"import","external_id":"crm-1003","display_name":"Avery Sample","referral_partner":null},"origin":{"id":null,"type":"adhoc"},"status":"sent","version":1,"campaign":null,"expires_at":"2027-02-02T05:59:59.999Z","supersedes":null,"visible_options":["std","plus"]},"requested_at":"2027-01-14T15:00:00.000Z"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"lead.created":{"post":{"operationId":"webhookLeadCreated","tags":["Webhooks"],"summary":"A prospect entered their email on an offer","description":"Sent to each of the business's endpoints that takes `lead.created`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"lead.created"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"lead":{"type":"object","properties":{"id":{"type":"string"},"utm":{"type":"object","properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"name":{"type":"string"},"email":{"type":"string"},"offer":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"]},"referral_partner":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]},"marketing_consent":{"type":"boolean"}},"required":["id","utm","name","email","offer","referral_partner","marketing_consent"]}},"required":["lead"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_5da45f4751e14709bc5a03129348016c","type":"lead.created","created_at":"2027-01-25T16:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"lead":{"id":"91526820-45f0-4063-bbc0-c16b5a12b112","utm":{"source":"qr","campaign":"spring-flyer"},"name":"Drew Sample","email":"drew@example.com","offer":{"id":"5862e0a2-8f35-41c2-934e-86a0a88edddc","slug":"new-clients"},"referral_partner":{"code":"LAKESIDE","name":"Lakeside Partners"},"marketing_consent":true}}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"lead.verified":{"post":{"operationId":"webhookLeadVerified","tags":["Webhooks"],"summary":"A prospect confirmed their email and has a proposal","description":"Sent to each of the business's endpoints that takes `lead.verified`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"lead.verified"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"lead":{"type":"object","properties":{"id":{"type":"string"},"utm":{"type":"object","properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"name":{"type":"string"},"email":{"type":"string"},"offer":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"]},"referral_partner":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]},"marketing_consent":{"type":"boolean"}},"required":["id","utm","name","email","offer","referral_partner","marketing_consent"]},"answers":{"type":"object","properties":{"billing":{"type":"string"},"locations":{"type":"integer"}},"required":["billing","locations"]},"outcome":{"type":"string"},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":"object","properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"email":{"type":"string"},"flags":{"type":"object","properties":{},"required":[]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":["string","null"]},"display_name":{"type":"string"},"referral_partner":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"type":{"type":"string"}},"required":["id","slug","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]}},"required":["lead","answers","outcome","proposal"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_bd6bd13052304d12bb7ab90a85ccec97","type":"lead.verified","created_at":"2027-01-25T16:06:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"lead":{"id":"91526820-45f0-4063-bbc0-c16b5a12b112","utm":{"source":"qr","campaign":"spring-flyer"},"name":"Drew Sample","email":"drew@example.com","offer":{"id":"5862e0a2-8f35-41c2-934e-86a0a88edddc","slug":"new-clients"},"referral_partner":{"code":"LAKESIDE","name":"Lakeside Partners"},"marketing_consent":true},"answers":{"billing":"annual","locations":2},"outcome":"new_client","proposal":{"id":"b49d2048-1adc-4160-a5d4-ac3ed3ef19d0","booked":false,"client":{"utm":{"source":"qr","campaign":"spring-flyer"},"email":"drew@example.com","flags":{},"is_new":true,"source":"offer","external_id":null,"display_name":"Drew Sample","referral_partner":{"code":"LAKESIDE","name":"Lakeside Partners"}},"origin":{"id":"5862e0a2-8f35-41c2-934e-86a0a88edddc","slug":"new-clients","type":"offer"},"status":"sent","version":1,"campaign":null,"expires_at":"2027-02-16T05:59:59.999Z","supersedes":null,"visible_options":["standard"]}}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"lead.abandoned":{"post":{"operationId":"webhookLeadAbandoned","tags":["Webhooks"],"summary":"A prospect confirmed their email but didn't sign in time","description":"Sent to each of the business's endpoints that takes `lead.abandoned`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"lead.abandoned"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"lead":{"type":"object","properties":{"id":{"type":"string"},"utm":{"type":"object","properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"name":{"type":"string"},"email":{"type":"string"},"offer":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"]},"referral_partner":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]},"marketing_consent":{"type":"boolean"}},"required":["id","utm","name","email","offer","referral_partner","marketing_consent"]},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":"object","properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"email":{"type":"string"},"flags":{"type":"object","properties":{},"required":[]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":["string","null"]},"display_name":{"type":"string"},"referral_partner":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"type":{"type":"string"}},"required":["id","slug","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"resume_url":{"type":"string"}},"required":["lead","proposal","resume_url"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_c02baf6cff0c48b2b8ad654075232287","type":"lead.abandoned","created_at":"2027-01-28T17:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"lead":{"id":"16695729-ef72-4c73-9cd5-0cb2493e8224","utm":{"source":"qr","campaign":"spring-flyer"},"name":"Sky Sample","email":"sky@example.com","offer":{"id":"5862e0a2-8f35-41c2-934e-86a0a88edddc","slug":"new-clients"},"referral_partner":{"code":"LAKESIDE","name":"Lakeside Partners"},"marketing_consent":false},"proposal":{"id":"8d05c59e-1890-4f52-bcd2-381cfe3abfb8","booked":false,"client":{"utm":{"source":"qr","campaign":"spring-flyer"},"email":"sky@example.com","flags":{},"is_new":true,"source":"offer","external_id":null,"display_name":"Sky Sample","referral_partner":{"code":"LAKESIDE","name":"Lakeside Partners"}},"origin":{"id":"5862e0a2-8f35-41c2-934e-86a0a88edddc","slug":"new-clients","type":"offer"},"status":"sent","version":1,"campaign":null,"expires_at":"2027-02-17T05:59:59.999Z","supersedes":null,"visible_options":["standard"]},"resume_url":"https://example-office.engagecycle.com/r/OheP1f0zTJj8pQ6quu9J1R-Yt9xLErokWf5FAjRKmGU"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"lead.awaiting_review":{"post":{"operationId":"webhookLeadAwaitingReview","tags":["Webhooks"],"summary":"A prospect's request is waiting for staff to review","description":"Sent to each of the business's endpoints that takes `lead.awaiting_review`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"lead.awaiting_review"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"lead":{"type":"object","properties":{"id":{"type":"string"},"utm":{"type":"object","properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"name":{"type":"string"},"email":{"type":"string"},"offer":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"]},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]},"marketing_consent":{"type":"boolean"}},"required":["id","utm","name","email","offer","referral_partner","marketing_consent"]},"answers":{"type":"object","properties":{"billing":{"type":"string"},"locations":{"type":"integer"}},"required":["billing","locations"]},"expires_at":{"type":"string"},"existing_client":{"type":"boolean"}},"required":["lead","answers","expires_at","existing_client"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_19b1a9e6a03c439d99405eed6b4651f8","type":"lead.awaiting_review","created_at":"2027-01-26T17:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"lead":{"id":"51642322-4b8e-43bb-b838-4b4cb6f56937","utm":{"source":"qr","campaign":"spring-flyer"},"name":"Rowan Sample","email":"rowan@example.com","offer":{"id":"aa6961fa-53b2-4d1a-a522-d9b0e242b216","slug":"request-a-quote"},"referral_partner":null,"marketing_consent":false},"answers":{"billing":"annual","locations":2},"expires_at":"2027-02-25T17:00:00.000Z","existing_client":false}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"lead.declined":{"post":{"operationId":"webhookLeadDeclined","tags":["Webhooks"],"summary":"A waiting request closed without a proposal","description":"Sent to each of the business's endpoints that takes `lead.declined`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"lead.declined"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"lead":{"type":"object","properties":{"id":{"type":"string"},"utm":{"type":"object","properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"name":{"type":"string"},"email":{"type":"string"},"offer":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"]},"referral_partner":{"type":["object","null"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]},"marketing_consent":{"type":"boolean"}},"required":["id","utm","name","email","offer","referral_partner","marketing_consent"]},"reason":{"type":"string"},"email_sent":{"type":"boolean"}},"required":["lead","reason","email_sent"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_3e41bbeec0244089bd519dbd7b219670","type":"lead.declined","created_at":"2027-01-27T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"lead":{"id":"51642322-4b8e-43bb-b838-4b4cb6f56937","utm":{"source":"qr","campaign":"spring-flyer"},"name":"Rowan Sample","email":"rowan@example.com","offer":{"id":"aa6961fa-53b2-4d1a-a522-d9b0e242b216","slug":"request-a-quote"},"referral_partner":null,"marketing_consent":false},"reason":"declined","email_sent":false}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"client.created":{"post":{"operationId":"webhookClientCreated","tags":["Webhooks"],"summary":"An offer's prospect became one of the business's clients","description":"Sent to each of the business's endpoints that takes `client.created`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"client.created"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"client":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"source":{"type":"string"},"external_id":{"description":"Null in the example; the guide says what else it can be."},"display_name":{"type":"string"},"became_client_at":{"type":"string"}},"required":["id","email","source","external_id","display_name","became_client_at"]},"source":{"type":"object","properties":{"utm":{"type":"object","properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"offer":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"]},"referral_partner":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","offer","referral_partner"]},"proposal":{"type":"object","properties":{"id":{"type":"string"},"booked":{"type":"boolean"},"client":{"type":"object","properties":{"utm":{"type":"object","properties":{"source":{"type":"string"},"campaign":{"type":"string"}},"required":["source","campaign"]},"email":{"type":"string"},"flags":{"type":"object","properties":{},"required":[]},"is_new":{"type":"boolean"},"source":{"type":"string"},"external_id":{"type":["string","null"]},"display_name":{"type":"string"},"referral_partner":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}},"required":["utm","email","flags","is_new","source","external_id","display_name","referral_partner"]},"origin":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"type":{"type":"string"}},"required":["id","slug","type"]},"status":{"type":"string"},"version":{"type":"integer"},"campaign":{"description":"Null in the example; the guide says what else it can be."},"expires_at":{"type":"string"},"supersedes":{"description":"Null in the example; the guide says what else it can be."},"visible_options":{"type":"array","items":{"type":"string"}}},"required":["id","booked","client","origin","status","version","campaign","expires_at","supersedes","visible_options"]},"became_client_by":{"type":"string"}},"required":["client","source","became_client_by"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_8f312604a807425e83a604bc3bc2b712","type":"client.created","created_at":"2027-01-25T18:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"client":{"id":"da04828c-6f6c-424a-8057-02ee5217379d","email":"drew@example.com","source":"offer","external_id":null,"display_name":"Drew Sample","became_client_at":"2027-01-25T18:00:00.000Z"},"source":{"utm":{"source":"qr","campaign":"spring-flyer"},"offer":{"id":"5862e0a2-8f35-41c2-934e-86a0a88edddc","slug":"new-clients"},"referral_partner":{"code":"LAKESIDE","name":"Lakeside Partners"}},"proposal":{"id":"b49d2048-1adc-4160-a5d4-ac3ed3ef19d0","booked":false,"client":{"utm":{"source":"qr","campaign":"spring-flyer"},"email":"drew@example.com","flags":{},"is_new":true,"source":"offer","external_id":null,"display_name":"Drew Sample","referral_partner":{"code":"LAKESIDE","name":"Lakeside Partners"}},"origin":{"id":"5862e0a2-8f35-41c2-934e-86a0a88edddc","slug":"new-clients","type":"offer"},"status":"signed","version":1,"campaign":null,"expires_at":"2027-02-16T05:59:59.999Z","supersedes":null,"visible_options":["standard"]},"became_client_by":"signed"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"email.bounced":{"post":{"operationId":"webhookEmailBounced","tags":["Webhooks"],"summary":"An email to a client bounced","description":"Sent to each of the business's endpoints that takes `email.bounced`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"email.bounced"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"email":{"type":"object","properties":{"id":{"type":"string"},"to":{"type":"string"},"kind":{"type":"string"},"sender":{"type":"string"},"proposal_id":{"type":"string"}},"required":["id","to","kind","sender","proposal_id"]},"bounce":{"type":"object","properties":{"at":{"type":"string"},"detail":{"type":"string"}},"required":["at","detail"]},"suppressed":{"type":"boolean"}},"required":["email","bounce","suppressed"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_4c7aa8434b7648609272a9ecd733eec3","type":"email.bounced","created_at":"2027-01-29T15:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"email":{"id":"190408a9-366f-42db-ba86-fe5535be2a68","to":"riley@example.com","kind":"proposal_link","sender":"postmark","proposal_id":"6ad29928-c32b-439a-874e-c600a32dec24"},"bounce":{"at":"2027-01-29T15:00:00.000Z","detail":"Mailbox does not exist"},"suppressed":true}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"email.complained":{"post":{"operationId":"webhookEmailComplained","tags":["Webhooks"],"summary":"A client marked an email as spam","description":"Sent to each of the business's endpoints that takes `email.complained`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"email.complained"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"email":{"type":"object","properties":{"id":{"type":"string"},"to":{"type":"string"},"kind":{"type":"string"},"sender":{"type":"string"},"proposal_id":{"type":"string"}},"required":["id","to","kind","sender","proposal_id"]},"complaint":{"type":"object","properties":{"at":{"type":"string"},"detail":{"type":"string"}},"required":["at","detail"]},"suppressed":{"type":"boolean"}},"required":["email","complaint","suppressed"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_4a4c572602e4424ea913af8c1ae1157c","type":"email.complained","created_at":"2027-01-29T16:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"email":{"id":"567c63b1-e634-44a8-a35b-b1ba73c74d87","to":"quinn@example.com","kind":"proposal_link","sender":"postmark","proposal_id":"643ccda8-513c-4315-8e49-a33d208df121"},"complaint":{"at":"2027-01-29T16:00:00.000Z","detail":"Reported as spam"},"suppressed":true}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}},"webhook.test":{"post":{"operationId":"webhookWebhookTest","tags":["Webhooks"],"summary":"A test event sent from Integrations","description":"Sent to each of the business's endpoints that takes `webhook.test`. Answer with any 2xx within 10 seconds. The guide (/api/docs/webhooks) explains the signature, retries, and order.","security":[],"parameters":[{"name":"X-EngageCycle-Event","in":"header","required":true,"description":"The event type, the same as the body's `type`.","schema":{"type":"string"}},{"name":"X-EngageCycle-Event-Id","in":"header","required":true,"description":"The event's id, the same as the body's `id`: `evt_` and 32 hex characters. The same on every try and at every endpoint, so dedupe on it.","schema":{"type":"string","pattern":"^evt_[0-9a-f]{32}$"}},{"name":"X-EngageCycle-Timestamp","in":"header","required":true,"description":"When this try was sent, in Unix seconds. Reject a try more than 5 minutes off.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-EngageCycle-Signature","in":"header","required":true,"description":"v1= and the hex HMAC-SHA256 of \"{timestamp}.{raw body}\", keyed with the endpoint's signing secret.","schema":{"type":"string","pattern":"^v1=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The event's id: evt_ and 32 hex characters."},"type":{"type":"string","const":"webhook.test"},"created_at":{"type":"string","format":"date-time","description":"When the event was written."},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"description":"The business the event is about."},"data":{"type":"object","properties":{"by":{"type":"string"},"test":{"type":"boolean"},"sent_at":{"type":"string"}},"required":["by","test","sent_at"]}},"required":["id","type","created_at","tenant","data"]},"example":{"id":"evt_fc68aa54db664dacba7f4205a8377584","type":"webhook.test","created_at":"2027-01-29T17:00:00.000Z","tenant":{"id":"2a11b7e2-6b39-41ea-b05f-001566400f1d","slug":"example-office"},"data":{"by":"robin@example.com","test":true,"sent_at":"2027-01-29T17:00:00.000Z"}}}}},"responses":{"2XX":{"description":"Received. Anything else, or no answer in 10 seconds, is tried again."}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"An API key from Integrations > API keys. Scopes: clients:read (Read clients), clients:write (Add and change clients), proposals:read (Read proposals and signed PDFs), proposals:write (Make and change draft proposals), proposals:send (Send and withdraw proposals), proposals:links (Read clients' signing links), catalog:read (Read the catalog, templates, and presets), catalog:write (Add and change catalog items (not their prices)), catalog:prices (Set and change catalog prices), campaigns:read (Read campaigns), offers:read (Read offers and leads), events:read (Read events), events:write (Send events to the webhook again), documents:read (Read agreements, consents, and their signed PDFs)."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable code to branch on"},"message":{"type":"string","description":"Words for a person"},"field":{"description":"The input at fault, as a dotted path","type":"string"},"details":{"type":"array","items":{"type":"string"}},"scope":{"description":"missing_scope: the scope the key needs","type":"string"},"columns":{"description":"unknown_columns: the columns","type":"array","items":{"type":"string"}},"request_id":{"description":"internal_error: quote it to support","type":"string"}},"required":["code","message"],"additionalProperties":{}}},"required":["error"],"additionalProperties":false},"Me":{"type":"object","properties":{"tenant":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"currency":{"type":"string"},"timezone":{"type":"string"}},"required":["id","slug","name","currency","timezone"],"additionalProperties":false},"key":{"type":"object","properties":{"name":{"type":"string"},"prefix":{"type":"string"},"scopes":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"null: full access (a legacy key)"}},"required":["name","prefix","scopes"],"additionalProperties":false}},"required":["tenant","key"],"additionalProperties":false},"Credits":{"type":"object","properties":{"tracked":{"type":"boolean","description":"false before credits start for the business"},"plan":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"included_credits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"year_start":{"type":["string","null"]},"year_end":{"type":["string","null"]},"overage_rule":{"type":"string"},"overage_cap":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","included_credits","year_start","year_end","overage_rule","overage_cap"],"additionalProperties":false},{"type":"null"}]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"left":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overage_used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overage_room":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"can_send":{"type":"boolean"}},"required":["tracked","plan","can_send"],"additionalProperties":false},"Template":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"default":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","name","title","kind","version","default","created_at"],"additionalProperties":false},"Preset":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"mode":{"type":"string","enum":["fixed","choose"]},"currency":{"type":"string"},"packages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"total_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Kept for compatibility: one-time plus yearly. Use totals, which also carries amounts billed every six months, quarterly, or weekly."},"monthly_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Kept for compatibility: the monthly amount. Use totals."},"totals":{"anyOf":[{"$ref":"#/components/schemas/BillingTotals"},{"type":"null"}],"description":"null while an item has no price"}},"required":["id","name","total_cents","monthly_cents","totals"],"additionalProperties":false}},"addons":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"unit_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","name","unit_cents"],"additionalProperties":false}},"unpriced":{"type":"array","items":{"type":"string"}},"archived":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","description","mode","currency","packages","addons","unpriced","archived","created_at","updated_at"],"additionalProperties":false},"BillingTotals":{"type":"array","items":{"type":"object","properties":{"billing":{"type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]},"cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["billing","cents"],"additionalProperties":false},"description":"Each billing frequency's own total, in order: one_time, yearly, semiannual, quarterly, monthly, weekly. Only frequencies with an amount are listed; with none, a single one_time total of 0."},"Campaign":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"template_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"batch_size":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"batch_every_minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"next_batch_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"held":{"type":"boolean","description":"Paused by EngageCycle support"},"counts":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Proposals by status"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","kind","status","template_id","batch_size","batch_every_minutes","next_batch_at","held","counts","created_at","updated_at"],"additionalProperties":false},"Offer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"availability":{"type":"string"},"url":{"type":"string"},"opens_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"closes_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"template_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"funnel":{"type":"object","properties":{"visits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"started":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"signed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"abandoned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["visits","started","verified","signed","abandoned"],"additionalProperties":false},"archived":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","slug","status","availability","url","opens_at","closes_at","template_id","funnel","archived","created_at","updated_at"],"additionalProperties":false},"Lead":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"offer_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","description":"started, verified, signed, abandoned, discarded, converted_existing, or, on an offer that holds requests for review, awaiting_review, declined_by_business, or review_expired"},"outcome":{"type":["string","null"]},"email":{"type":"string"},"name":{"type":["string","null"]},"phone":{"type":["string","null"]},"answers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Keyed by question id"},"utm":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}]},"marketing_consent":{"type":"boolean"},"client_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"proposal_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"verified_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"contacted_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"last_activity_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","offer_id","status","outcome","email","name","phone","answers","utm","marketing_consent","client_id","proposal_id","verified_at","contacted_at","last_activity_at","created_at"],"additionalProperties":false},"Client":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"external_id":{"type":["string","null"]},"display_name":{"type":"string"},"first_name":{"type":["string","null"]},"email":{"type":["string","null"]},"phone":{"type":["string","null"]},"type":{"type":"string","enum":["individual","business"],"description":"individual (a person, and every client nobody marked) or business (an entity)"},"contact_name":{"description":"A business's contact person, in full; null for an individual","type":["string","null"]},"contact_title":{"description":"The contact's title (Managing Member), prefilled when they sign; business only","type":["string","null"]},"representative":{"description":"Someone else signs for this individual client: everything is sent to them, nothing to the client. Absent when the client signs","type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":["string","null"]},"capacity":{"type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]}},"required":["name","email","phone","capacity"],"additionalProperties":false},"prior_price_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currency":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"is_new":{"type":"boolean"},"source":{"type":"string"},"archived":{"type":"boolean"},"archived_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"signing_rule":{"anyOf":[{"type":"string","enum":["all","any"]},{"type":"null"}],"description":"Who must sign this client's proposals by default (Multiple signers); null is all"},"has_open_proposal":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","external_id","display_name","first_name","email","phone","type","contact_name","contact_title","prior_price_cents","currency","fields","is_new","source","archived","archived_at","signing_rule","has_open_proposal","created_at","updated_at"],"additionalProperties":false},"CreatedClient":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"external_id":{"type":["string","null"]},"display_name":{"type":"string"},"first_name":{"type":["string","null"]},"email":{"type":["string","null"]},"phone":{"type":["string","null"]},"type":{"type":"string","enum":["individual","business"],"description":"individual (a person, and every client nobody marked) or business (an entity)"},"contact_name":{"description":"A business's contact person, in full; null for an individual","type":["string","null"]},"contact_title":{"description":"The contact's title (Managing Member), prefilled when they sign; business only","type":["string","null"]},"representative":{"description":"Someone else signs for this individual client: everything is sent to them, nothing to the client. Absent when the client signs","type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":["string","null"]},"capacity":{"type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]}},"required":["name","email","phone","capacity"],"additionalProperties":false},"prior_price_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currency":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"is_new":{"type":"boolean"},"source":{"type":"string"},"archived":{"type":"boolean"},"archived_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"signing_rule":{"anyOf":[{"type":"string","enum":["all","any"]},{"type":"null"}],"description":"Who must sign this client's proposals by default (Multiple signers); null is all"},"has_open_proposal":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"email_shared_with":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"description":"Other clients that already use this email, by id, oldest first; empty when none. One email can belong to several clients, such as a person and their business."}},"required":["id","external_id","display_name","first_name","email","phone","type","contact_name","contact_title","prior_price_cents","currency","fields","is_new","source","archived","archived_at","signing_rule","has_open_proposal","created_at","updated_at","email_shared_with"],"additionalProperties":false},"ClientPerson":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"client_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":["string","null"]},"title":{"description":"Their title at the business (Member, Partner); used only on a business client","type":["string","null"]},"relationship":{"type":"string","enum":["spouse","family","assistant","business_partner","other"]},"role":{"type":"string","enum":["copied","signer"]},"client_asked_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When someone confirmed the client asked to share with them"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","client_id","name","email","phone","title","relationship","role","client_asked_at","created_at","updated_at"],"additionalProperties":false},"ImportSummary":{"type":"object","properties":{"ok":{"type":"boolean"},"summary":{"type":"object","properties":{"received":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imported":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"updated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["received","imported","created","updated","rejected"],"additionalProperties":false},"errors":{"type":"array","items":{}}},"required":["ok","summary","errors"],"additionalProperties":{}},"CatalogItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"category":{"description":"null: no category","type":["string","null"]},"description":{"type":"string"},"includes":{"type":"array","items":{"type":"string"}},"unit_label":{"description":"null: no unit","type":["string","null"]},"unit_plural":{"description":"null: the unit plus s","type":["string","null"]},"unit_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"null: no price yet"},"price_set":{"type":"boolean"},"price":{"type":["string","null"]},"currency":{"type":"string"},"billing":{"type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]},"min_qty":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max_qty":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"billed_as_used":{"type":"boolean","description":"A rate per unit_label, with no quantity; never in a total"},"status":{"type":"string","enum":["active","archived"]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","category","description","includes","unit_label","unit_plural","unit_cents","price_set","price","currency","billing","min_qty","max_qty","billed_as_used","status","created_at","updated_at"],"additionalProperties":false},"Proposal":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["draft","sent","viewed","signed","declined","expired","revoked","superseded"]},"client_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"template_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaign_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"offer_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"packet_id":{"description":"The walkthrough it was sent in; present only when it's part of a walkthrough","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"build":{"description":"Drafts only","anyOf":[{"$ref":"#/components/schemas/PricedBuild"},{"type":"null"}]},"preview":{"description":"Drafts only","anyOf":[{"type":"object","properties":{"preview_sha256":{"type":"string"},"previewed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh_until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh":{"type":"boolean"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["preview_sha256","previewed_at","fresh_until","fresh","expires_at"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","version","status","client_id","template_id","campaign_id","offer_id","created_at","updated_at"],"additionalProperties":{}},"signature":{"anyOf":[{"type":"object","properties":{"signed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"typed_name":{"type":"string"},"signer_title":{"description":"Signed for a business client: the signer's title; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"},"total_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: one-time plus yearly. Use totals, which also carries amounts billed every six months, quarterly, or weekly."},"monthly_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: the monthly amount. Use totals."},"totals":{"description":"What the client agreed to pay: net of any discounts","$ref":"#/components/schemas/BillingTotals"},"currency":{"type":"string"},"discounts":{"description":"Discount lines that came off, each with its kind; present only when one did (as in the webhook events, /api/docs/webhooks)","type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"amount_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","label","amount_cents"],"additionalProperties":{}}},"listed_totals":{"description":"The totals before discounts; present only with discounts","$ref":"#/components/schemas/BillingTotals"},"pdf":{"type":"object","properties":{"url":{"type":["string","null"]},"sha256":{"type":["string","null"]},"ready":{"type":"boolean"}},"required":["url","sha256","ready"],"additionalProperties":false}},"required":["signed_at","typed_name","total_cents","monthly_cents","totals","currency","pdf"],"additionalProperties":{}},{"type":"null"}]}},"required":["proposal","signature"],"additionalProperties":false,"description":"A sent proposal carries the webhook's proposal block (/api/docs/webhooks) plus these ids and times; a draft carries its build and preview instead."},"PricedBuild":{"type":"object","properties":{"mode":{"type":"string","enum":["fixed","choose"]},"period":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"}},"required":["key","label"],"additionalProperties":false},"expiry_days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"type":"string"},"currency":{"type":"string"},"packages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"badge":{"type":["string","null"]},"description":{"type":"string"},"total_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Kept for compatibility: one-time plus yearly. Use totals, which also carries amounts billed every six months, quarterly, or weekly."},"monthly_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Kept for compatibility: the monthly amount. Use totals."},"totals":{"anyOf":[{"$ref":"#/components/schemas/BillingTotals"},{"type":"null"}],"description":"null while an item has no price"},"net_totals":{"description":"This package alone, net of the discount lines; present only with discounts","$ref":"#/components/schemas/BillingTotals"},"lines":{"type":"array","items":{"type":"object","properties":{"catalog_item_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"qty":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unit_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"amount_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"billing":{"type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]},"billed_as_used":{"type":"boolean","description":"A rate: unit_cents per unit_label, qty and amount 0, in no total"},"unit_label":{"type":"string"}},"required":["catalog_item_id","name","qty","unit_cents","amount_cents","billing","billed_as_used","unit_label"],"additionalProperties":false}}},"required":["id","name","badge","description","total_cents","monthly_cents","totals","lines"],"additionalProperties":false}},"addons":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"unit_cents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","name","unit_cents"],"additionalProperties":{}}},"discounts":{"description":"Discount lines, read-only over the API: fixed amounts taken off whatever the client chooses, each in one frequency. Absent when there are none.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"discount_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"null: a one-off typed in the builder"},"kind":{"type":"string","const":"per_client"},"label":{"type":"string"},"amount_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Positive: this much is taken off"},"billing":{"type":"string","enum":["one_time","yearly","semiannual","quarterly","monthly","weekly"]}},"required":["id","discount_id","kind","label","amount_cents","billing"],"additionalProperties":false}},"unpriced":{"type":"array","items":{"type":"string"},"description":"Items with no price yet; preview refuses while any"},"no_unit":{"type":"array","items":{"type":"string"},"description":"Rates billed as used with no unit yet; preview refuses while any"}},"required":["mode","period","expiry_days","note","currency","packages","addons","unpriced","no_unit"],"additionalProperties":false},"ProposalDetail":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["draft","sent","viewed","signed","declined","expired","revoked","superseded"]},"client_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"template_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaign_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"offer_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"packet_id":{"description":"The walkthrough it was sent in; present only when it's part of a walkthrough","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"build":{"description":"Drafts only","anyOf":[{"$ref":"#/components/schemas/PricedBuild"},{"type":"null"}]},"preview":{"description":"Drafts only","anyOf":[{"type":"object","properties":{"preview_sha256":{"type":"string"},"previewed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh_until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh":{"type":"boolean"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["preview_sha256","previewed_at","fresh_until","fresh","expires_at"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","version","status","client_id","template_id","campaign_id","offer_id","created_at","updated_at"],"additionalProperties":{}},"signature":{"anyOf":[{"type":"object","properties":{"signed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"typed_name":{"type":"string"},"signer_title":{"description":"Signed for a business client: the signer's title; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"},"total_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: one-time plus yearly. Use totals, which also carries amounts billed every six months, quarterly, or weekly."},"monthly_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: the monthly amount. Use totals."},"totals":{"description":"What the client agreed to pay: net of any discounts","$ref":"#/components/schemas/BillingTotals"},"currency":{"type":"string"},"discounts":{"description":"Discount lines that came off, each with its kind; present only when one did (as in the webhook events, /api/docs/webhooks)","type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"amount_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","label","amount_cents"],"additionalProperties":{}}},"listed_totals":{"description":"The totals before discounts; present only with discounts","$ref":"#/components/schemas/BillingTotals"},"pdf":{"type":"object","properties":{"url":{"type":["string","null"]},"sha256":{"type":["string","null"]},"ready":{"type":"boolean"}},"required":["url","sha256","ready"],"additionalProperties":false}},"required":["signed_at","typed_name","total_cents","monthly_cents","totals","currency","pdf"],"additionalProperties":{}},{"type":"null"}]},"copied_people":{"type":"array","items":{"$ref":"#/components/schemas/CopiedPerson"}},"signing":{"anyOf":[{"$ref":"#/components/schemas/Signing"},{"type":"null"}],"description":"Null with one signer, the client (people with role signer make more)"},"signers":{"type":"array","items":{"$ref":"#/components/schemas/Signer"},"description":"Every signer, the client included; empty with one"}},"required":["proposal","signature","copied_people","signing","signers"],"additionalProperties":false},"CopiedPerson":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"email":{"type":"string"},"relationship":{"type":"string","enum":["spouse","family","assistant","business_partner","other"]},"role":{"type":"string","enum":["copied","signer"]},"signed_copy":{"type":"boolean","description":"They get the signed copy"},"link_sent_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"When their view-only link was emailed; null if it wasn't"},"first_viewed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"last_viewed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"view_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"access_removed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"Staff removed their access; their link no longer works"}},"required":["id","name","email","relationship","role","signed_copy","link_sent_at","first_viewed_at","last_viewed_at","view_count","access_removed_at"],"additionalProperties":false},"Signing":{"type":"object","properties":{"rule":{"type":"string","enum":["all","any"],"description":"all: every signer signs; any: any one of them"},"order":{"anyOf":[{"type":"string","enum":["any","in_order"]},{"type":"null"}],"description":"With all: any order, or one after another by position"}},"required":["rule","order"],"additionalProperties":false},"Signer":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"client":{"type":"boolean","description":"The client themselves"},"state":{"anyOf":[{"type":"string","enum":["waiting","open","signed","declined","voided"]},{"type":"null"}],"description":"Null on a draft"},"signed_at":{"type":["string","null"]},"declined_at":{"type":["string","null"]},"title":{"description":"A business client's signer: their title, as staff entered it; absent otherwise","type":"string"},"signer_title":{"description":"Signed for a business client: the title they confirmed; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"}},"required":["name","email","position","client","state","signed_at","declined_at"],"additionalProperties":false},"CopyResent":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"email":{"type":"string"},"relationship":{"type":"string","enum":["spouse","family","assistant","business_partner","other"]},"role":{"type":"string","enum":["copied","signer"]},"signed_copy":{"type":"boolean","description":"They get the signed copy"},"link_sent_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"When their view-only link was emailed; null if it wasn't"},"first_viewed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"last_viewed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"view_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"access_removed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"Staff removed their access; their link no longer works"},"new_link":{"type":"boolean","description":"A new link was made (the earlier one stopped); false when their link was reused"}},"required":["id","name","email","relationship","role","signed_copy","link_sent_at","first_viewed_at","last_viewed_at","view_count","access_removed_at","new_link"],"additionalProperties":false},"Preview":{"type":"object","properties":{"preview_sha256":{"type":"string"},"previewed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh_until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh":{"type":"boolean"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"totals":{"$ref":"#/components/schemas/PricedBuild"},"document_url":{"type":"string","description":"The rendered document; needs your API key, like the PDF"}},"required":["preview_sha256","previewed_at","fresh_until","fresh","expires_at","totals","document_url"],"additionalProperties":false},"Sent":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["draft","sent","viewed","signed","declined","expired","revoked","superseded"]},"client_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"template_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaign_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"offer_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"packet_id":{"description":"The walkthrough it was sent in; present only when it's part of a walkthrough","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"build":{"description":"Drafts only","anyOf":[{"$ref":"#/components/schemas/PricedBuild"},{"type":"null"}]},"preview":{"description":"Drafts only","anyOf":[{"type":"object","properties":{"preview_sha256":{"type":"string"},"previewed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh_until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh":{"type":"boolean"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["preview_sha256","previewed_at","fresh_until","fresh","expires_at"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","version","status","client_id","template_id","campaign_id","offer_id","created_at","updated_at"],"additionalProperties":{}},"signature":{"anyOf":[{"type":"object","properties":{"signed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"typed_name":{"type":"string"},"signer_title":{"description":"Signed for a business client: the signer's title; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"},"total_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: one-time plus yearly. Use totals, which also carries amounts billed every six months, quarterly, or weekly."},"monthly_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: the monthly amount. Use totals."},"totals":{"description":"What the client agreed to pay: net of any discounts","$ref":"#/components/schemas/BillingTotals"},"currency":{"type":"string"},"discounts":{"description":"Discount lines that came off, each with its kind; present only when one did (as in the webhook events, /api/docs/webhooks)","type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"amount_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","label","amount_cents"],"additionalProperties":{}}},"listed_totals":{"description":"The totals before discounts; present only with discounts","$ref":"#/components/schemas/BillingTotals"},"pdf":{"type":"object","properties":{"url":{"type":["string","null"]},"sha256":{"type":["string","null"]},"ready":{"type":"boolean"}},"required":["url","sha256","ready"],"additionalProperties":false}},"required":["signed_at","typed_name","total_cents","monthly_cents","totals","currency","pdf"],"additionalProperties":{}},{"type":"null"}]},"emailed":{"type":"boolean"},"credits":{"anyOf":[{"type":"object","properties":{"left":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overage_used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overage_room":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["left","overage_used","overage_room"],"additionalProperties":false},{"type":"null"}],"description":"null before credits start for the business"}},"required":["proposal","signature","emailed","credits"],"additionalProperties":false},"Withdrawn":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["draft","sent","viewed","signed","declined","expired","revoked","superseded"]},"client_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"template_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaign_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"offer_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"packet_id":{"description":"The walkthrough it was sent in; present only when it's part of a walkthrough","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"build":{"description":"Drafts only","anyOf":[{"$ref":"#/components/schemas/PricedBuild"},{"type":"null"}]},"preview":{"description":"Drafts only","anyOf":[{"type":"object","properties":{"preview_sha256":{"type":"string"},"previewed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh_until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh":{"type":"boolean"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["preview_sha256","previewed_at","fresh_until","fresh","expires_at"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","version","status","client_id","template_id","campaign_id","offer_id","created_at","updated_at"],"additionalProperties":{}},"signature":{"anyOf":[{"type":"object","properties":{"signed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"typed_name":{"type":"string"},"signer_title":{"description":"Signed for a business client: the signer's title; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"},"total_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: one-time plus yearly. Use totals, which also carries amounts billed every six months, quarterly, or weekly."},"monthly_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: the monthly amount. Use totals."},"totals":{"description":"What the client agreed to pay: net of any discounts","$ref":"#/components/schemas/BillingTotals"},"currency":{"type":"string"},"discounts":{"description":"Discount lines that came off, each with its kind; present only when one did (as in the webhook events, /api/docs/webhooks)","type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"amount_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","label","amount_cents"],"additionalProperties":{}}},"listed_totals":{"description":"The totals before discounts; present only with discounts","$ref":"#/components/schemas/BillingTotals"},"pdf":{"type":"object","properties":{"url":{"type":["string","null"]},"sha256":{"type":["string","null"]},"ready":{"type":"boolean"}},"required":["url","sha256","ready"],"additionalProperties":false}},"required":["signed_at","typed_name","total_cents","monthly_cents","totals","currency","pdf"],"additionalProperties":{}},{"type":"null"}]},"client_emailed":{"type":"boolean"},"credits":{"anyOf":[{"type":"object","properties":{"left":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overage_used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overage_room":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["left","overage_used","overage_room"],"additionalProperties":false},{"type":"null"}],"description":"null before credits start for the business"}},"required":["proposal","signature","client_emailed","credits"],"additionalProperties":false},"Resent":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["draft","sent","viewed","signed","declined","expired","revoked","superseded"]},"client_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"template_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaign_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"offer_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"packet_id":{"description":"The walkthrough it was sent in; present only when it's part of a walkthrough","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"build":{"description":"Drafts only","anyOf":[{"$ref":"#/components/schemas/PricedBuild"},{"type":"null"}]},"preview":{"description":"Drafts only","anyOf":[{"type":"object","properties":{"preview_sha256":{"type":"string"},"previewed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh_until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh":{"type":"boolean"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["preview_sha256","previewed_at","fresh_until","fresh","expires_at"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","version","status","client_id","template_id","campaign_id","offer_id","created_at","updated_at"],"additionalProperties":{}},"signature":{"anyOf":[{"type":"object","properties":{"signed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"typed_name":{"type":"string"},"signer_title":{"description":"Signed for a business client: the signer's title; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"},"total_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: one-time plus yearly. Use totals, which also carries amounts billed every six months, quarterly, or weekly."},"monthly_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: the monthly amount. Use totals."},"totals":{"description":"What the client agreed to pay: net of any discounts","$ref":"#/components/schemas/BillingTotals"},"currency":{"type":"string"},"discounts":{"description":"Discount lines that came off, each with its kind; present only when one did (as in the webhook events, /api/docs/webhooks)","type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"amount_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","label","amount_cents"],"additionalProperties":{}}},"listed_totals":{"description":"The totals before discounts; present only with discounts","$ref":"#/components/schemas/BillingTotals"},"pdf":{"type":"object","properties":{"url":{"type":["string","null"]},"sha256":{"type":["string","null"]},"ready":{"type":"boolean"}},"required":["url","sha256","ready"],"additionalProperties":false}},"required":["signed_at","typed_name","total_cents","monthly_cents","totals","currency","pdf"],"additionalProperties":{}},{"type":"null"}]},"emailed":{"type":"boolean","description":"false when the business has no email sender: proposal.sent tells its automation"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["proposal","signature","emailed","expires_at"],"additionalProperties":false},"Extended":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["draft","sent","viewed","signed","declined","expired","revoked","superseded"]},"client_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"template_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaign_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"offer_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"packet_id":{"description":"The walkthrough it was sent in; present only when it's part of a walkthrough","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"build":{"description":"Drafts only","anyOf":[{"$ref":"#/components/schemas/PricedBuild"},{"type":"null"}]},"preview":{"description":"Drafts only","anyOf":[{"type":"object","properties":{"preview_sha256":{"type":"string"},"previewed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh_until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh":{"type":"boolean"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["preview_sha256","previewed_at","fresh_until","fresh","expires_at"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","version","status","client_id","template_id","campaign_id","offer_id","created_at","updated_at"],"additionalProperties":{}},"signature":{"anyOf":[{"type":"object","properties":{"signed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"typed_name":{"type":"string"},"signer_title":{"description":"Signed for a business client: the signer's title; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"},"total_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: one-time plus yearly. Use totals, which also carries amounts billed every six months, quarterly, or weekly."},"monthly_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: the monthly amount. Use totals."},"totals":{"description":"What the client agreed to pay: net of any discounts","$ref":"#/components/schemas/BillingTotals"},"currency":{"type":"string"},"discounts":{"description":"Discount lines that came off, each with its kind; present only when one did (as in the webhook events, /api/docs/webhooks)","type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"amount_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","label","amount_cents"],"additionalProperties":{}}},"listed_totals":{"description":"The totals before discounts; present only with discounts","$ref":"#/components/schemas/BillingTotals"},"pdf":{"type":"object","properties":{"url":{"type":["string","null"]},"sha256":{"type":["string","null"]},"ready":{"type":"boolean"}},"required":["url","sha256","ready"],"additionalProperties":false}},"required":["signed_at","typed_name","total_cents","monthly_cents","totals","currency","pdf"],"additionalProperties":{}},{"type":"null"}]},"reopened":{"type":"boolean","description":"true when it had expired and extending it reopened it"},"emailed":{"type":"boolean","description":"true when an email with the new date was queued (or held while email is paused); false when notify_client was false or there's no email sender"}},"required":["proposal","signature","reopened","emailed"],"additionalProperties":false,"description":"The proposal as it is now: its proposal block's expires_at is the new deadline and original_expires_at the respond-by date the document printed."},"Revision":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["draft","sent","viewed","signed","declined","expired","revoked","superseded"]},"client_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"template_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaign_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"offer_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"packet_id":{"description":"The walkthrough it was sent in; present only when it's part of a walkthrough","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"build":{"description":"Drafts only","anyOf":[{"$ref":"#/components/schemas/PricedBuild"},{"type":"null"}]},"preview":{"description":"Drafts only","anyOf":[{"type":"object","properties":{"preview_sha256":{"type":"string"},"previewed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh_until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"fresh":{"type":"boolean"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["preview_sha256","previewed_at","fresh_until","fresh","expires_at"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","version","status","client_id","template_id","campaign_id","offer_id","created_at","updated_at"],"additionalProperties":{}},"signature":{"anyOf":[{"type":"object","properties":{"signed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"typed_name":{"type":"string"},"signer_title":{"description":"Signed for a business client: the signer's title; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"},"total_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: one-time plus yearly. Use totals, which also carries amounts billed every six months, quarterly, or weekly."},"monthly_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kept for compatibility: the monthly amount. Use totals."},"totals":{"description":"What the client agreed to pay: net of any discounts","$ref":"#/components/schemas/BillingTotals"},"currency":{"type":"string"},"discounts":{"description":"Discount lines that came off, each with its kind; present only when one did (as in the webhook events, /api/docs/webhooks)","type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"amount_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","label","amount_cents"],"additionalProperties":{}}},"listed_totals":{"description":"The totals before discounts; present only with discounts","$ref":"#/components/schemas/BillingTotals"},"pdf":{"type":"object","properties":{"url":{"type":["string","null"]},"sha256":{"type":["string","null"]},"ready":{"type":"boolean"}},"required":["url","sha256","ready"],"additionalProperties":false}},"required":["signed_at","typed_name","total_cents","monthly_cents","totals","currency","pdf"],"additionalProperties":{}},{"type":"null"}]},"template_changed":{"type":"boolean"}},"required":["proposal","signature","template_changed"],"additionalProperties":false},"SigningLink":{"type":"object","properties":{"url":{"type":"string"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["url","expires_at"],"additionalProperties":false},"Document":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["agreement","consent"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["draft","sent","viewed","signed","declined","expired","revoked","superseded"]},"template":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"client":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"external_id":{"type":["string","null"]},"display_name":{"type":"string"}},"required":["id","external_id","display_name"],"additionalProperties":false},"campaign_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"packet_id":{"description":"The walkthrough it was sent in; present only when it's part of a walkthrough","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"supersedes_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sent_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"When it ends: the deadline after any extension"},"original_expires_at":{"description":"The respond-by date the document shows; present only once the deadline was extended","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"signers":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"client":{"type":"boolean","description":"The client themselves"},"name":{"type":"string"},"state":{"type":"string","enum":["waiting","open","signed","declined","voided"]},"signed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"declined_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"signer_title":{"description":"Signed for a business client: the title they confirmed; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"}},"required":["position","client","name","state","signed_at","declined_at"],"additionalProperties":false},"description":"Every signer, the client included; empty with one. Never an email or a link."},"signature":{"anyOf":[{"type":"object","properties":{"signed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"typed_name":{"type":"string"},"signer_title":{"description":"Signed for a business client: the signer's title; absent otherwise","type":"string"},"signer_capacity":{"description":"Signed by a represented client's representative: how they signed for the client; absent otherwise","type":"string","enum":["power_of_attorney","guardian","executor","personal_representative"]},"on_behalf_of":{"description":"Signed for a business client, or by a represented client's representative: who for; absent otherwise","type":"string"},"signing_method":{"type":"string"},"consents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","title","version"],"additionalProperties":false},"description":"The business's consent documents agreed to on it"}},"required":["signed_at","typed_name","signing_method","consents"],"additionalProperties":false},{"type":"null"}],"description":"When it's signed"},"pdf_ready":{"type":"boolean"}},"required":["id","kind","version","status","template","client","campaign_id","supersedes_id","sent_at","expires_at","resolved_at","created_at","updated_at","signers","signature","pdf_ready"],"additionalProperties":false,"description":"An agreement or a consent sent on its own. It has no price."},"Event":{"type":"object","properties":{"id":{"type":"string","description":"evt_ followed by 32 hex characters, as in the webhook"},"type":{"type":"string"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"tenant":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"}},"required":["id","slug"],"additionalProperties":false},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The webhook payload. signing_url and resume_url are null (with redacted: true) unless the key has proposals:links."},"delivery":{"type":"string","enum":["delivered","due","failed","off"]}},"required":["id","type","created_at","tenant","data","delivery"],"additionalProperties":false}}}}