{"openapi":"3.1.0","info":{"title":"Clerra API","version":"1","description":"Read a firm's clients, filing deadlines, invoices, jobs and pipeline; add leads; follow activity by polling /events or with webhooks. Every key belongs to one firm and sees only that firm. Available on paid plans; the firm can switch it off at any time. Full guide: https://clerra.ca/developers","contact":{"name":"Clerra","url":"https://clerra.ca/developers"}},"servers":[{"url":"https://app.clerra.ca/api/v1"}],"security":[{"apiKey":[]},{"oauth2":[]}],"paths":{"/me":{"get":{"operationId":"getMe","summary":"Check a key","description":"Which firm the key belongs to and what it can do. Works with any scope — use it to test a connection.\n\nAny scope.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Me"}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/clients":{"get":{"operationId":"getClients","summary":"List clients","description":"Every client, oldest first.\n\nScope: `clients:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"1–100, default 50.","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"The id of the last record you received; continues after it.","schema":{"type":"string"}},{"name":"updated_since","in":"query","required":false,"description":"Only records changed at or after this ISO 8601 time — for syncing.","schema":{"type":"string"}},{"name":"search","in":"query","required":false,"description":"Part of the name, legal name or email (2+ letters or numbers).","schema":{"type":"string"}},{"name":"email","in":"query","required":false,"description":"Exact email (not case-sensitive).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Client"}},"next_cursor":{"type":["string","null"]}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/clients/{id}":{"get":{"operationId":"getClientsById","summary":"Get a client","description":"One client by id.\n\nScope: `clients:read`.","parameters":[{"name":"id","in":"path","required":true,"description":"Client id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Client"}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/filings":{"get":{"operationId":"getFilings","summary":"List filings","description":"Every filing deadline across the firm's clients.\n\nScope: `filings:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"1–100, default 50.","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"The id of the last record you received; continues after it.","schema":{"type":"string"}},{"name":"updated_since","in":"query","required":false,"description":"Only records changed at or after this ISO 8601 time — for syncing.","schema":{"type":"string"}},{"name":"client_id","in":"query","required":false,"description":"Only this client's.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"upcoming, in_progress, waiting_on_client, filed, skipped.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Filing"}},"next_cursor":{"type":["string","null"]}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/invoices":{"get":{"operationId":"getInvoices","summary":"List invoices","description":"Invoices with totals and what's still owing.\n\nScope: `invoices:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"1–100, default 50.","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"The id of the last record you received; continues after it.","schema":{"type":"string"}},{"name":"updated_since","in":"query","required":false,"description":"Only records changed at or after this ISO 8601 time — for syncing.","schema":{"type":"string"}},{"name":"client_id","in":"query","required":false,"description":"Only this client's.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Invoice"}},"next_cursor":{"type":["string","null"]}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/jobs":{"get":{"operationId":"getJobs","summary":"List jobs","description":"Client jobs (not internal, firm-only work).\n\nScope: `jobs:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"1–100, default 50.","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"The id of the last record you received; continues after it.","schema":{"type":"string"}},{"name":"updated_since","in":"query","required":false,"description":"Only records changed at or after this ISO 8601 time — for syncing.","schema":{"type":"string"}},{"name":"client_id","in":"query","required":false,"description":"Only this client's.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Job"}},"next_cursor":{"type":["string","null"]}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/leads":{"get":{"operationId":"getLeads","summary":"List leads","description":"The sales pipeline.\n\nScope: `leads:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"1–100, default 50.","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"The id of the last record you received; continues after it.","schema":{"type":"string"}},{"name":"updated_since","in":"query","required":false,"description":"Only records changed at or after this ISO 8601 time — for syncing.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Lead"}},"next_cursor":{"type":["string","null"]}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postLeads","summary":"Create a lead","description":"Adds a prospect to the pipeline (source “API” unless you give one). Unknown fields are rejected, not ignored.\n\nScope: `leads:write`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Business or person. Required."},"contact_name":{"type":["string","null"],"description":"Who to talk to."},"email":{"type":["string","null"],"format":"email","description":"Email."},"phone":{"type":["string","null"],"description":"Phone."},"website":{"type":["string","null"],"description":"Website."},"entity_type":{"type":["string","null"],"description":"Kind of taxpayer."},"stage":{"type":["string","null"],"enum":["new","contacted","meeting","proposal","won","lost",null],"description":"Pipeline stage (default new)."},"source":{"type":["string","null"],"description":"Where it came from."},"estimated_value":{"type":["number","null"],"description":"Expected yearly fees, in dollars."},"notes":{"type":["string","null"],"description":"Notes."}},"required":["name"]},"example":{"name":"Northwind Bakery Ltd.","contact_name":"Amira Haddad","email":"amira@northwind.example","stage":"new","source":"Website form"}}}},"responses":{"201":{"description":"201 Created.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Lead"}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/events":{"get":{"operationId":"getEvents","summary":"List events","description":"What happened, oldest first — poll with ?after. Only kinds of record the key can read (a key with Read invoices sees invoice.* and payment.*).\n\nScope: `events:read`.","parameters":[{"name":"after","in":"query","required":false,"description":"The id of the last event you received.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1–100, default 50.","schema":{"type":"integer"}},{"name":"type","in":"query","required":false,"description":"Comma-separated event types, e.g. filing.filed,invoice.paid.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"asc (default) or desc for the newest first (no paging).","schema":{"type":"string"}},{"name":"include","in":"query","required":false,"description":"record — add each event's record as it is now.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"next_cursor":{"type":["string","null"]}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/hooks":{"get":{"operationId":"getHooks","summary":"List hooks","description":"The hooks this key made.\n\nScope: `webhooks:manage`.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Hook"}}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postHooks","summary":"Create a hook","description":"Subscribe an https URL to event types the key can read. The response includes the signing secret — shown this once.\n\nScope: `webhooks:manage`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"https URL on a public host. Required."},"events":{"type":"array","items":{"type":"string"},"description":"Event types. Required."},"description":{"type":["string","null"],"description":"Note."}},"required":["url","events"]},"example":{"url":"https://hooks.example.com/clerra","events":["filing.filed","invoice.paid"],"description":"Our CRM"}}}},"responses":{"201":{"description":"201 Created, with secret.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Hook"}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/hooks/{id}":{"delete":{"operationId":"deleteHooksById","summary":"Delete a hook","description":"Stop sending to a hook this key made.\n\nScope: `webhooks:manage`.","parameters":[{"name":"id","in":"path","required":true,"description":"Hook id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"deleted":{"type":"boolean"}}}}}}}},"4XX":{"description":"See error codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{"client.created":{"post":{"summary":"A client is added","description":"Signed with the Clerra-Signature header. data keys: source, status, entity_type.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"client.status_changed":{"post":{"summary":"A client's status changes","description":"Signed with the Clerra-Signature header. data keys: from, to.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"filing.status_changed":{"post":{"summary":"A filing's status changes","description":"Signed with the Clerra-Signature header. data keys: from, to, rule_code, due_date.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"filing.filed":{"post":{"summary":"A filing is marked filed","description":"Signed with the Clerra-Signature header. data keys: rule_code, due_date, filed_source.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"filing.overdue":{"post":{"summary":"A filing becomes overdue","description":"Signed with the Clerra-Signature header. data keys: rule_code, due_date.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"invoice.created":{"post":{"summary":"An invoice is created","description":"Signed with the Clerra-Signature header. data keys: source, status, total_cents.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"invoice.sent":{"post":{"summary":"An invoice is sent","description":"Signed with the Clerra-Signature header. data keys: total_cents, due_date.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"invoice.paid":{"post":{"summary":"An invoice is paid in full","description":"Signed with the Clerra-Signature header. data keys: total_cents, source.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"payment.received":{"post":{"summary":"A payment is received","description":"Signed with the Clerra-Signature header. data keys: amount_cents, source, paid_in_full, paid_on.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"invoice.overdue":{"post":{"summary":"An invoice becomes overdue","description":"Signed with the Clerra-Signature header. data keys: due_date, balance_cents.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"invoice.payment_failed":{"post":{"summary":"A card payment fails","description":"Signed with the Clerra-Signature header. data keys: none.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"job.created":{"post":{"summary":"A job is created","description":"Signed with the Clerra-Signature header. data keys: source, template_id, obligation_id.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"job.status_changed":{"post":{"summary":"A job's status changes","description":"Signed with the Clerra-Signature header. data keys: from, to.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"job.step_completed":{"post":{"summary":"A job step is completed","description":"Signed with the Clerra-Signature header. data keys: job_id, auto.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"lead.created":{"post":{"summary":"A lead is added","description":"Signed with the Clerra-Signature header. data keys: source, stage.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}},"lead.stage_changed":{"post":{"summary":"A lead moves stage","description":"Signed with the Clerra-Signature header. data keys: from, to.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Any 2xx acknowledges it; anything else is retried."}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"An API key from Settings → API: Authorization: Bearer clerra_…"},"oauth2":{"type":"oauth2","description":"For apps many firms connect. Authorization code with PKCE (S256); refresh tokens rotate. Apps are registered by Clerra.","flows":{"authorizationCode":{"authorizationUrl":"https://app.clerra.ca/oauth/authorize","tokenUrl":"https://app.clerra.ca/oauth/token","refreshUrl":"https://app.clerra.ca/oauth/token","scopes":{"clients:read":"Client names, contact details, entity type, province and status.","filings:read":"Every client's filing deadlines and their status.","invoices:read":"Invoices, totals and what's still owing (no payment links).","jobs:read":"Jobs, their status, due dates and who's assigned.","leads:read":"The sales pipeline.","leads:write":"Create new leads in the sales pipeline.","events:read":"What happened, as it happens — limited to the kinds of record the key can read.","webhooks:manage":"Subscribe a URL (like a Zapier trigger) to activity as it happens — only kinds of record it can read."}}}}},"schemas":{"Client":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique, never reused."},"name":{"type":"string","description":"Display name."},"legal_name":{"type":["string","null"],"description":"Legal name, when it differs."},"entity_type":{"type":"string","enum":["individual","corporation","cooperative","partnership","limited_partnership","trust","non_profit","charity","custom"],"description":"What kind of taxpayer — it decides which CRA deadlines apply. “custom” is a firm-defined type that generates no deadlines."},"status":{"type":"string","description":"Where the client stands with the firm."},"province":{"type":["string","null"],"description":"Two-letter province or territory code."},"email":{"type":["string","null"],"format":"email","description":"Main email."},"phone":{"type":["string","null"],"description":"Main phone."},"client_code":{"type":["string","null"],"description":"The firm's own reference."},"fiscal_year_end":{"type":["object","null"],"description":"{ month, day } — for businesses and trusts."},"office_id":{"type":["string","null"],"format":"uuid","description":"The office the client belongs to."},"account_manager_id":{"type":["string","null"],"format":"uuid","description":"The staff member who owns the relationship."},"needs_details":{"type":"boolean","description":"True when Clerra can't yet work out the client's deadlines (a detail is missing) — it never guesses."},"created_at":{"type":"string","format":"date-time","description":"When the client was added."},"updated_at":{"type":"string","format":"date-time","description":"Last change."}},"description":"A person or business the firm works for."},"Filing":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique, never reused."},"client_id":{"type":"string","format":"uuid","description":"The client it's for."},"name":{"type":"string","description":"What's due, e.g. “T1 return”."},"rule_code":{"type":["string","null"],"description":"The rule that produced it."},"category":{"type":["string","null"],"enum":["income_tax","gst_hst","payroll","payroll_run","information_returns","provincial","registry",null],"description":"Family of deadline."},"period_start":{"type":["string","null"],"format":"date","description":"Start of the period it covers."},"period_end":{"type":["string","null"],"format":"date","description":"End of the period it covers."},"due_date":{"type":"string","format":"date","description":"When it's due."},"status":{"type":"string","enum":["upcoming","in_progress","waiting_on_client","filed","skipped"],"description":"Progress."},"filed_at":{"type":["string","null"],"format":"date-time","description":"When it was marked filed."},"created_at":{"type":"string","format":"date-time","description":"When it was created."},"updated_at":{"type":"string","format":"date-time","description":"Last change."}},"description":"One deadline for one client — a return, remittance or slip — computed from CRA and provincial rules."},"Invoice":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique, never reused."},"client_id":{"type":"string","format":"uuid","description":"The client billed."},"number":{"type":"string","description":"Invoice number."},"status":{"type":"string","description":"draft, sent, paid, void and so on."},"issue_date":{"type":["string","null"],"format":"date","description":"Issue date."},"due_date":{"type":["string","null"],"format":"date","description":"Due date."},"currency":{"type":"string","description":"ISO currency code."},"subtotal_cents":{"type":"integer","description":"Before tax, in cents."},"tax_cents":{"type":"integer","description":"All sales tax (GST/HST/PST/QST), in cents."},"total_cents":{"type":"integer","description":"Total, in cents."},"credited_cents":{"type":"integer","description":"Credit notes applied, in cents."},"paid_cents":{"type":"integer","description":"Paid so far, in cents."},"balance_cents":{"type":"integer","description":"Still owing (0 for a void invoice), in cents."},"paid_on":{"type":["string","null"],"format":"date","description":"When it was paid in full."},"created_at":{"type":"string","format":"date-time","description":"When it was created."},"updated_at":{"type":"string","format":"date-time","description":"Last change."}},"description":"A bill to a client. Amounts are integers in cents; no payment links are exposed."},"Job":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique, never reused."},"client_id":{"type":"string","format":"uuid","description":"The client it's for."},"name":{"type":"string","description":"Job name."},"period":{"type":["string","null"],"description":"Period label, e.g. “2025”."},"status":{"type":"string","description":"Progress."},"due_date":{"type":["string","null"],"format":"date","description":"Due date."},"assigned_to":{"type":["string","null"],"format":"uuid","description":"Staff member doing it."},"reviewer_id":{"type":["string","null"],"format":"uuid","description":"Staff member reviewing it."},"template_id":{"type":["string","null"],"format":"uuid","description":"Template it came from."},"completed_at":{"type":["string","null"],"format":"date-time","description":"When it was finished."},"created_at":{"type":"string","format":"date-time","description":"When it was created."},"updated_at":{"type":"string","format":"date-time","description":"Last change."}},"description":"A piece of work for a client — a T1, a year-end, a bookkeeping month."},"Lead":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique, never reused."},"name":{"type":"string","description":"Business or person."},"contact_name":{"type":["string","null"],"description":"Who to talk to."},"email":{"type":["string","null"],"format":"email","description":"Email."},"phone":{"type":["string","null"],"description":"Phone."},"entity_type":{"type":["string","null"],"description":"Kind of taxpayer, if known."},"stage":{"type":"string","enum":["new","contacted","meeting","proposal","won","lost"],"description":"Pipeline stage."},"source":{"type":["string","null"],"description":"Where it came from (“API” when created through it)."},"estimated_value":{"type":["number","null"],"description":"Expected yearly fees, in dollars."},"expected_close":{"type":["string","null"],"format":"date","description":"When the firm expects to win it."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Staff member who owns it."},"website":{"type":["string","null"],"description":"Website."},"converted_client_id":{"type":["string","null"],"format":"uuid","description":"The client it became, once won."},"created_at":{"type":"string","format":"date-time","description":"When it was added."},"updated_at":{"type":"string","format":"date-time","description":"Last change."}},"description":"A prospect in the firm's sales pipeline."},"Event":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique, never reused."},"object":{"type":"string","description":"Always “event”."},"api_version":{"type":"string","description":"The envelope version (a date)."},"type":{"type":"string","description":"What happened, e.g. filing.filed."},"occurred_at":{"type":"string","format":"date-time","description":"When."},"firm_id":{"type":"string","format":"uuid","description":"The firm."},"client_id":{"type":["string","null"],"format":"uuid","description":"The client it's about, if any."},"subject_type":{"type":["string","null"],"description":"Kind of record: client, filing, invoice, job, step, lead."},"subject_id":{"type":["string","null"],"format":"uuid","description":"That record's id."},"data":{"type":"object","description":"Ids, statuses, amounts and dates about the change — never names or messages."},"record":{"type":["object","null"],"description":"The record as it is now (as the API returns it). In webhooks always; in GET /events with ?include=record. Null if it's gone."}},"description":"Something that happened — the same shape in GET /events and in every webhook."},"Hook":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique, never reused."},"url":{"type":"string","format":"uri","description":"Where Clerra POSTs."},"description":{"type":["string","null"],"description":"Note."},"events":{"type":"array","items":{"type":"string"},"description":"Event types it receives."},"enabled":{"type":"boolean","description":"False once switched off (by the firm, a 410 from the receiver, or 20 failures in a row)."},"disabled_reason":{"type":["string","null"],"description":"Why it was switched off."},"created_at":{"type":"string","format":"date-time","description":"When it was made."}},"description":"A URL subscribed (through the API) to kinds of event."},"Me":{"type":"object","properties":{"firm":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":["string","null"]}}},"key":{"type":"object","properties":{"name":{"type":["string","null"]},"scopes":{"type":"array","items":{"type":"string"}},"expires_at":{"type":["string","null"],"format":"date-time"}}}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}}}}}}