naftiko: 1.0.0-alpha2 info: label: AppConnect V3 — Email Reporting description: 'AppConnect V3 — Email Reporting. 12 operations. Lead operation: GET an Email Links Report. Self-contained Naftiko capability covering one Constant Contact business surface.' tags: - Constant Contact - Email Reporting 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-reporting baseUri: https://api.cc.email/v3 description: AppConnect V3 — Email Reporting business capability. Self-contained, no shared references. resources: - name: reports-email_reports-campaign_activity_id-links path: /reports/email_reports/{campaign_activity_id}/links operations: - name: getcampaignactivitylinkstats method: GET description: GET an Email Links Report 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: no_clicks in: query type: boolean description: Set this query parameter to `true` to return details for links that were not clicked in the response results. - name: reports-email_reports-campaign_activity_id-tracking-bounces path: /reports/email_reports/{campaign_activity_id}/tracking/bounces operations: - name: getbounces method: GET description: GET an Email Bounces Report outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The ID that uniquely identifies the email campaign activity to use for this report. required: true - name: bounce_code in: query type: array description: To return results for a specific bounce code, select the `bounce_code` from the drop-down list. To return results for multiple codes, repeat the bounce code par - name: limit in: query type: string description: The number of tracking activities to return on a page. - name: reports-email_reports-campaign_activity_id-tracking-clicks path: /reports/email_reports/{campaign_activity_id}/tracking/clicks operations: - name: getclicks method: GET description: GET an Email Clicks Report outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The ID that uniquely identifies the email campaign activity to use for this report. required: true - name: url_id in: query type: integer description: The ID that uniquely identifies a single link URL for which you want to get a clicks report. - name: limit in: query type: string description: The number of tracking activities to return on a page. - name: reports-email_reports-campaign_activity_id-tracking-didnotopens path: /reports/email_reports/{campaign_activity_id}/tracking/didnotopens operations: - name: getdidnotopens method: GET description: GET an Email Did Not Opens Report outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The ID that uniquely identifies the email campaign activity to use for this report. required: true - name: limit in: query type: string description: The number of tracking activities to return on a page. - name: reports-email_reports-campaign_activity_id-tracking-forwards path: /reports/email_reports/{campaign_activity_id}/tracking/forwards operations: - name: getforwards method: GET description: GET an Email Forwards Report outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The ID that uniquely identifies the email campaign activity to use for this report. required: true - name: limit in: query type: string description: The number of tracking activities to return on a page. - name: reports-email_reports-campaign_activity_id-tracking-opens path: /reports/email_reports/{campaign_activity_id}/tracking/opens operations: - name: getopens method: GET description: GET an Email Opens Report 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 to use for this report. required: true - name: limit in: query type: string description: The number of tracking activities to return on a page. - name: reports-email_reports-campaign_activity_id-tracking-optouts path: /reports/email_reports/{campaign_activity_id}/tracking/optouts operations: - name: getoptouts method: GET description: GET an Email Opt-outs Report outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The ID that uniquely identifies the email campaign activity to use for this report. required: true - name: limit in: query type: string description: The number of tracking activities to return on a page. - name: reports-email_reports-campaign_activity_id-tracking-sends path: /reports/email_reports/{campaign_activity_id}/tracking/sends operations: - name: getsends method: GET description: GET an Email Sends Report 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 to use for this report. required: true - name: limit in: query type: string description: The number of tracking activities to return on a page. - name: reports-email_reports-campaign_activity_id-tracking-unique_opens path: /reports/email_reports/{campaign_activity_id}/tracking/unique_opens operations: - name: getuniqueopens method: GET description: GET an Email Unique Opens Report outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_id in: path type: string description: The ID that uniquely identifies the email campaign activity to use for this report. required: true - name: limit in: query type: string description: The number of tracking activities to return on a page. - name: reports-stats-email_campaign_activities-campaign_activity_ids path: /reports/stats/email_campaign_activities/{campaign_activity_ids} operations: - name: getemailcampaignactivitysummary method: GET description: GET an Email Campaign Activity Stats Report outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_activity_ids in: path type: string description: A comma-separated list of `campaign_activity_id`s (UUID's). required: true - name: reports-stats-email_campaigns-campaign_ids path: /reports/stats/email_campaigns/{campaign_ids} operations: - name: getemailsummary method: GET description: GET an Email Campaign Stats Report outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: campaign_ids in: path type: string description: A comma-separated list of `campaign_id`s (UUID's). required: true - name: reports-summary_reports-email_campaign_summaries path: /reports/summary_reports/email_campaign_summaries operations: - name: getallbulkemailcampaignsummaries method: GET description: GET an Email Campaigns Summary Report outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: string description: Use the `limit` query parameter to limit the number of email campaign summaries to return on a single page. The default is `50` and the maximum is `500` per pag exposes: - type: rest namespace: v3-email-reporting-rest port: 8080 description: REST adapter for AppConnect V3 — Email Reporting. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/reports/email-reports/{campaign-activity-id}/links name: reports-email-reports-campaign-activity-id-links description: REST surface for reports-email_reports-campaign_activity_id-links. operations: - method: GET name: getcampaignactivitylinkstats description: GET an Email Links Report call: v3-email-reporting.getcampaignactivitylinkstats with: campaign_activity_id: rest.campaign_activity_id no_clicks: rest.no_clicks outputParameters: - type: object mapping: $. - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/bounces name: reports-email-reports-campaign-activity-id-tracking-bounces description: REST surface for reports-email_reports-campaign_activity_id-tracking-bounces. operations: - method: GET name: getbounces description: GET an Email Bounces Report call: v3-email-reporting.getbounces with: campaign_activity_id: rest.campaign_activity_id bounce_code: rest.bounce_code limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/clicks name: reports-email-reports-campaign-activity-id-tracking-clicks description: REST surface for reports-email_reports-campaign_activity_id-tracking-clicks. operations: - method: GET name: getclicks description: GET an Email Clicks Report call: v3-email-reporting.getclicks with: campaign_activity_id: rest.campaign_activity_id url_id: rest.url_id limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/didnotopens name: reports-email-reports-campaign-activity-id-tracking-didnotopens description: REST surface for reports-email_reports-campaign_activity_id-tracking-didnotopens. operations: - method: GET name: getdidnotopens description: GET an Email Did Not Opens Report call: v3-email-reporting.getdidnotopens with: campaign_activity_id: rest.campaign_activity_id limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/forwards name: reports-email-reports-campaign-activity-id-tracking-forwards description: REST surface for reports-email_reports-campaign_activity_id-tracking-forwards. operations: - method: GET name: getforwards description: GET an Email Forwards Report call: v3-email-reporting.getforwards with: campaign_activity_id: rest.campaign_activity_id limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/opens name: reports-email-reports-campaign-activity-id-tracking-opens description: REST surface for reports-email_reports-campaign_activity_id-tracking-opens. operations: - method: GET name: getopens description: GET an Email Opens Report call: v3-email-reporting.getopens with: campaign_activity_id: rest.campaign_activity_id limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/optouts name: reports-email-reports-campaign-activity-id-tracking-optouts description: REST surface for reports-email_reports-campaign_activity_id-tracking-optouts. operations: - method: GET name: getoptouts description: GET an Email Opt-outs Report call: v3-email-reporting.getoptouts with: campaign_activity_id: rest.campaign_activity_id limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/sends name: reports-email-reports-campaign-activity-id-tracking-sends description: REST surface for reports-email_reports-campaign_activity_id-tracking-sends. operations: - method: GET name: getsends description: GET an Email Sends Report call: v3-email-reporting.getsends with: campaign_activity_id: rest.campaign_activity_id limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/unique-opens name: reports-email-reports-campaign-activity-id-tracking-unique-opens description: REST surface for reports-email_reports-campaign_activity_id-tracking-unique_opens. operations: - method: GET name: getuniqueopens description: GET an Email Unique Opens Report call: v3-email-reporting.getuniqueopens with: campaign_activity_id: rest.campaign_activity_id limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/reports/stats/email-campaign-activities/{campaign-activity-ids} name: reports-stats-email-campaign-activities-campaign-activity-ids description: REST surface for reports-stats-email_campaign_activities-campaign_activity_ids. operations: - method: GET name: getemailcampaignactivitysummary description: GET an Email Campaign Activity Stats Report call: v3-email-reporting.getemailcampaignactivitysummary with: campaign_activity_ids: rest.campaign_activity_ids outputParameters: - type: object mapping: $. - path: /v1/reports/stats/email-campaigns/{campaign-ids} name: reports-stats-email-campaigns-campaign-ids description: REST surface for reports-stats-email_campaigns-campaign_ids. operations: - method: GET name: getemailsummary description: GET an Email Campaign Stats Report call: v3-email-reporting.getemailsummary with: campaign_ids: rest.campaign_ids outputParameters: - type: object mapping: $. - path: /v1/reports/summary-reports/email-campaign-summaries name: reports-summary-reports-email-campaign-summaries description: REST surface for reports-summary_reports-email_campaign_summaries. operations: - method: GET name: getallbulkemailcampaignsummaries description: GET an Email Campaigns Summary Report call: v3-email-reporting.getallbulkemailcampaignsummaries with: limit: rest.limit outputParameters: - type: object mapping: $. - type: mcp namespace: v3-email-reporting-mcp port: 9090 transport: http description: MCP adapter for AppConnect V3 — Email Reporting. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-email-links-report description: GET an Email Links Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getcampaignactivitylinkstats with: campaign_activity_id: tools.campaign_activity_id no_clicks: tools.no_clicks outputParameters: - type: object mapping: $. - name: get-email-bounces-report description: GET an Email Bounces Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getbounces with: campaign_activity_id: tools.campaign_activity_id bounce_code: tools.bounce_code limit: tools.limit outputParameters: - type: object mapping: $. - name: get-email-clicks-report description: GET an Email Clicks Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getclicks with: campaign_activity_id: tools.campaign_activity_id url_id: tools.url_id limit: tools.limit outputParameters: - type: object mapping: $. - name: get-email-did-not-opens description: GET an Email Did Not Opens Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getdidnotopens with: campaign_activity_id: tools.campaign_activity_id limit: tools.limit outputParameters: - type: object mapping: $. - name: get-email-forwards-report description: GET an Email Forwards Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getforwards with: campaign_activity_id: tools.campaign_activity_id limit: tools.limit outputParameters: - type: object mapping: $. - name: get-email-opens-report description: GET an Email Opens Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getopens with: campaign_activity_id: tools.campaign_activity_id limit: tools.limit outputParameters: - type: object mapping: $. - name: get-email-opt-outs-report description: GET an Email Opt-outs Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getoptouts with: campaign_activity_id: tools.campaign_activity_id limit: tools.limit outputParameters: - type: object mapping: $. - name: get-email-sends-report description: GET an Email Sends Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getsends with: campaign_activity_id: tools.campaign_activity_id limit: tools.limit outputParameters: - type: object mapping: $. - name: get-email-unique-opens-report description: GET an Email Unique Opens Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getuniqueopens with: campaign_activity_id: tools.campaign_activity_id limit: tools.limit outputParameters: - type: object mapping: $. - name: get-email-campaign-activity-stats description: GET an Email Campaign Activity Stats Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getemailcampaignactivitysummary with: campaign_activity_ids: tools.campaign_activity_ids outputParameters: - type: object mapping: $. - name: get-email-campaign-stats-report description: GET an Email Campaign Stats Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getemailsummary with: campaign_ids: tools.campaign_ids outputParameters: - type: object mapping: $. - name: get-email-campaigns-summary-report description: GET an Email Campaigns Summary Report hints: readOnly: true destructive: false idempotent: true call: v3-email-reporting.getallbulkemailcampaignsummaries with: limit: tools.limit outputParameters: - type: object mapping: $.