{
  "service": "cyberimpact",
  "displayName": "Cyberimpact",
  "categories": [
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "eyJ...",
      "description": "Cyberimpact API token sent as a Bearer token. Create and manage API tokens in Cyberimpact under Developers > API tokens."
    }
  ],
  "homepageUrl": "https://www.cyberimpact.com/",
  "actions": [
    {
      "id": "cyberimpact.create_group",
      "service": "cyberimpact",
      "name": "create_group",
      "description": "Create a static Cyberimpact group.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The group name."
          },
          "isPublic": {
            "type": "boolean",
            "description": "Whether this is a public Cyberimpact group."
          }
        },
        "additionalProperties": false,
        "required": [
          "title",
          "isPublic"
        ],
        "description": "Input for creating a Cyberimpact group."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Cyberimpact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "group"
        ],
        "description": "The created Cyberimpact group response."
      }
    },
    {
      "id": "cyberimpact.create_member",
      "service": "cyberimpact",
      "name": "create_member",
      "description": "Add a member to Cyberimpact and optionally subscribe them to groups.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The member email address.",
            "format": "email"
          },
          "gender": {
            "type": "string",
            "enum": [
              "m",
              "f",
              "o"
            ],
            "description": "The member gender code accepted by Cyberimpact."
          },
          "groupIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "A Cyberimpact group ID."
            },
            "description": "Cyberimpact group IDs to send as the official CSV groups field.",
            "minItems": 1
          },
          "firstname": {
            "type": "string",
            "minLength": 1,
            "description": "The member first name."
          },
          "lastname": {
            "type": "string",
            "minLength": 1,
            "description": "The member last name."
          },
          "company": {
            "type": "string",
            "minLength": 1,
            "description": "The member company name."
          },
          "language": {
            "type": "string",
            "enum": [
              "en_ca",
              "fr_ca"
            ],
            "description": "The member language code accepted by Cyberimpact."
          },
          "birthdate": {
            "type": "string",
            "description": "The member birthdate in yyyy-mm-dd format.",
            "format": "date"
          },
          "postalCode": {
            "type": "string",
            "minLength": 1,
            "description": "The member postal code."
          },
          "country": {
            "type": "string",
            "minLength": 1,
            "description": "The member ISO 3166-1 alpha-2 country code."
          },
          "note": {
            "type": "string",
            "minLength": 1,
            "description": "A note stored on the member."
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "description": "A custom field value."
            },
            "description": "Custom field values keyed by Cyberimpact custom field ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "description": "Input for creating a Cyberimpact member."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "member": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Cyberimpact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "member"
        ],
        "description": "The created Cyberimpact member response."
      }
    },
    {
      "id": "cyberimpact.create_template",
      "service": "cyberimpact",
      "name": "create_template",
      "description": "Create a Cyberimpact email template with HTML or plain text body content.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The template title."
          },
          "bodyHtml": {
            "type": "string",
            "minLength": 1,
            "description": "The HTML body for the template."
          },
          "bodyText": {
            "type": "string",
            "minLength": 1,
            "description": "The plain text body for the template."
          }
        },
        "additionalProperties": false,
        "required": [
          "title"
        ],
        "description": "Input for creating a template."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "template": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Cyberimpact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "template"
        ],
        "description": "The created Cyberimpact template response."
      }
    },
    {
      "id": "cyberimpact.delete_group",
      "service": "cyberimpact",
      "name": "delete_group",
      "description": "Delete a Cyberimpact group by numerical ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Cyberimpact numerical ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for deleting a Cyberimpact group."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Status."
            },
            "description": "The raw Cyberimpact deletion map keyed by deleted resource identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "result"
        ],
        "description": "The Cyberimpact deletion response."
      }
    },
    {
      "id": "cyberimpact.delete_member",
      "service": "cyberimpact",
      "name": "delete_member",
      "description": "Delete a Cyberimpact member by email address or numerical member ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The member email address or numerical member ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "key"
        ],
        "description": "Input for deleting a Cyberimpact member."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Status."
            },
            "description": "The raw Cyberimpact deletion map keyed by deleted resource identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "result"
        ],
        "description": "The Cyberimpact deletion response."
      }
    },
    {
      "id": "cyberimpact.delete_template",
      "service": "cyberimpact",
      "name": "delete_template",
      "description": "Delete a Cyberimpact email template by numerical ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Cyberimpact numerical ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for deleting a Cyberimpact template."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Status."
            },
            "description": "The raw Cyberimpact deletion map keyed by deleted resource identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "result"
        ],
        "description": "The Cyberimpact deletion response."
      }
    },
    {
      "id": "cyberimpact.get_group",
      "service": "cyberimpact",
      "name": "get_group",
      "description": "Retrieve a Cyberimpact group by numerical ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Cyberimpact numerical ID."
          },
          "dateReturnFormat": {
            "type": "string",
            "enum": [
              "ISO8601",
              "ATOM"
            ],
            "description": "The date format Cyberimpact should use in responses."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Cyberimpact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "group"
        ],
        "description": "The Cyberimpact group response."
      }
    },
    {
      "id": "cyberimpact.get_member",
      "service": "cyberimpact",
      "name": "get_member",
      "description": "Retrieve a Cyberimpact member by email address or numerical member ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The member email address or numerical member ID."
          },
          "dateReturnFormat": {
            "type": "string",
            "enum": [
              "ISO8601",
              "ATOM"
            ],
            "description": "The date format Cyberimpact should use in responses."
          }
        },
        "additionalProperties": false,
        "required": [
          "key"
        ],
        "description": "Input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "member": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Cyberimpact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "member"
        ],
        "description": "The Cyberimpact member response."
      }
    },
    {
      "id": "cyberimpact.get_template",
      "service": "cyberimpact",
      "name": "get_template",
      "description": "Retrieve a Cyberimpact email template by numerical ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Cyberimpact numerical ID."
          },
          "dateReturnFormat": {
            "type": "string",
            "enum": [
              "ISO8601",
              "ATOM"
            ],
            "description": "The date format Cyberimpact should use in responses."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "template": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Cyberimpact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "template"
        ],
        "description": "The Cyberimpact template response."
      }
    },
    {
      "id": "cyberimpact.list_groups",
      "service": "cyberimpact",
      "name": "list_groups",
      "description": "Retrieve a paginated list of Cyberimpact groups.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page of results to view."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "description": "The number of results per page."
          },
          "sort": {
            "type": "string",
            "enum": [
              "group_asc",
              "group_desc",
              "nbmember_asc",
              "nbmember_desc",
              "type_asc",
              "type_desc",
              "nbnewsletter_asc",
              "nbnewsletter_desc",
              "date_asc",
              "date_desc"
            ],
            "description": "The sort order."
          },
          "dateReturnFormat": {
            "type": "string",
            "enum": [
              "ISO8601",
              "ATOM"
            ],
            "description": "The date format Cyberimpact should use in responses."
          }
        },
        "additionalProperties": false,
        "description": "Filters for listing Cyberimpact groups."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Cyberimpact object."
            },
            "description": "Group objects returned by Cyberimpact."
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of records returned by Cyberimpact."
          },
          "page": {
            "type": "integer",
            "description": "The current Cyberimpact page number."
          },
          "limit": {
            "type": "integer",
            "description": "The Cyberimpact page size."
          },
          "sort": {
            "type": "string",
            "description": "The Cyberimpact sort value returned for this response."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Cyberimpact response payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "groups",
          "totalCount",
          "page",
          "limit",
          "sort",
          "raw"
        ],
        "description": "Paginated Cyberimpact groups response."
      }
    },
    {
      "id": "cyberimpact.list_members",
      "service": "cyberimpact",
      "name": "list_members",
      "description": "Retrieve a paginated list of Cyberimpact members with optional status, date, and sort filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page of results to view."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "description": "The number of results per page."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "orphans",
              "all"
            ],
            "description": "The status filter."
          },
          "sort": {
            "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"
            ],
            "description": "The sort order."
          },
          "joinedOnFrom": {
            "type": "string",
            "description": "Only return members joined on or after this date.",
            "format": "date"
          },
          "joinedOnTo": {
            "type": "string",
            "description": "Only return members joined on or before this date.",
            "format": "date"
          },
          "updatedOnFrom": {
            "type": "string",
            "description": "Only return members updated on or after this date.",
            "format": "date"
          },
          "updatedOnTo": {
            "type": "string",
            "description": "Only return members updated on or before this date.",
            "format": "date"
          },
          "dateReturnFormat": {
            "type": "string",
            "enum": [
              "ISO8601",
              "ATOM"
            ],
            "description": "The date format Cyberimpact should use in responses."
          }
        },
        "additionalProperties": false,
        "description": "Filters for listing Cyberimpact members."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "members": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Cyberimpact object."
            },
            "description": "Member objects returned by Cyberimpact."
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of records returned by Cyberimpact."
          },
          "page": {
            "type": "integer",
            "description": "The current Cyberimpact page number."
          },
          "limit": {
            "type": "integer",
            "description": "The Cyberimpact page size."
          },
          "sort": {
            "type": "string",
            "description": "The Cyberimpact sort value returned for this response."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Cyberimpact response payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "members",
          "totalCount",
          "page",
          "limit",
          "sort",
          "raw"
        ],
        "description": "Paginated Cyberimpact members response."
      }
    },
    {
      "id": "cyberimpact.list_templates",
      "service": "cyberimpact",
      "name": "list_templates",
      "description": "Retrieve a paginated list of Cyberimpact email templates.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page of results to view."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "description": "The number of results per page."
          },
          "sort": {
            "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"
            ],
            "description": "The sort order."
          },
          "dateReturnFormat": {
            "type": "string",
            "enum": [
              "ISO8601",
              "ATOM"
            ],
            "description": "The date format Cyberimpact should use in responses."
          }
        },
        "additionalProperties": false,
        "description": "Filters for listing templates."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "templates": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Cyberimpact object."
            },
            "description": "Template objects returned by Cyberimpact."
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of records returned by Cyberimpact."
          },
          "page": {
            "type": "integer",
            "description": "The current Cyberimpact page number."
          },
          "limit": {
            "type": "integer",
            "description": "The Cyberimpact page size."
          },
          "sort": {
            "type": "string",
            "description": "The Cyberimpact sort value returned for this response."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Cyberimpact response payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "templates",
          "totalCount",
          "page",
          "limit",
          "sort",
          "raw"
        ],
        "description": "Paginated Cyberimpact templates response."
      }
    },
    {
      "id": "cyberimpact.replace_template",
      "service": "cyberimpact",
      "name": "replace_template",
      "description": "Replace a Cyberimpact email template by numerical ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Cyberimpact numerical ID."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The template title."
          },
          "bodyHtml": {
            "type": "string",
            "minLength": 1,
            "description": "The HTML body for the template."
          },
          "bodyText": {
            "type": "string",
            "minLength": 1,
            "description": "The plain text body for the template."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "title"
        ],
        "description": "Input for replacing a template."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "template": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Cyberimpact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "template"
        ],
        "description": "The replaced Cyberimpact template response."
      }
    },
    {
      "id": "cyberimpact.update_group",
      "service": "cyberimpact",
      "name": "update_group",
      "description": "Edit the title or visibility of a static Cyberimpact group.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Cyberimpact numerical ID."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The group name."
          },
          "isPublic": {
            "type": "boolean",
            "description": "Whether this is a public Cyberimpact group."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for editing a Cyberimpact group."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Cyberimpact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "group"
        ],
        "description": "The updated Cyberimpact group response."
      }
    },
    {
      "id": "cyberimpact.update_member",
      "service": "cyberimpact",
      "name": "update_member",
      "description": "Edit one or more fields on a Cyberimpact member by email address or member ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The member email address or numerical member ID."
          },
          "email": {
            "type": "string",
            "description": "The member email address.",
            "format": "email"
          },
          "gender": {
            "type": "string",
            "enum": [
              "m",
              "f",
              "o"
            ],
            "description": "The member gender code accepted by Cyberimpact."
          },
          "groupIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "A Cyberimpact group ID."
            },
            "description": "Cyberimpact group IDs to send as the official CSV groups field.",
            "minItems": 1
          },
          "firstname": {
            "type": "string",
            "minLength": 1,
            "description": "The member first name."
          },
          "lastname": {
            "type": "string",
            "minLength": 1,
            "description": "The member last name."
          },
          "company": {
            "type": "string",
            "minLength": 1,
            "description": "The member company name."
          },
          "language": {
            "type": "string",
            "enum": [
              "en_ca",
              "fr_ca"
            ],
            "description": "The member language code accepted by Cyberimpact."
          },
          "birthdate": {
            "type": "string",
            "description": "The member birthdate in yyyy-mm-dd format.",
            "format": "date"
          },
          "postalCode": {
            "type": "string",
            "minLength": 1,
            "description": "The member postal code."
          },
          "country": {
            "type": "string",
            "minLength": 1,
            "description": "The member ISO 3166-1 alpha-2 country code."
          },
          "note": {
            "type": "string",
            "minLength": 1,
            "description": "A note stored on the member."
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "description": "A custom field value."
            },
            "description": "Custom field values keyed by Cyberimpact custom field ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "key"
        ],
        "description": "Input for editing a Cyberimpact member."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "member": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Cyberimpact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "member"
        ],
        "description": "The updated Cyberimpact member response."
      }
    }
  ]
}
