naftiko: 1.0.0-alpha2 info: label: AppConnect V3 — Email Campaigns description: 'AppConnect V3 — Email Campaigns. 11 operations. Lead operation: GET a Collection of Email Campaigns. Self-contained Naftiko capability covering one Constant Contact business surface.' tags: - Constant Contact - Email Campaigns created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: CONSTANT_CONTACT_API_KEY: CONSTANT_CONTACT_API_KEY capability: consumes: - type: http namespace: v3-email-campaigns baseUri: https://api.cc.email/v3 description: AppConnect V3 — Email Campaigns business capability. Self-contained, no shared references. resources: - name: emails path: /emails operations: - name: retrieveemailcampaignsusingget method: GET description: GET a Collection of Email Campaigns outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Specifies the number of campaigns to display on each page of output that is returned (from return 1 - 500). The default returns 50 campaigns per page. - name: before_date in: query type: string description: Use to return email campaigns with `updated_at` timestamps that are before a specific date and time (in ISO-8601 format). Use with the `after_date` query parame - name: after_date in: query type: string description: Use to return email campaigns with last `updated_at` timestamps that are after a specific date and time (in ISO-8601 format). Use with the `before_date` query p - name: createemailcampaignusingpost method: POST description: POST (Create) a New Email Campaign outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: string description: A JSON request body that contains the email content. required: true - name: emails-activities-campaign_activity_id path: /emails/activities/{campaign_activity_id} operations: - name: retrieveemailcampaignactivityusingget method: GET description: GET a Single Email Campaign Activity outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The unique ID for an email campaign activity. required: true - name: include in: query type: string description: Use the `include` query parameter to enter a comma separated list of additional email campaign activity properties for the V3 API to return. Valid values are `p - name: updateemailcampaignactivityusingput method: PUT description: PUT (Update) An Email Campaign Activity outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The unique ID for the email campaign activity you are updating. required: true - name: body in: body type: string description: A request body payload that contains the complete email campaign activity with your changes. required: true - name: emails-activities-campaign_activity_id-non_opener_resends path: /emails/activities/{campaign_activity_id}/non_opener_resends operations: - name: retrieveresendtononopenersusingget method: GET description: GET Details for a Resend to Non-openers Campaign Activity outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The unique ID for the primary email campaign activity. required: true - name: createresendtononopenersusingpost method: POST description: POST a Resend to Non-openers Campaign Activity outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The unique ID for the primary email campaign activity. required: true - name: resend_schedule in: body type: string description: A JSON request body that specifies when to resend the campaign activity to non-openers. required: true - name: emails-activities-campaign_activity_id-non_opener_resends-resend_request_id path: /emails/activities/{campaign_activity_id}/non_opener_resends/{resend_request_id} operations: - name: deleteresendtononopenersusingdelete method: DELETE description: DELETE a Resend to Non Openers Activity outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The unique ID for the primary email campaign activity. required: true - name: resend_request_id in: path type: string description: 'The unique ID associated with the resend for the email campaign activity (for example: `389093`). If the email campaign activity is currently in draft status, s' required: true - name: emails-campaign_id_xrefs path: /emails/campaign_id_xrefs operations: - name: retrievexrefmappingsusingget method: GET description: GET a Collection of V2 and V3 API Email Campaign Identifiers outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: v2_email_campaign_ids in: query type: string description: Comma separated list of V2 API `campaignId` values. You can enter up to 50 V2 `campaignId` values in each request. required: true - name: emails-campaign_id path: /emails/{campaign_id} operations: - name: retrieveemailcampaignusingget method: GET description: GET Details About a Single Email Campaign outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_id in: path type: string description: The ID (UUID format) that uniquely identifies this email campaign. required: true - name: removeemailcampaignusingdelete method: DELETE description: DELETE an Email Campaign outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_id in: path type: string description: The unique ID for the email campaign you are deleting. required: true - name: renameemailcampaignusingpatch method: PATCH description: PATCH (Update) an Email Campaign Name outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_id in: path type: string description: The unique identifier for an email campaign. required: true - name: body in: body type: string description: A JSON payload that contains the new email campaign name. required: true exposes: - type: rest namespace: v3-email-campaigns-rest port: 8080 description: REST adapter for AppConnect V3 — Email Campaigns. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/emails name: emails description: REST surface for emails. operations: - method: GET name: retrieveemailcampaignsusingget description: GET a Collection of Email Campaigns call: v3-email-campaigns.retrieveemailcampaignsusingget with: limit: rest.limit before_date: rest.before_date after_date: rest.after_date outputParameters: - type: object mapping: $. - method: POST name: createemailcampaignusingpost description: POST (Create) a New Email Campaign call: v3-email-campaigns.createemailcampaignusingpost with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/emails/activities/{campaign-activity-id} name: emails-activities-campaign-activity-id description: REST surface for emails-activities-campaign_activity_id. operations: - method: GET name: retrieveemailcampaignactivityusingget description: GET a Single Email Campaign Activity call: v3-email-campaigns.retrieveemailcampaignactivityusingget with: campaign_activity_id: rest.campaign_activity_id include: rest.include outputParameters: - type: object mapping: $. - method: PUT name: updateemailcampaignactivityusingput description: PUT (Update) An Email Campaign Activity call: v3-email-campaigns.updateemailcampaignactivityusingput with: campaign_activity_id: rest.campaign_activity_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/emails/activities/{campaign-activity-id}/non-opener-resends name: emails-activities-campaign-activity-id-non-opener-resends description: REST surface for emails-activities-campaign_activity_id-non_opener_resends. operations: - method: GET name: retrieveresendtononopenersusingget description: GET Details for a Resend to Non-openers Campaign Activity call: v3-email-campaigns.retrieveresendtononopenersusingget with: campaign_activity_id: rest.campaign_activity_id outputParameters: - type: object mapping: $. - method: POST name: createresendtononopenersusingpost description: POST a Resend to Non-openers Campaign Activity call: v3-email-campaigns.createresendtononopenersusingpost with: campaign_activity_id: rest.campaign_activity_id resend_schedule: rest.resend_schedule outputParameters: - type: object mapping: $. - path: /v1/emails/activities/{campaign-activity-id}/non-opener-resends/{resend-request-id} name: emails-activities-campaign-activity-id-non-opener-resends-resend-request-id description: REST surface for emails-activities-campaign_activity_id-non_opener_resends-resend_request_id. operations: - method: DELETE name: deleteresendtononopenersusingdelete description: DELETE a Resend to Non Openers Activity call: v3-email-campaigns.deleteresendtononopenersusingdelete with: campaign_activity_id: rest.campaign_activity_id resend_request_id: rest.resend_request_id outputParameters: - type: object mapping: $. - path: /v1/emails/campaign-id-xrefs name: emails-campaign-id-xrefs description: REST surface for emails-campaign_id_xrefs. operations: - method: GET name: retrievexrefmappingsusingget description: GET a Collection of V2 and V3 API Email Campaign Identifiers call: v3-email-campaigns.retrievexrefmappingsusingget with: v2_email_campaign_ids: rest.v2_email_campaign_ids outputParameters: - type: object mapping: $. - path: /v1/emails/{campaign-id} name: emails-campaign-id description: REST surface for emails-campaign_id. operations: - method: GET name: retrieveemailcampaignusingget description: GET Details About a Single Email Campaign call: v3-email-campaigns.retrieveemailcampaignusingget with: campaign_id: rest.campaign_id outputParameters: - type: object mapping: $. - method: DELETE name: removeemailcampaignusingdelete description: DELETE an Email Campaign call: v3-email-campaigns.removeemailcampaignusingdelete with: campaign_id: rest.campaign_id outputParameters: - type: object mapping: $. - method: PATCH name: renameemailcampaignusingpatch description: PATCH (Update) an Email Campaign Name call: v3-email-campaigns.renameemailcampaignusingpatch with: campaign_id: rest.campaign_id body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: v3-email-campaigns-mcp port: 9090 transport: http description: MCP adapter for AppConnect V3 — Email Campaigns. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-collection-email-campaigns description: GET a Collection of Email Campaigns hints: readOnly: true destructive: false idempotent: true call: v3-email-campaigns.retrieveemailcampaignsusingget with: limit: tools.limit before_date: tools.before_date after_date: tools.after_date outputParameters: - type: object mapping: $. - name: post-create-new-email-campaign description: POST (Create) a New Email Campaign hints: readOnly: false destructive: false idempotent: false call: v3-email-campaigns.createemailcampaignusingpost with: body: tools.body outputParameters: - type: object mapping: $. - name: get-single-email-campaign-activity description: GET a Single Email Campaign Activity hints: readOnly: true destructive: false idempotent: true call: v3-email-campaigns.retrieveemailcampaignactivityusingget with: campaign_activity_id: tools.campaign_activity_id include: tools.include outputParameters: - type: object mapping: $. - name: put-update-email-campaign-activity description: PUT (Update) An Email Campaign Activity hints: readOnly: false destructive: false idempotent: true call: v3-email-campaigns.updateemailcampaignactivityusingput with: campaign_activity_id: tools.campaign_activity_id body: tools.body outputParameters: - type: object mapping: $. - name: get-details-resend-non-openers description: GET Details for a Resend to Non-openers Campaign Activity hints: readOnly: true destructive: false idempotent: true call: v3-email-campaigns.retrieveresendtononopenersusingget with: campaign_activity_id: tools.campaign_activity_id outputParameters: - type: object mapping: $. - name: post-resend-non-openers-campaign description: POST a Resend to Non-openers Campaign Activity hints: readOnly: false destructive: false idempotent: false call: v3-email-campaigns.createresendtononopenersusingpost with: campaign_activity_id: tools.campaign_activity_id resend_schedule: tools.resend_schedule outputParameters: - type: object mapping: $. - name: delete-resend-non-openers-activity description: DELETE a Resend to Non Openers Activity hints: readOnly: false destructive: true idempotent: true call: v3-email-campaigns.deleteresendtononopenersusingdelete with: campaign_activity_id: tools.campaign_activity_id resend_request_id: tools.resend_request_id outputParameters: - type: object mapping: $. - name: get-collection-v2-and-v3 description: GET a Collection of V2 and V3 API Email Campaign Identifiers hints: readOnly: true destructive: false idempotent: true call: v3-email-campaigns.retrievexrefmappingsusingget with: v2_email_campaign_ids: tools.v2_email_campaign_ids outputParameters: - type: object mapping: $. - name: get-details-about-single-email description: GET Details About a Single Email Campaign hints: readOnly: true destructive: false idempotent: true call: v3-email-campaigns.retrieveemailcampaignusingget with: campaign_id: tools.campaign_id outputParameters: - type: object mapping: $. - name: delete-email-campaign description: DELETE an Email Campaign hints: readOnly: false destructive: true idempotent: true call: v3-email-campaigns.removeemailcampaignusingdelete with: campaign_id: tools.campaign_id outputParameters: - type: object mapping: $. - name: patch-update-email-campaign-name description: PATCH (Update) an Email Campaign Name hints: readOnly: false destructive: false idempotent: true call: v3-email-campaigns.renameemailcampaignusingpatch with: campaign_id: tools.campaign_id body: tools.body outputParameters: - type: object mapping: $.