MCPサーバー

commsharbor

com.commsharbor/commsharbor

このMCPでできること

Manages permission-based email audiences, contacts, campaigns, transactional sends, billing, consent, and tenant audit trails.

commsharbor_audience_create
Commsharbor audience create
Create an audience or saved segment. Only allowlisted filter fields are accepted — a saved segment cannot be turned into an arbitrary query over the CRM.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'name', 'kind'], 'properties': {'kind': {'enum': ['static', 'saved_segment'], 'type': 'string', 'description': 'static or saved_segment'}, 'name': {'type': 'string', 'description': 'Audience name'}, 'filter': {'type': 'object', 'description': 'The saved filter, for `saved_segment`. Allowlisted fields only.'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_audience_delete
Commsharbor audience delete
Delete an audience and its memberships. Contacts themselves are untouched.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'audience_id'], 'properties': {'audience_id': {'type': 'string', 'description': 'Audience ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_audience_get
Commsharbor audience get
Read one audience of this organization.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'audience_id'], 'properties': {'audience_id': {'type': 'string', 'description': 'Audience ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_audience_member_add
Commsharbor audience member add
Add a CRM contact to a static audience. Only for `static` audiences: a saved segment's membership comes from its filter, not from this route.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'audience_id', 'contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'CRM contact ID'}, 'audience_id': {'type': 'string', 'description': 'Audience ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_audience_member_remove
Commsharbor audience member remove
Remove a contact from a static audience.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'audience_id', 'contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'CRM contact ID'}, 'audience_id': {'type': 'string', 'description': 'Audience ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_audience_members
Commsharbor audience members
List the contacts currently in one audience.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'audience_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Page size, maximum 100'}, 'cursor': {'type': 'string', 'description': 'Opaque pagination cursor'}, 'audience_id': {'type': 'string', 'description': 'Audience ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_audiences
Commsharbor audiences
List static audiences and saved segments.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Page size, maximum 100'}, 'cursor': {'type': 'string', 'description': 'Opaque pagination cursor'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_audience_update
Commsharbor audience update
Rename an audience or change its saved filter.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'audience_id'], 'properties': {'name': {'type': 'string', 'description': 'Audience name'}, 'filter': {'type': 'object', 'description': 'New saved filter. Allowlisted fields only.'}, 'audience_id': {'type': 'string', 'description': 'Audience ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_audit
Commsharbor audit
List tenant audit events. Audit records are never rewritten and never carry recipient PII.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'cursor': {'type': 'string', 'description': 'Opaque cursor'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_billing
Commsharbor billing
Read the organization's plan, limits and global entitlements. Read this before a bulk send: `state.active` says whether sending is allowed and `warning` says when the plan runs out. A new organization's trial starts with its first domain or send (`state.started`).
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_billing_catalog
Commsharbor billing catalog
Read plans, prices and x402 network. Public and unauthenticated: an agent should be able to learn what things cost before deciding whether to sign up at all.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
commsharbor_billing_purchase
Commsharbor billing purchase
Buy a pass or top-up through the house's payment door (credit or x402); 409 while live checkout is off. While `catalog.checkout_live` is false this answers **409 `checkout_disabled`** — nobody is charged by accident; the local dev stack completes it with the house's simulated payment. Otherwise, without payment it answers the standard **402 with `accepts[]`** and both doors (a `cred_…` credit token, or `X-PAYMENT`). What it buys is a global entitlement: a pass runs 30 days (stacked after the current one), a top-up 365 days and needs an active pass. The same payment never grants twice, and the Idempotency-Key makes a credit retry safe.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'action', 'idempotency_key'], 'properties': {'action': {'enum': ['pass', 'topup'], 'type': 'string', 'description': 'Which purchase to request.'}, 'idempotency_key': {'type': 'string', 'description': 'Stable logical purchase key'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_campaign_create
Commsharbor campaign create
Create a campaign draft. All three must already exist and be usable: a draft cannot be created against an unverified domain or an unpublished template.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'name', 'domain_id', 'audience_id', 'template_id'], 'properties': {'name': {'type': 'string', 'description': 'Campaign name'}, 'domain_id': {'type': 'string', 'description': 'Active sending domain ID'}, 'audience_id': {'type': 'string', 'description': 'Audience ID'}, 'template_id': {'type': 'string', 'description': 'Published marketing template ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}, 'template_version': {'type': 'integer', 'minimum': 1, 'description': 'Published version to freeze into the campaign.'}}, 'additionalProperties': False}
commsharbor_campaign_get
Commsharbor campaign get
Read one campaign, without any recipient data.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'description': 'Campaign ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_campaign_launch
Commsharbor campaign launch
Freeze and launch or schedule a campaign idempotently. The freeze happens once and never again: consent, suppressions and audience membership are evaluated at this moment, and the resulting set is what gets sent. Replaying the same Idempotency-Key returns the same campaign and produces no second dispatch.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'campaign_id', 'idempotency_key'], 'properties': {'campaign_id': {'type': 'string', 'description': 'Campaign ID'}, 'scheduled_for': {'type': 'string', 'description': 'Optional ISO-8601 instant with offset'}, 'idempotency_key': {'type': 'string', 'description': 'Stable launch key'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_campaign_report
Commsharbor campaign report
Reconcile campaign deliveries and feedback. Counts only. Which specific person opened what is not something this API answers.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'description': 'Campaign ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_campaigns
Commsharbor campaigns
List the campaigns of the organization.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_campaign_update
Commsharbor campaign update
Edit, pause, resume or cancel a campaign. Content can only change while the campaign is a draft. After launch this route moves state — the frozen recipient set and the frozen template version do not change.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'campaign_id'], 'properties': {'name': {'type': 'string', 'description': 'Campaign name'}, 'status': {'enum': ['paused', 'sending', 'cancelled'], 'type': 'string', 'description': 'paused, running or canceled'}, 'domain_id': {'type': 'string', 'description': 'Active sending domain ID'}, 'audience_id': {'type': 'string', 'description': 'Audience ID'}, 'campaign_id': {'type': 'string', 'description': 'Campaign ID'}, 'template_id': {'type': 'string', 'description': 'Published marketing template ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}, 'template_version': {'type': 'integer', 'minimum': 1, 'description': 'Published version to freeze into the campaign.'}}, 'additionalProperties': False}
commsharbor_contact_file_get
Commsharbor contact file get
Download a tenant CSV before expiry. Files expire seven days after creation. Durable audit and row-level results survive the file.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'file_id'], 'properties': {'file_id': {'type': 'string', 'description': 'Contact file ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_contact_import_confirm
Commsharbor contact import confirm
Confirm an import with a mandatory idempotency key. The idempotency key is mandatory here. Reusing it returns the same import and never creates a second Queue message — which is what keeps a retry from importing everyone twice.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'import_id', 'idempotency_key'], 'properties': {'import_id': {'type': 'string', 'description': 'Contact import ID'}, 'idempotency_key': {'type': 'string', 'description': 'Unique confirmation key'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_contact_import_errors
Commsharbor contact import errors
List the row-numbered errors of one import, so the source file can be fixed.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'import_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Page size, maximum 100'}, 'cursor': {'type': 'string', 'description': 'Opaque pagination cursor'}, 'import_id': {'type': 'string', 'description': 'Contact import ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_contact_import_get
Commsharbor contact import get
Read one durable contact import and its current counts.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'import_id'], 'properties': {'import_id': {'type': 'string', 'description': 'Contact import ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_contact_import_preview
Commsharbor contact import preview
Upload and preview a consent-declared CSV. Nothing is created by this call. The consent declaration is mandatory: an import that cannot say why these people may be emailed is an import that does not happen.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'csv', 'mapping', 'basis', 'source', 'captured_at'], 'properties': {'csv': {'type': 'string', 'description': 'CSV, maximum 5 MB and 10,000 rows'}, 'basis': {'enum': ['explicit', 'documented_relationship'], 'type': 'string', 'description': 'Consent basis'}, 'source': {'type': 'string', 'description': 'Consent source'}, 'mapping': {'type': 'object', 'description': 'Which CSV column feeds which contact field, e.g. `{ "email": "Email" }`.'}, 'captured_at': {'type': 'string', 'description': 'ISO-8601 capture time'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_contact_imports
Commsharbor contact imports
List the contact imports of the organization.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Page size, maximum 100'}, 'cursor': {'type': 'string', 'description': 'Opaque pagination cursor'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_contact_marketing_get
Commsharbor contact marketing get
Read consent and preference for a CRM contact. Being in the CRM is not permission to email. This resource is where permission actually lives.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'CRM contact ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_contact_marketing_put
Commsharbor contact marketing put
Record permission-based marketing consent. This NEVER restores a previous unsubscribe. If the contact opted out, they stay out and `marketing_enabled` remains false — recording consent after the fact does not undo their decision.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'contact_id', 'basis', 'source', 'captured_at'], 'properties': {'basis': {'enum': ['explicit', 'documented_relationship'], 'type': 'string', 'description': 'explicit or documented_relationship'}, 'source': {'type': 'string', 'description': 'Consent source'}, 'contact_id': {'type': 'string', 'description': 'CRM contact ID'}, 'captured_at': {'type': 'string', 'description': 'ISO-8601 capture time'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_contacts_export
Commsharbor contacts export
Create a CSV export of the organization's contacts, retained for seven days.
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_context
Commsharbor context
Resolve the active organization identity. Read this before a write when you are not certain which tenant is active. Guessing is how data lands in the wrong organization. An organization API key answers `kind: api_key` with its scopes.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
commsharbor_crm_activities_create
Commsharbor crm activities create
Creates a activity in the tenant CRM. Required: note. Needs crm:write on the organization. Returns the created resource with its absolute url.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'note'], 'properties': {'note': {'type': 'string', 'description': 'note'}, 'deal_id': {'type': 'string', 'description': 'deal id'}, 'activity_type': {'type': 'string', 'description': 'activity type'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_activities_delete
Commsharbor crm activities delete
Deletes one activity from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'activity_id'], 'properties': {'activity_id': {'type': 'string', 'description': 'activity_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_activities_get
Commsharbor crm activities get
Reads one activity from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'activity_id'], 'properties': {'activity_id': {'type': 'string', 'description': 'activity_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_activities_list
Commsharbor crm activities list
Lists activities in the tenant CRM — something that happened with a contact, company or deal. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, deal_id, contact_id, company_id, activity_type. Needs crm:read on the organization. Every item carries an absolute url.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'q': {'type': 'string', 'description': 'q'}, 'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}, 'deal_id': {'type': 'string', 'description': 'deal_id'}, 'company_id': {'type': 'string', 'description': 'company_id'}, 'contact_id': {'type': 'string', 'description': 'contact_id'}, 'activity_type': {'type': 'string', 'description': 'activity_type'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_activities_update
Commsharbor crm activities update
Updates one activity in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'activity_id'], 'properties': {'note': {'type': 'string', 'description': 'note'}, 'deal_id': {'type': 'string', 'description': 'deal id'}, 'activity_id': {'type': 'string', 'description': 'activity_id'}, 'activity_type': {'type': 'string', 'description': 'activity type'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_companies_create
Commsharbor crm companies create
Creates a company in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'name'], 'properties': {'name': {'type': 'string', 'description': 'name'}, 'domain': {'type': 'string', 'description': 'domain'}, 'website': {'type': 'string', 'description': 'website'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_companies_delete
Commsharbor crm companies delete
Deletes one company from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'company_id'], 'properties': {'company_id': {'type': 'string', 'description': 'company_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_companies_get
Commsharbor crm companies get
Reads one company from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'company_id'], 'properties': {'company_id': {'type': 'string', 'description': 'company_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_companies_list
Commsharbor crm companies list
Lists companies in the tenant CRM — an organization in the tenant CRM — a customer of the customer. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q. Needs crm:read on the organization. Every item carries an absolute url.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'q': {'type': 'string', 'description': 'q'}, 'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_companies_update
Commsharbor crm companies update
Updates one company in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'company_id'], 'properties': {'name': {'type': 'string', 'description': 'name'}, 'domain': {'type': 'string', 'description': 'domain'}, 'website': {'type': 'string', 'description': 'website'}, 'company_id': {'type': 'string', 'description': 'company_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_contacts_create
Commsharbor crm contacts create
Creates a contact in the tenant CRM. Required: email, first_name. Needs crm:write on the organization. Returns the created resource with its absolute url. Being in the CRM is not permission to email: consent lives in the `marketing` sub-resource.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'email', 'first_name'], 'properties': {'email': {'type': 'string', 'description': 'email'}, 'company_id': {'type': 'string', 'description': 'company id'}, 'first_name': {'type': 'string', 'description': 'first name'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_contacts_delete
Commsharbor crm contacts delete
Deletes one contact from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. Being in the CRM is not permission to email: consent lives in the `marketing` sub-resource.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'contact_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_contacts_get
Commsharbor crm contacts get
Reads one contact from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. Being in the CRM is not permission to email: consent lives in the `marketing` sub-resource.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'contact_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_contacts_list
Commsharbor crm contacts list
Lists contacts in the tenant CRM — a person in the tenant CRM. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, company_id. Needs crm:read on the organization. Every item carries an absolute url. Being in the CRM is not permission to email: consent lives in the `marketing` sub-resource.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'q': {'type': 'string', 'description': 'q'}, 'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}, 'company_id': {'type': 'string', 'description': 'company_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_contacts_update
Commsharbor crm contacts update
Updates one contact in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404. Being in the CRM is not permission to email: consent lives in the `marketing` sub-resource.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'contact_id'], 'properties': {'email': {'type': 'string', 'description': 'email'}, 'company_id': {'type': 'string', 'description': 'company id'}, 'contact_id': {'type': 'string', 'description': 'contact_id'}, 'first_name': {'type': 'string', 'description': 'first name'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_deals_create
Commsharbor crm deals create
Creates a deal in the tenant CRM. Required: title, pipeline_id, stage_id. Needs crm:write on the organization. Returns the created resource with its absolute url. Money is in minor units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'title', 'pipeline_id', 'stage_id'], 'properties': {'title': {'type': 'string', 'description': 'title'}, 'currency': {'type': 'string', 'description': 'currency'}, 'stage_id': {'type': 'string', 'description': 'stage id'}, 'pipeline_id': {'type': 'string', 'description': 'pipeline id'}, 'value_minor': {'type': 'integer', 'description': 'value_minor'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_deals_delete
Commsharbor crm deals delete
Deletes one deal from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. Money is in minor units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'deal_id'], 'properties': {'deal_id': {'type': 'string', 'description': 'deal_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_deals_get
Commsharbor crm deals get
Reads one deal from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. Money is in minor units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'deal_id'], 'properties': {'deal_id': {'type': 'string', 'description': 'deal_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_deals_list
Commsharbor crm deals list
Lists deals in the tenant CRM — an opportunity moving through a pipeline. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, pipeline_id, stage_id, status. Needs crm:read on the organization. Every item carries an absolute url. Money is in minor units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'q': {'type': 'string', 'description': 'q'}, 'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}, 'status': {'type': 'string', 'description': 'status'}, 'stage_id': {'type': 'string', 'description': 'stage_id'}, 'pipeline_id': {'type': 'string', 'description': 'pipeline_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_deals_update
Commsharbor crm deals update
Updates one deal in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404. Money is in minor units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'deal_id'], 'properties': {'title': {'type': 'string', 'description': 'title'}, 'deal_id': {'type': 'string', 'description': 'deal_id'}, 'currency': {'type': 'string', 'description': 'currency'}, 'stage_id': {'type': 'string', 'description': 'stage id'}, 'pipeline_id': {'type': 'string', 'description': 'pipeline id'}, 'value_minor': {'type': 'integer', 'description': 'value_minor'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_pipelines_create
Commsharbor crm pipelines create
Creates a pipeline in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'name'], 'properties': {'name': {'type': 'string', 'description': 'name'}, 'stages': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Stage names to create with the pipeline, in order.'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_pipelines_delete
Commsharbor crm pipelines delete
Deletes one pipeline from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'pipeline_id'], 'properties': {'pipeline_id': {'type': 'string', 'description': 'pipeline_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_pipelines_get
Commsharbor crm pipelines get
Reads one pipeline from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'pipeline_id'], 'properties': {'pipeline_id': {'type': 'string', 'description': 'pipeline_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_pipelines_list
Commsharbor crm pipelines list
Lists pipelines in the tenant CRM — a named sequence of stages that deals move through. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q. Needs crm:read on the organization. Every item carries an absolute url.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'q': {'type': 'string', 'description': 'q'}, 'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_pipelines_update
Commsharbor crm pipelines update
Updates one pipeline in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'pipeline_id'], 'properties': {'name': {'type': 'string', 'description': 'name'}, 'stages': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Stage names to create with the pipeline, in order.'}, 'pipeline_id': {'type': 'string', 'description': 'pipeline_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_stages_create
Commsharbor crm stages create
Creates a stage in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'pipeline_id', 'name'], 'properties': {'name': {'type': 'string', 'description': 'name'}, 'position': {'type': 'integer', 'description': 'position'}, 'pipeline_id': {'type': 'string', 'description': 'pipeline_id'}, 'probability': {'type': 'integer', 'description': 'probability'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_stages_delete
Commsharbor crm stages delete
Deletes one stage from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'pipeline_id', 'stage_id'], 'properties': {'stage_id': {'type': 'string', 'description': 'stage_id'}, 'pipeline_id': {'type': 'string', 'description': 'pipeline_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_stages_get
Commsharbor crm stages get
Reads one stage from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'pipeline_id', 'stage_id'], 'properties': {'stage_id': {'type': 'string', 'description': 'stage_id'}, 'pipeline_id': {'type': 'string', 'description': 'pipeline_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_stages_list
Commsharbor crm stages list
Lists stages in the tenant CRM — one step of a pipeline, addressed under the pipeline it belongs to. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Needs crm:read on the organization. Every item carries an absolute url.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'pipeline_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}, 'pipeline_id': {'type': 'string', 'description': 'pipeline_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_stages_update
Commsharbor crm stages update
Updates one stage in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'pipeline_id', 'stage_id'], 'properties': {'name': {'type': 'string', 'description': 'name'}, 'position': {'type': 'integer', 'description': 'position'}, 'stage_id': {'type': 'string', 'description': 'stage_id'}, 'pipeline_id': {'type': 'string', 'description': 'pipeline_id'}, 'probability': {'type': 'integer', 'description': 'probability'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_tasks_create
Commsharbor crm tasks create
Creates a task in the tenant CRM. Required: title. Needs crm:write on the organization. Returns the created resource with its absolute url.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'title'], 'properties': {'title': {'type': 'string', 'description': 'title'}, 'status': {'enum': ['open', 'done', 'canceled'], 'type': 'string', 'default': 'open', 'description': 'status'}, 'deal_id': {'type': 'string', 'description': 'deal id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_tasks_delete
Commsharbor crm tasks delete
Deletes one task from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'task_id'], 'properties': {'task_id': {'type': 'string', 'description': 'task_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_tasks_get
Commsharbor crm tasks get
Reads one task from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'task_id'], 'properties': {'task_id': {'type': 'string', 'description': 'task_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_crm_tasks_list
Commsharbor crm tasks list
Lists tasks in the tenant CRM — work someone still has to do in the tenant CRM. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, status, deal_id, contact_id, assignee_user_id. Needs crm:read on the organization. Every item carries an absolute url.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'q': {'type': 'string', 'description': 'q'}, 'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}, 'status': {'type': 'string', 'description': 'status'}, 'deal_id': {'type': 'string', 'description': 'deal_id'}, 'contact_id': {'type': 'string', 'description': 'contact_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}, 'assignee_user_id': {'type': 'string', 'description': 'assignee_user_id'}}, 'additionalProperties': False}
commsharbor_crm_tasks_update
Commsharbor crm tasks update
Updates one task in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'task_id'], 'properties': {'title': {'type': 'string', 'description': 'title'}, 'status': {'enum': ['open', 'done', 'canceled'], 'type': 'string', 'default': 'open', 'description': 'status'}, 'deal_id': {'type': 'string', 'description': 'deal id'}, 'task_id': {'type': 'string', 'description': 'task_id'}, 'organization_id': {'type': 'string', 'description': 'organization_id'}}, 'additionalProperties': False}
commsharbor_data_export_create
Commsharbor data export create
Create a seven-day tenant JSON export. Scoped to one organization by construction: an export can never contain another tenant's data.
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_data_export_download
Commsharbor data export download
Download one tenant-scoped JSON export before it expires.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'export_id'], 'properties': {'export_id': {'type': 'string', 'description': 'Tenant export ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_data_exports
Commsharbor data exports
List the tenant data exports, which are retained for seven days.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_dead_letter_replay
Commsharbor dead letter replay
Replay one campaign or webhook dead letter. One record at a time, addressed explicitly. There is no "replay everything": a bulk replay of an unknown set is how a bad hour becomes a bad day.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'record_id'], 'properties': {'record_id': {'type': 'string', 'description': 'Dead-letter record ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_dead_letters
Commsharbor dead letters
Inspect nominal dead letters. What ended up here after every retry. Records are addressed by opaque ID and carry no recipient PII.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_deletion_cancel
Commsharbor deletion cancel
Cancel a scheduled tenant erasure. That is what the seven days are for: after they pass, there is nothing left to cancel.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'request_id'], 'properties': {'request_id': {'type': 'string', 'description': 'Deletion request ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_deletion_request
Commsharbor deletion request
Read the latest tenant deletion request. `status: "none"` means no erasure was ever requested — the resource always answers, so a client never has to interpret a 404 as "nothing scheduled".
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_deletion_schedule
Commsharbor deletion schedule
Schedule tenant erasure after seven days using the exact confirmation phrase. The confirmation phrase must be exactly `delete <organization_id>` — typing the id is the point, so nobody erases the wrong tenant by clicking. Erasure deletes the workspace data in CommsHarbor; the organization itself and what it bought (global entitlements, payment receipts) live in the shared account and stay, as does the audit trail.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'confirmation'], 'properties': {'confirmation': {'type': 'string', 'description': 'Exact phrase: delete <organization_id>'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_deliverability
Commsharbor deliverability
Read deliverability and backlog aggregates. This is the operator's single view of whether sending is healthy. It carries no recipient PII.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_delivery_events
Commsharbor delivery events
List normalized SES feedback events for one delivery. Open and Click are ADDITIVE: they are recorded alongside delivery state and never overwrite it.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'delivery_id'], 'properties': {'delivery_id': {'type': 'string', 'description': 'Delivery ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_delivery_get
Commsharbor delivery get
Read one delivery and its SES MessageId without recipient data. `ses_message_id` is what correlates this record with AWS when you need to chase a message there.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'delivery_id'], 'properties': {'delivery_id': {'type': 'string', 'description': 'Delivery ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_domain_create
Commsharbor domain create
Register the organization's exact sending domain and queue SES provisioning. Asking twice does not provision twice. Publish the returned DKIM records, then call `verify` to have the state observed.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'domain'], 'properties': {'domain': {'type': 'string', 'description': 'Sending domain'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_domain_deliveries
Commsharbor domain deliveries
List a domain's deliveries without recipient addresses.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'domain_id'], 'properties': {'domain_id': {'type': 'string', 'description': 'Sending domain ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_domain_get
Commsharbor domain get
Read one stored sending-domain resource. This returns what was stored at the last observation. To look again, call `verify`.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'domain_id'], 'properties': {'domain_id': {'type': 'string', 'description': 'Sending domain ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_domain_report
Commsharbor domain report
Read domain delivery and feedback aggregates.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'domain_id'], 'properties': {'domain_id': {'type': 'string', 'description': 'Sending domain ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_domains
Commsharbor domains
List sending domains with their last observed state. `status` is what was last OBSERVED at SES and DNS. It does not become `active` because provisioning was requested.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_domain_smoke
Commsharbor domain smoke
Send one controlled smoke to the server-side recipient secret; never accepts a recipient argument. The request never accepts a recipient: the destination is a server-side secret. That is what keeps this from becoming a way to send mail to arbitrary addresses through someone else's verified domain.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'domain_id'], 'properties': {'domain_id': {'type': 'string', 'description': 'Sending domain ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_domain_verify
Commsharbor domain verify
Refresh domain readiness from real SES and DNS observations. This is the ONLY operation that can move a domain to `active`, and only because it actually looked.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'domain_id'], 'properties': {'domain_id': {'type': 'string', 'description': 'Sending domain ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_health
Commsharbor health
Read deployment health and build. Smoke tests wait for their own commit to appear here instead of racing edge propagation.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
commsharbor_inbox_attachment
Commsharbor inbox attachment
Get a five-minute signed URL for one attachment, by its index in the message. The URL expires; the stored file does not. Two steps on purpose: the URL is what travels to a browser, an agent or a chat, never your credential. It expires in five minutes; the stored object does not expire at all.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'inbox_id', 'message_id', 'index'], 'properties': {'index': {'type': 'string', 'description': 'Attachment index, from the message'}, 'inbox_id': {'type': 'string', 'description': 'Inbox ID'}, 'message_id': {'type': 'string', 'description': 'Inbox message ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_inbox_create
Commsharbor inbox create
Create a receiving address on a verified sending domain. Fails with 422 when the domain is not verified: receiving on an unproven domain is relay. The domain must already be `verified` or `active` here — receiving on an unproven domain is relay. For mail to actually arrive, the domain's MX must point at this platform's inbound; until it does, the address exists and simply receives nothing.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'local_part', 'domain'], 'properties': {'domain': {'type': 'string', 'description': 'Verified domain'}, 'local_part': {'type': 'string', 'description': 'What comes before the @'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_inbox_disable
Commsharbor inbox disable
Stop accepting mail at this address. History stays readable — this disables, it never erases. Disables, never erases: mail already received stays readable, because it is the customer's data and losing it is not a cleanup. New mail to the address is dropped and counted.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'inbox_id'], 'properties': {'inbox_id': {'type': 'string', 'description': 'Inbox ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_inboxes
Commsharbor inboxes
List the addresses this organization receives on. Up to 100, newest first. A disabled address stays listed: its history is still readable.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_inbox_get
Commsharbor inbox get
Read one receiving address and whether it is still accepting mail.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'inbox_id'], 'properties': {'inbox_id': {'type': 'string', 'description': 'Inbox ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_inbox_message
Commsharbor inbox message
Read one message: body, chosen headers and `auth`. `from` is text the sender chose; `auth` is the SPF/DKIM/DMARC verdict the receiving edge reached. Decide on `auth`. `auth` is what the receiving edge concluded about SPF, DKIM and DMARC. Treat `from` as text the sender chose: `auth` is the part that was checked.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'inbox_id', 'message_id'], 'properties': {'inbox_id': {'type': 'string', 'description': 'Inbox ID'}, 'message_id': {'type': 'string', 'description': 'Inbox message ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_inbox_messages
Commsharbor inbox messages
List what arrived at one address, newest first. Summaries only, no body. Summaries only — no body. Read one message to get its text, HTML and headers.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'inbox_id'], 'properties': {'limit': {'type': 'string', 'default': 50, 'description': 'Page size, 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor'}, 'inbox_id': {'type': 'string', 'description': 'Inbox ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_logout
Commsharbor logout
Revoke the current session. Bootstrap/CSRF must belong to this browser and session. Other product sessions remain active.
入力スキーマ
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
commsharbor_marketing_smoke
Commsharbor marketing smoke
Send one controlled permission-based marketing smoke. Like the transactional smoke, the destination is a server-side secret. `contact_id` must be the CRM contact that matches it — you cannot point this at an arbitrary person.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'domain_id', 'contact_id', 'idempotency_key'], 'properties': {'domain_id': {'type': 'string', 'description': 'Active sending domain ID'}, 'contact_id': {'type': 'string', 'description': 'CRM contact matching the server-side QA recipient'}, 'idempotency_key': {'type': 'string', 'description': 'Unique send key'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_me
Commsharbor me
Read the current account profile and platform role. `user.id` is the shared-account ID. Organizations are not listed here: they live in the shared account, which does not list them inside products yet — open a workspace by its ID with `GET /api/organizations/{organization_id}`.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
commsharbor_message_send
Commsharbor message send
Queue one idempotent transactional delivery. Same behaviour and same idempotency as `POST /api/messages`. `X-Organization-Id` is still required with the session and must match the path. Prefer the canonical route.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'domain_id', 'to', 'template_id', 'variables', 'idempotency_key'], 'properties': {'to': {'type': 'string', 'description': 'Recipient email'}, 'reply_to': {'type': 'string', 'description': 'Optional reply-to email'}, 'domain_id': {'type': 'string', 'description': 'Active sending domain ID'}, 'variables': {'type': 'object', 'description': "Values for the template's declared variables.", 'additionalProperties': True}, 'template_id': {'type': 'string', 'description': 'Published template ID'}, 'idempotency_key': {'type': 'string', 'description': 'Unique logical message key'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}, 'template_version': {'type': 'integer', 'minimum': 1, 'description': 'Published version to use. Without it, the latest published version is used — pin it when the content must not drift.'}}, 'additionalProperties': False}
commsharbor_messaging_settings
Commsharbor messaging settings
Read the organization's timezone and whether marketing is currently paused.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_messaging_settings_update
Commsharbor messaging settings update
Update timezone or pause state. Pausing is always allowed. Resuming is not: if the pause came from reputation or SES tenant risk, a healthy observation has to exist first.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'timezone': {'type': 'string', 'description': 'IANA timezone'}, 'marketing_state': {'enum': ['active', 'paused'], 'type': 'string', 'description': 'active or paused'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_operations
Commsharbor operations
List current operational alerts without PII. Covers dead letters, backlog, worker and SNS failures, reputation, paused sending, quota and conservative SES/SNS cost capacity — never with recipient PII.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_operations_refresh
Commsharbor operations refresh
Refresh alerts, quota and capacity observations. The GET reads what was last stored; this goes and looks again. Same distinction as domain verification.
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_organization_get
Commsharbor organization get
Open an organization by id: name, your role and the CommsHarbor plan. This is how a workspace is opened. Name and role come from the shared account (null with an organization API key, which carries neither); the plan is the organization's global entitlement in CommsHarbor.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_platform_context
Commsharbor platform context
Confirm the caller's platform role. Tenant ownership grants nothing here: platform access is a separate, explicit grant.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
commsharbor_platform_crm_activities_create
Commsharbor platform crm activities create
Creates a activity in the platform CRM. Required: note. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Returns the created resource with its absolute url.
入力スキーマ
{'type': 'object', 'required': ['lead_id', 'note'], 'properties': {'note': {'type': 'string', 'description': 'note'}, 'lead_id': {'type': 'string', 'description': 'lead_id'}, 'activity_type': {'type': 'string', 'description': 'activity type'}}, 'additionalProperties': False}
commsharbor_platform_crm_activities_delete
Commsharbor platform crm activities delete
Deletes one activity from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['lead_id', 'activity_id'], 'properties': {'lead_id': {'type': 'string', 'description': 'lead_id'}, 'activity_id': {'type': 'string', 'description': 'activity_id'}}, 'additionalProperties': False}
commsharbor_platform_crm_activities_get
Commsharbor platform crm activities get
Reads one activity from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['lead_id', 'activity_id'], 'properties': {'lead_id': {'type': 'string', 'description': 'lead_id'}, 'activity_id': {'type': 'string', 'description': 'activity_id'}}, 'additionalProperties': False}
commsharbor_platform_crm_activities_list
Commsharbor platform crm activities list
Lists activities in the platform CRM — our note about a prospective tenant. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Every item carries an absolute url.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['lead_id'], 'properties': {'q': {'type': 'string', 'description': 'q'}, 'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}, 'lead_id': {'type': 'string', 'description': 'lead_id'}}, 'additionalProperties': False}
commsharbor_platform_crm_activities_update
Commsharbor platform crm activities update
Updates one activity in the platform CRM; only the fields you send change. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['lead_id', 'activity_id'], 'properties': {'note': {'type': 'string', 'description': 'note'}, 'lead_id': {'type': 'string', 'description': 'lead_id'}, 'activity_id': {'type': 'string', 'description': 'activity_id'}, 'activity_type': {'type': 'string', 'description': 'activity type'}}, 'additionalProperties': False}
commsharbor_platform_crm_leads_create
Commsharbor platform crm leads create
Creates a lead in the platform CRM. Required: email, name. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Returns the created resource with its absolute url.
入力スキーマ
{'type': 'object', 'required': ['email', 'name'], 'properties': {'name': {'type': 'string', 'description': 'name'}, 'email': {'type': 'string', 'description': 'email'}, 'stage': {'type': 'string', 'description': 'stage'}, 'source': {'type': 'string', 'description': 'source'}, 'company_name': {'type': 'string', 'description': 'company name'}, 'organization_id': {'type': 'string', 'description': 'organization id'}}, 'additionalProperties': False}
commsharbor_platform_crm_leads_delete
Commsharbor platform crm leads delete
Deletes one lead from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['lead_id'], 'properties': {'lead_id': {'type': 'string', 'description': 'lead_id'}}, 'additionalProperties': False}
commsharbor_platform_crm_leads_get
Commsharbor platform crm leads get
Reads one lead from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['lead_id'], 'properties': {'lead_id': {'type': 'string', 'description': 'lead_id'}}, 'additionalProperties': False}
commsharbor_platform_crm_leads_list
Commsharbor platform crm leads list
Lists leads in the platform CRM — a prospective ORGANIZATION in our own funnel — platform CRM is not tenant data. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, stage. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Every item carries an absolute url.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': [], 'properties': {'q': {'type': 'string', 'description': 'q'}, 'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'stage': {'type': 'string', 'description': 'stage'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}}, 'additionalProperties': False}
commsharbor_platform_crm_leads_update
Commsharbor platform crm leads update
Updates one lead in the platform CRM; only the fields you send change. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['lead_id'], 'properties': {'name': {'type': 'string', 'description': 'name'}, 'email': {'type': 'string', 'description': 'email'}, 'stage': {'type': 'string', 'description': 'stage'}, 'source': {'type': 'string', 'description': 'source'}, 'lead_id': {'type': 'string', 'description': 'lead_id'}, 'company_name': {'type': 'string', 'description': 'company name'}, 'organization_id': {'type': 'string', 'description': 'organization id'}}, 'additionalProperties': False}
commsharbor_platform_crm_tasks_create
Commsharbor platform crm tasks create
Creates a task in the platform CRM. Required: title. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Returns the created resource with its absolute url.
入力スキーマ
{'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'title'}, 'due_at': {'type': 'string', 'description': 'due at'}, 'lead_id': {'type': 'string', 'description': 'lead id'}}, 'additionalProperties': False}
commsharbor_platform_crm_tasks_delete
Commsharbor platform crm tasks delete
Deletes one task from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['task_id'], 'properties': {'task_id': {'type': 'string', 'description': 'task_id'}}, 'additionalProperties': False}
commsharbor_platform_crm_tasks_get
Commsharbor platform crm tasks get
Reads one task from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['task_id'], 'properties': {'task_id': {'type': 'string', 'description': 'task_id'}}, 'additionalProperties': False}
commsharbor_platform_crm_tasks_list
Commsharbor platform crm tasks list
Lists tasks in the platform CRM — work on a platform lead — about a prospective tenant, not about a tenant's customer. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, status, lead_id, assignee_user_id. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Every item carries an absolute url.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': [], 'properties': {'q': {'type': 'string', 'description': 'q'}, 'limit': {'type': 'integer', 'default': 50, 'description': 'Page size from 1 to 100'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page'}, 'status': {'type': 'string', 'description': 'status'}, 'lead_id': {'type': 'string', 'description': 'lead_id'}, 'assignee_user_id': {'type': 'string', 'description': 'assignee_user_id'}}, 'additionalProperties': False}
commsharbor_platform_crm_tasks_update
Commsharbor platform crm tasks update
Updates one task in the platform CRM; only the fields you send change. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['task_id'], 'properties': {'title': {'type': 'string', 'description': 'title'}, 'due_at': {'type': 'string', 'description': 'due at'}, 'lead_id': {'type': 'string', 'description': 'lead id'}, 'task_id': {'type': 'string', 'description': 'task_id'}}, 'additionalProperties': False}
commsharbor_preference_get
Commsharbor preference get
Read preference through a signed capability. The token IS the credential. It reveals preference state and nothing else — no email address, no CRM record.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['token'], 'properties': {'token': {'type': 'string', 'description': 'Signed preference token'}}, 'additionalProperties': False}
commsharbor_preference_token_create
Commsharbor preference token create
Create signed preference and unsubscribe URLs. The capability is scoped to one organization and one contact, it expires, and it embeds no email address. Put `marketing_headers` in the message and the unsubscribe works without a login.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'CRM contact ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_preference_unsubscribe
Commsharbor preference unsubscribe
Apply one-click unsubscribe through a signed capability. This is the endpoint mail clients call from the `List-Unsubscribe-Post` header, which is why the body is form-encoded and fixed. Calling it twice is the same as calling it once.
入力スキーマ
{'type': 'object', 'required': ['token'], 'properties': {'token': {'type': 'string', 'description': 'Signed preference token'}}, 'additionalProperties': False}
commsharbor_suppression_create
Commsharbor suppression create
Suppress one recipient inside the active organization.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'email'], 'properties': {'email': {'type': 'string', 'description': 'Recipient email'}, 'contact_id': {'type': 'string', 'description': 'Optional CRM contact ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_suppressions
Commsharbor suppressions
List organization suppressions. Global, organization and SES tenant suppressions are all checked BEFORE quota and before any queue work.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Page size, maximum 100'}, 'cursor': {'type': 'string', 'description': 'Opaque pagination cursor'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_template_archive
Commsharbor template archive
Archive a template and preserve its versions. Deliveries that referenced a version must keep resolving to it, so archiving hides the draft and keeps the history.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'template_id'], 'properties': {'template_id': {'type': 'string', 'description': 'Template ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_template_create
Commsharbor template create
Create a canonical block template draft. Creating never publishes. Nothing can send this template until `publish` freezes a version.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'name', 'message_type', 'subject', 'variables', 'blocks'], 'properties': {'name': {'type': 'string', 'description': 'Template name'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Canonical content blocks. This is the stored form — HTML is converted into it, never kept raw.'}, 'subject': {'type': 'string', 'description': 'Subject with declared {{variables}}'}, 'variables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Variable name'}, 'type': {'enum': ['string', 'number', 'date'], 'type': 'string'}, 'required': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': 'Typed variables the template declares: `name`, `type` and whether it is `required`.'}, 'message_type': {'enum': ['transactional', 'marketing'], 'type': 'string', 'description': 'What the template may be used for. A marketing campaign will not accept a transactional template.'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_template_export
Commsharbor template export
Export the latest published HTML, text and MJML.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'template_id'], 'properties': {'template_id': {'type': 'string', 'description': 'Template ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_template_get
Commsharbor template get
Read one template draft owned by this organization.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'template_id'], 'properties': {'template_id': {'type': 'string', 'description': 'Template ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_template_import_html
Commsharbor template import html
Import a safe HTML subset as a draft. Active content, forms and unsafe URLs are rejected, not sanitised-and-kept. What survives is stored as blocks, so an imported template behaves exactly like an authored one.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'name', 'message_type', 'subject', 'html'], 'properties': {'html': {'type': 'string', 'description': 'Safe HTML subset'}, 'name': {'type': 'string', 'description': 'Template name'}, 'subject': {'type': 'string', 'description': 'Subject with declared {{variables}}'}, 'variables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Variable name'}, 'type': {'enum': ['string', 'number', 'date'], 'type': 'string'}, 'required': {'type': 'boolean'}}, 'additionalProperties': False}}, 'message_type': {'enum': ['transactional', 'marketing'], 'type': 'string', 'description': 'What it may be used for.'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_template_preview
Commsharbor template preview
Compile and render a safe template preview. `warnings` tells you what was stripped and what would not render — read it before publishing rather than after sending.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'subject', 'variables', 'blocks'], 'properties': {'name': {'type': 'string', 'description': 'Template name'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Canonical content blocks. This is the stored form — HTML is converted into it, never kept raw.'}, 'values': {'type': 'object', 'description': 'Values to substitute into the declared variables for this preview.', 'additionalProperties': True}, 'subject': {'type': 'string', 'description': 'Subject with declared {{variables}}'}, 'variables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Variable name'}, 'type': {'enum': ['string', 'number', 'date'], 'type': 'string'}, 'required': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': 'Typed variables the template declares: `name`, `type` and whether it is `required`.'}, 'message_type': {'enum': ['transactional', 'marketing'], 'type': 'string', 'description': 'What the template may be used for. A marketing campaign will not accept a transactional template.'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_template_publish
Commsharbor template publish
Publish an immutable template version. The version's identity is the hash of its compiled content — publishing identical content does not create a second version.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'template_id'], 'properties': {'template_id': {'type': 'string', 'description': 'Template ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_templates
Commsharbor templates
List the versioned email templates of the organization.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Page size, from 1 to 100.'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_template_update
Commsharbor template update
Update one template draft. Editing a draft can never change what a past delivery rendered: published versions are immutable.
破壊的操作あり
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'template_id'], 'properties': {'name': {'type': 'string', 'description': 'Template name'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Canonical content blocks. This is the stored form — HTML is converted into it, never kept raw.'}, 'subject': {'type': 'string', 'description': 'Subject with declared {{variables}}'}, 'variables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Variable name'}, 'type': {'enum': ['string', 'number', 'date'], 'type': 'string'}, 'required': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': 'Typed variables the template declares: `name`, `type` and whether it is `required`.'}, 'template_id': {'type': 'string', 'description': 'Template ID'}, 'message_type': {'enum': ['transactional', 'marketing'], 'type': 'string', 'description': 'What the template may be used for. A marketing campaign will not accept a transactional template.'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_template_versions
Commsharbor template versions
List the immutable published versions of a template.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'template_id'], 'properties': {'template_id': {'type': 'string', 'description': 'Template ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_tracking_domain
Commsharbor tracking domain
Read the organization's tracking domain, the CNAME it needs and whether the platform actually answers on it. Null when there is none: links then use the shared platform origin. `null` when the organization has none — then every link falls back to the platform origin.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_tracking_domain_create
Commsharbor tracking domain create
Register the host that will serve this organization's message links. One per organization; registering never activates it. One per organization, and the host is unique across the platform — two tenants claiming the same name would make link routing ambiguous. Registering does not activate: publish the CNAME, then call `verify`.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'domain'], 'properties': {'domain': {'type': 'string', 'description': 'Tracking host, e.g. links.example.com'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_tracking_domain_remove
Commsharbor tracking domain remove
Remove the tracking domain; NEW messages go back to the platform origin. Links already sent keep pointing at the removed host. Links already sent keep pointing at the removed host: this stops NEW messages, not old ones.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_tracking_domain_verify
Commsharbor tracking domain verify
Probe the host now and store what was seen. The ONLY way to reach `active`, and only after reaching this product on that host — DNS resolving is not enough. The only operation that can move a tracking domain to `active`, and it does so only after reaching this product's own health endpoint ON that host. A host that used to answer and stopped becomes `failed`, and links go back to the platform origin immediately.
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_webhook_create
Commsharbor webhook create
Create a webhook and reveal its secret once. Deliveries are signed with timestamped HMAC-SHA256 and retried with exponential backoff; what still fails lands in the tenant-scoped dead-letter queue. Store the secret now — it is never shown again.
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'url', 'event_types'], 'properties': {'url': {'type': 'string', 'description': 'Public HTTPS URL'}, 'event_types': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Which events to deliver. Delivery feedback: `Delivery`, `DeliveryDelay`, `Bounce`, `Complaint`, `Reject`, `RenderingFailure`, `Open`, `Click`. Campaigns: `campaign.completed`, `campaign.paused`. Inbound: `inbox.message.received` and `inbox.reply.matched`, the reply correlated to the delivery that provoked it.'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_webhook_deliveries
Commsharbor webhook deliveries
List the signed attempts made to one webhook and their retry state.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'webhook_id'], 'properties': {'webhook_id': {'type': 'string', 'description': 'Webhook endpoint ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_webhook_disable
Commsharbor webhook disable
Disable a webhook without deleting the evidence of what it already delivered.
破壊的操作あり 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'webhook_id'], 'properties': {'webhook_id': {'type': 'string', 'description': 'Webhook endpoint ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_webhook_get
Commsharbor webhook get
Read one webhook, without its signing secret.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id', 'webhook_id'], 'properties': {'webhook_id': {'type': 'string', 'description': 'Webhook endpoint ID'}, 'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
commsharbor_webhooks
Commsharbor webhooks
List the webhook endpoints of the organization, without their signing secrets.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['organization_id'], 'properties': {'organization_id': {'type': 'string', 'description': 'Active organization ID'}}, 'additionalProperties': False}
pricing
Pricing
Current public prices and free allowances; no charge.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {}, 'additionalProperties': False}
変更
pricing
2026年9月29日3:01
変更
commsharbor_inbox_attachment
2026年9月29日3:01
変更
commsharbor_inbox_message
2026年9月29日3:01
変更
commsharbor_inbox_messages
2026年9月29日3:01
変更
commsharbor_inbox_disable
2026年9月29日3:01
変更
commsharbor_inbox_get
2026年9月29日3:01
変更
commsharbor_inbox_create
2026年9月29日3:01
変更
commsharbor_inboxes
2026年9月29日3:01
変更
commsharbor_tracking_domain_remove
2026年9月29日3:01
変更
commsharbor_tracking_domain_verify
2026年9月29日3:01
変更
commsharbor_tracking_domain_create
2026年9月29日3:01
変更
commsharbor_tracking_domain
2026年9月29日3:01
変更
commsharbor_deletion_cancel
2026年9月29日3:01
変更
commsharbor_deletion_schedule
2026年9月29日3:01
変更
commsharbor_deletion_request
2026年9月29日3:01
変更
commsharbor_data_export_download
2026年9月29日3:01
変更
commsharbor_data_export_create
2026年9月29日3:01
変更
commsharbor_data_exports
2026年9月29日3:01
変更
commsharbor_operations_refresh
2026年9月29日3:01
変更
commsharbor_operations
2026年9月29日3:01
変更
commsharbor_billing_purchase
2026年9月29日3:01
変更
commsharbor_billing
2026年9月29日3:01
変更
commsharbor_billing_catalog
2026年9月29日3:01
変更
commsharbor_dead_letter_replay
2026年9月29日3:01
変更
commsharbor_dead_letters
2026年9月29日3:01
変更
commsharbor_webhook_deliveries
2026年9月29日3:01
変更
commsharbor_webhook_disable
2026年9月29日3:01
変更
commsharbor_webhook_get
2026年9月29日3:01
変更
commsharbor_webhook_create
2026年9月29日3:01
変更
commsharbor_webhooks
2026年9月29日3:01