MCP 서버

commsharbor

com.commsharbor/commsharbor
커뮤니케이션 마케팅 및 광고 공개 · 연결 가능 MCP 2026-07-28

이 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 AM
변경됨
commsharbor_inbox_attachment
2026년 9월 29일 3:01 AM
변경됨
commsharbor_inbox_message
2026년 9월 29일 3:01 AM
변경됨
commsharbor_inbox_messages
2026년 9월 29일 3:01 AM
변경됨
commsharbor_inbox_disable
2026년 9월 29일 3:01 AM
변경됨
commsharbor_inbox_get
2026년 9월 29일 3:01 AM
변경됨
commsharbor_inbox_create
2026년 9월 29일 3:01 AM
변경됨
commsharbor_inboxes
2026년 9월 29일 3:01 AM
변경됨
commsharbor_tracking_domain_remove
2026년 9월 29일 3:01 AM
변경됨
commsharbor_tracking_domain_verify
2026년 9월 29일 3:01 AM
변경됨
commsharbor_tracking_domain_create
2026년 9월 29일 3:01 AM
변경됨
commsharbor_tracking_domain
2026년 9월 29일 3:01 AM
변경됨
commsharbor_deletion_cancel
2026년 9월 29일 3:01 AM
변경됨
commsharbor_deletion_schedule
2026년 9월 29일 3:01 AM
변경됨
commsharbor_deletion_request
2026년 9월 29일 3:01 AM
변경됨
commsharbor_data_export_download
2026년 9월 29일 3:01 AM
변경됨
commsharbor_data_export_create
2026년 9월 29일 3:01 AM
변경됨
commsharbor_data_exports
2026년 9월 29일 3:01 AM
변경됨
commsharbor_operations_refresh
2026년 9월 29일 3:01 AM
변경됨
commsharbor_operations
2026년 9월 29일 3:01 AM
변경됨
commsharbor_billing_purchase
2026년 9월 29일 3:01 AM
변경됨
commsharbor_billing
2026년 9월 29일 3:01 AM
변경됨
commsharbor_billing_catalog
2026년 9월 29일 3:01 AM
변경됨
commsharbor_dead_letter_replay
2026년 9월 29일 3:01 AM
변경됨
commsharbor_dead_letters
2026년 9월 29일 3:01 AM
변경됨
commsharbor_webhook_deliveries
2026년 9월 29일 3:01 AM
변경됨
commsharbor_webhook_disable
2026년 9월 29일 3:01 AM
변경됨
commsharbor_webhook_get
2026년 9월 29일 3:01 AM
변경됨
commsharbor_webhook_create
2026년 9월 29일 3:01 AM
변경됨
commsharbor_webhooks
2026년 9월 29일 3:01 AM