Cyberimpact MCP by usefulapi
Read Cyberimpact members, groups and mailing results; add members, send opt-ins, create mailings.
我該用這個嗎
品質與安全性
發現項目(5)
- LOW在 cyberimpact_get_member_mailings 中
- LOW在 cyberimpact_list_bounced_members 中
- LOW在 cyberimpact_list_unsubscribed_members 中
- LOW在 cyberimpact_list_mailing_recipients 中
- LOW在 cyberimpact_add_member_to_groups 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"cyberimpact": {
"url": "https://cyberimpact.usefulapi.io/mcp"
}
}
}遠端端點
https://cyberimpact.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(25)
🟢cyberimpact_get_account
Check the connection and show which Cyberimpact account the API token belongs to (username, email, account name). GET /ping.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_list_members(status, sort, joinedOnFrom, joinedOnTo, updatedOnFrom, ...)
List subscribed contacts (members) with name, email, language, consent type, mailing counts and custom fields. status: active (in at least one group, default), orphans (in no group) or all. Filter by the date a member joined or was last updated. Bounced and unsubscribed members have their own tools. GET /members.
輸入結構描述
{
"type": "object",
"properties": {
"status": {
"description": "Which subscribed members (default active).",
"type": "string",
"enum": [
"active",
"orphans",
"all"
]
},
"sort": {
"description": "Sort order.",
"type": "string",
"enum": [
"email_asc",
"email_desc",
"language_asc",
"language_desc",
"fullname_asc",
"fullname_desc",
"date_asc",
"date_desc",
"consent_type_asc",
"consent_type_desc",
"consent_date_asc",
"consent_date_desc",
"updated_asc",
"updated_desc"
]
},
"joinedOnFrom": {
"description": "Joined on or after this date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"joinedOnTo": {
"description": "Joined on or before this date (whole day).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updatedOnFrom": {
"description": "Updated on or after this date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updatedOnTo": {
"description": "Updated on or before this date (whole day).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_get_member(key)
One member by email address or id: all attributes, consent type, mailings received/opened/clicked and custom fields (keyed by custom field id; see cyberimpact_list_custom_fields). GET /members/{key}.
輸入結構描述
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 320,
"description": "The member's email address or numeric id."
}
},
"required": [
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_get_member_groups(key, sort, page, limit)
The groups a member belongs to (id, title, public/private, dynamic). GET /members/{key}/groups.
輸入結構描述
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 320,
"description": "The member's email address or numeric id."
},
"sort": {
"description": "Sort order.",
"type": "string",
"enum": [
"title_asc",
"title_desc",
"created_asc",
"created_desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_get_member_mailings(key, sort, page, limit)
The mailings a member received (use it to see what a contact was sent and when). GET /members/{key}/mailings.
輸入結構描述
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 320,
"description": "The member's email address or numeric id."
},
"sort": {
"description": "Sort order.",
"type": "string",
"enum": [
"date_sent_asc",
"date_sent_desc",
"date_opened_asc",
"date_opened_desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_get_member_consent(key)
A member's consent record: consent type, relation type, consent date, expiration and proof (for CASL compliance checks). GET /members/{key}/consent.
輸入結構描述
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 320,
"description": "The member's email address or numeric id."
}
},
"required": [
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_list_bounced_members(sort, bouncedOnFrom, bouncedOnTo, updatedOnFrom, updatedOnTo, ...)
Members whose last mailing hard-bounced (invalid addresses to clean up), with the bounce date. GET /members/bounced.
輸入結構描述
{
"type": "object",
"properties": {
"sort": {
"description": "Sort order.",
"type": "string",
"enum": [
"email_asc",
"email_desc",
"date_asc",
"date_desc",
"updated_asc",
"updated_desc"
]
},
"bouncedOnFrom": {
"description": "Bounced on or after this date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"bouncedOnTo": {
"description": "Bounced on or before this date (whole day).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updatedOnFrom": {
"description": "Updated on or after this date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updatedOnTo": {
"description": "Updated on or before this date (whole day).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_list_unsubscribed_members(sort, unsubscribedOnFrom, unsubscribedOnTo, updatedOnFrom, updatedOnTo, ...)
Members who unsubscribed, with the unsubscribe date. These contacts must not be mailed again. GET /members/unsubscribed.
輸入結構描述
{
"type": "object",
"properties": {
"sort": {
"description": "Sort order.",
"type": "string",
"enum": [
"email_asc",
"email_desc",
"date_asc",
"date_desc",
"updated_asc",
"updated_desc"
]
},
"unsubscribedOnFrom": {
"description": "Unsubscribed on or after this date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"unsubscribedOnTo": {
"description": "Unsubscribed on or before this date (whole day).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updatedOnFrom": {
"description": "Updated on or after this date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updatedOnTo": {
"description": "Updated on or before this date (whole day).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_list_custom_fields
The account's custom member fields (id, name, type text/date/integer/decimal). Member customFields are keyed by these ids. GET /customfields.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_list_groups(sort, page, limit)
List the account's groups (mailing lists) with member and mailing counts, public/private and dynamic flags. Use the ids to target mailings and opt-ins. GET /groups.
輸入結構描述
{
"type": "object",
"properties": {
"sort": {
"description": "Sort order.",
"type": "string",
"enum": [
"group_asc",
"group_desc",
"nbmember_asc",
"nbmember_desc",
"type_asc",
"type_desc",
"nbnewsletter_asc",
"nbnewsletter_desc",
"date_asc",
"date_desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_get_group(group_id)
One group by id with its member count, mailing count and flags. GET /groups/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"group_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cyberimpact group id."
}
},
"required": [
"group_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_list_group_members(group_id, sort, joinedOnFrom, joinedOnTo, updatedOnFrom, ...)
The members of one group, with the same member filters as cyberimpact_list_members. GET /groups/{id}/members.
輸入結構描述
{
"type": "object",
"properties": {
"group_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cyberimpact group id."
},
"sort": {
"description": "Sort order.",
"type": "string",
"enum": [
"email_asc",
"email_desc",
"language_asc",
"language_desc",
"fullname_asc",
"fullname_desc",
"date_asc",
"date_desc",
"consent_type_asc",
"consent_type_desc",
"consent_date_asc",
"consent_date_desc",
"updated_asc",
"updated_desc"
]
},
"joinedOnFrom": {
"description": "Joined on or after this date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"joinedOnTo": {
"description": "Joined on or before this date (whole day).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updatedOnFrom": {
"description": "Updated on or after this date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"updatedOnTo": {
"description": "Updated on or before this date (whole day).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"group_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_list_mailings(kind, group_id, sort, page, limit)
List mailings by state: sent (default, archived ones excluded), scheduled (queued to go out) or archived. Each has id, subject, language, send/schedule date, recipient count and sender. Optionally only mailings sent to one group. GET /mailings/{sent|scheduled|archived}.
輸入結構描述
{
"type": "object",
"properties": {
"kind": {
"description": "Which mailings (default sent).",
"type": "string",
"enum": [
"sent",
"scheduled",
"archived"
]
},
"group_id": {
"description": "Only mailings sent to this group id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Sort order (date_sent_* only applies to archived mailings).",
"type": "string",
"enum": [
"language_asc",
"language_desc",
"subject_asc",
"subject_desc",
"recipients_asc",
"recipients_desc",
"date_asc",
"date_desc",
"date_sent_asc",
"date_sent_desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_get_mailing(mailing_id)
One mailing by id with its results: sent/delivered/stopped counts, views, clicks, delivery/click/view rates, per-link clicks, recipient groups, sender and body (HTML/text, cut at 20 000 characters). GET /mailings/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"mailing_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cyberimpact mailing id."
}
},
"required": [
"mailing_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_list_mailing_recipients(mailing_id, kind, group_id, sort, page, ...)
Who received a mailing and what happened: kind = all, delivered, stopped, hard_bounced, soft_bounced, unsubscribed, opened or clicked. Optionally only recipients from one group. GET /mailings/{id}/recipients[/{kind}].
輸入結構描述
{
"type": "object",
"properties": {
"mailing_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cyberimpact mailing id."
},
"kind": {
"description": "Which recipients (default all).",
"type": "string",
"enum": [
"all",
"delivered",
"stopped",
"hard_bounced",
"soft_bounced",
"unsubscribed",
"opened",
"clicked"
]
},
"group_id": {
"description": "Only recipients that belong to this group id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Sort order.",
"type": "string",
"enum": [
"email_asc",
"email_desc",
"language_asc",
"language_desc",
"fullname_asc",
"fullname_desc",
"date_asc",
"date_desc",
"updated_asc",
"updated_desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"mailing_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_list_templates(sort, page, limit)
List the account's email templates (id, title, created/updated). GET /templates.
輸入結構描述
{
"type": "object",
"properties": {
"sort": {
"description": "Sort order.",
"type": "string",
"enum": [
"template_asc",
"template_desc",
"language_asc",
"language_desc",
"subject_asc",
"subject_desc",
"updated_asc",
"updated_desc",
"usage_asc",
"usage_desc",
"created_asc",
"created_desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_get_template(template_id)
One template by id with its HTML and text body (cut at 20 000 characters). GET /templates/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"template_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cyberimpact template id."
}
},
"required": [
"template_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cyberimpact_get_batch(batch_id, show_error_details)
Status of a bulk batch job (NEW, PROCESSING or COMPLETED) and its result. Set show_error_details to list the per-member errors. GET /batches/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"batch_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cyberimpact batch id."
},
"show_error_details": {
"description": "Include the details of each error.",
"type": "boolean"
}
},
"required": [
"batch_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡cyberimpact_add_member(email, group_ids, firstname, lastname, company, ...)
WRITE: add a contact as a subscribed member WITHOUT a confirmation email (implied consent) and put it in the given groups; the contact can then be mailed. Only use it for people who really gave their consent (CASL); to ask the person to confirm first use cyberimpact_send_optin. A member that already exists is rejected by the API. Throttled by Cyberimpact; for many contacts use the app's import. POST /members.
輸入結構描述
{
"type": "object",
"properties": {
"email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The member's email address."
},
"group_ids": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "Group ids to subscribe the member to (see cyberimpact_list_groups)."
},
"firstname": {
"description": "First name.",
"type": "string",
"maxLength": 200
},
"lastname": {
"description": "Last name.",
"type": "string",
"maxLength": 200
},
"company": {
"description": "Company.",
"type": "string",
"maxLength": 200
},
"gender": {
"description": "m, f or o.",
"type": "string",
"enum": [
"m",
"f",
"o"
]
},
"language": {
"description": "en_ca or fr_ca.",
"type": "string",
"enum": [
"en_ca",
"fr_ca"
]
},
"birthdate": {
"description": "Birth date, yyyy-mm-dd.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"postalCode": {
"description": "Postal code.",
"type": "string",
"maxLength": 20
},
"country": {
"description": "ISO 3166-1 alpha-2 country code, e.g. CA.",
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"note": {
"description": "Free-text note.",
"type": "string",
"maxLength": 2000
},
"customFields": {
"description": "Custom field values keyed by custom field id (see cyberimpact_list_custom_fields).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^\\d{1,12}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "number"
}
]
}
}
},
"required": [
"email",
"group_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cyberimpact_update_member(key, new_email, firstname, lastname, company, ...)
WRITE: change only the given attributes of a member (other attributes stay as they are). The old values of the changed fields are overwritten and not recoverable through the API. Set new_email to change the address. PATCH /members/{key}.
輸入結構描述
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 320,
"description": "The member's email address or numeric id."
},
"new_email": {
"description": "The member's NEW email address.",
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"firstname": {
"description": "First name.",
"type": "string",
"maxLength": 200
},
"lastname": {
"description": "Last name.",
"type": "string",
"maxLength": 200
},
"company": {
"description": "Company.",
"type": "string",
"maxLength": 200
},
"gender": {
"description": "m, f or o.",
"type": "string",
"enum": [
"m",
"f",
"o"
]
},
"language": {
"description": "en_ca or fr_ca.",
"type": "string",
"enum": [
"en_ca",
"fr_ca"
]
},
"birthdate": {
"description": "Birth date, yyyy-mm-dd.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"postalCode": {
"description": "Postal code.",
"type": "string",
"maxLength": 20
},
"country": {
"description": "ISO 3166-1 alpha-2 country code, e.g. CA.",
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"note": {
"description": "Free-text note.",
"type": "string",
"maxLength": 2000
},
"customFields": {
"description": "Custom field values keyed by custom field id (see cyberimpact_list_custom_fields).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^\\d{1,12}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "number"
}
]
}
}
},
"required": [
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡cyberimpact_add_member_to_groups(key, group_ids)
WRITE: add an existing member to more groups (existing group memberships are kept). Being in a group makes the member a recipient of mailings sent to it. Returns the member's groups after the update. POST /members/{key}/groups.
輸入結構描述
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 320,
"description": "The member's email address or numeric id."
},
"group_ids": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "Group ids to add the member to."
}
},
"required": [
"key",
"group_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cyberimpact_send_optin(email, group_ids, optinConfirmUrl, firstname, lastname, ...)
WRITE, SENDS AN EMAIL to the given address: an opt-in confirmation request. The person is added to the groups only after they confirm (the member is created if it does not exist). Use this instead of cyberimpact_add_member when you do not have the person's consent yet. Only call it after the user has approved sending to this address, and set confirm_send to true. Throttled by Cyberimpact. POST /members/optins.
輸入結構描述
{
"type": "object",
"properties": {
"email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The address that receives the confirmation email."
},
"group_ids": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "Group ids the person joins once they confirm."
},
"optinConfirmUrl": {
"description": "Page the person lands on after confirming (http:// or https:// URL).",
"type": "string",
"maxLength": 2000
},
"firstname": {
"description": "First name.",
"type": "string",
"maxLength": 200
},
"lastname": {
"description": "Last name.",
"type": "string",
"maxLength": 200
},
"company": {
"description": "Company.",
"type": "string",
"maxLength": 200
},
"gender": {
"description": "m, f or o.",
"type": "string",
"enum": [
"m",
"f",
"o"
]
},
"language": {
"description": "en_ca or fr_ca.",
"type": "string",
"enum": [
"en_ca",
"fr_ca"
]
},
"birthdate": {
"description": "Birth date, yyyy-mm-dd.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"postalCode": {
"description": "Postal code.",
"type": "string",
"maxLength": 20
},
"country": {
"description": "ISO 3166-1 alpha-2 country code, e.g. CA.",
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"note": {
"description": "Free-text note.",
"type": "string",
"maxLength": 2000
},
"customFields": {
"description": "Custom field values keyed by custom field id (see cyberimpact_list_custom_fields).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^\\d{1,12}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "number"
}
]
}
},
"confirm_send": {
"type": "boolean",
"const": true,
"description": "Must be true: the user explicitly approved emailing this address."
}
},
"required": [
"email",
"group_ids",
"confirm_send"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡cyberimpact_create_group(title, is_public)
WRITE: create a new, empty group (mailing list). A public group can be offered on subscription forms; a private one is internal. Groups cannot be deleted through this server. POST /groups.
輸入結構描述
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The group name."
},
"is_public": {
"type": "boolean",
"description": "true = public group, false = private group."
}
},
"required": [
"title",
"is_public"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡cyberimpact_create_template(title, bodyHtml, bodyText)
WRITE: create a new email template from HTML and/or text. It is only saved in the account; nothing is sent. POST /templates.
輸入結構描述
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The template name."
},
"bodyHtml": {
"description": "HTML body. At least one of bodyHtml or bodyText is required.",
"type": "string",
"minLength": 1,
"maxLength": 500000
},
"bodyText": {
"description": "Plain-text body. At least one of bodyHtml or bodyText is required.",
"type": "string",
"minLength": 1,
"maxLength": 500000
}
},
"required": [
"title"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cyberimpact_create_mailing(subject, language, group_ids, send_at, bodyHtml, ...)
WRITE, SENDS EMAIL TO CUSTOMERS: create a mailing scheduled to be sent at send_at to every member of the chosen groups. It goes out for real unless it is cancelled in the Cyberimpact app before send_at. Only call it after the user has approved the subject, body, sender and groups, and set confirm_send to true. mail_from must be a validated sender address of the account. A mailing cannot be deleted through this server. POST /mailings.
輸入結構描述
{
"type": "object",
"properties": {
"subject": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Email subject."
},
"language": {
"type": "string",
"enum": [
"en_ca",
"fr_ca"
],
"description": "en_ca or fr_ca."
},
"group_ids": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "Groups whose members receive the mailing (see cyberimpact_list_groups; check member counts first)."
},
"send_at": {
"type": "string",
"description": "When to start sending, 'yyyy-mm-dd HH:mm:ss'. Cyberimpact reports dates in Eastern time (EST/EDT)."
},
"bodyHtml": {
"description": "HTML body. At least one of bodyHtml or bodyText is required.",
"type": "string",
"minLength": 1,
"maxLength": 500000
},
"bodyText": {
"description": "Plain-text body. At least one of bodyHtml or bodyText is required.",
"type": "string",
"minLength": 1,
"maxLength": 500000
},
"mail_from": {
"description": "From address; must be a validated sender in the account.",
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"from_name": {
"description": "From name.",
"type": "string",
"maxLength": 200
},
"reply_to": {
"description": "Reply-to address.",
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"statistics": {
"description": "detailed (default) or anonymized open/click statistics.",
"type": "string",
"enum": [
"detailed",
"anonymized"
]
},
"confirm_send": {
"type": "boolean",
"const": true,
"description": "Must be true: the user explicitly approved sending this mailing to these groups."
}
},
"required": [
"subject",
"language",
"group_ids",
"send_at",
"confirm_send"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據