openapi: 3.1.0
info:
  title: Partner Event Notifications API
  version: '16'
  description: |
    Event Notifications (also known as webhooks or postbacks) are HTTP requests that **impact.com sends to your server** in real time when relevant events occur — actions tracked, clicks credited, status changes, and so on.

    This is an **inbound** integration: you configure a URL in your impact.com account, and impact.com fires HTTP requests at that URL when events happen. You don't call any impact.com endpoint to receive notifications.

    **How it works:**

    1. In your impact.com partner account, configure an Event Notification URL.
    2. Use placeholder tokens like `{CampaignId}`, `{ActionId}`, `{Status}`, `{Payout}` in either the URL (for GET delivery) or the JSON request body (for POST delivery). impact.com substitutes the real values at fire time.
    3. impact.com calls your URL whenever a matching event occurs.
    4. Your server returns a `2xx` response to acknowledge receipt. Non-`2xx` responses are retried by impact.com.

    This spec documents the **shape of the request impact.com sends to your server** — it is not an endpoint you call.
  contact:
    name: impact.com Developer Support
    url: https://app.impact.com/secure/help/contact-support.ihtml
servers:
- url: https://your-server.example.com
  description: Replace with the URL you configured in your impact.com Event Notifications settings. impact.com will send requests to this URL.
tags:
- name: Event Notifications
  description: Inbound webhook payloads that impact.com sends to a partner-configured URL when events occur.
paths:
  /your-configured-path:
    post:
      operationId: receiveEventNotificationPost
      tags:
      - Event Notifications
      summary: Receive an event notification (POST)
      description: |
        impact.com sends a POST request with a JSON body to your configured URL when an event occurs. Your server should return a `2xx` response to acknowledge successful receipt.

        The fields included in the payload are determined by the URL template / body template you configure in impact.com. The schema below shows the most common fields.
      requestBody:
        description: Event notification payload sent by impact.com.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventNotificationPayload'
      responses:
        '200':
          description: Your server has acknowledged the notification successfully. impact.com will not retry.
        '202':
          description: Accepted — same effect as 200 from impact.com's perspective.
    get:
      operationId: receiveEventNotificationGet
      tags:
      - Event Notifications
      summary: Receive an event notification (GET)
      description: |
        impact.com sends a GET request to your configured URL with event data as query-string parameters. This delivery mode is typically used for simple pixel-style integrations.

        The query parameters present depend on the URL template you configure in your impact.com Event Notifications settings.
      parameters:
      - name: campaign_id
        in: query
        schema:
          type: string
        description: Unique identifier of the brand program the event belongs to.
        example: '10306'
      - name: action_id
        in: query
        schema:
          type: string
        description: Unique identifier of the tracked action.
        example: '1234567890'
      - name: status
        in: query
        schema:
          type: string
        description: 'Status of the action at the time of notification (e.g., `APPROVED`, `PENDING`, `REVERSED`).'
        example: APPROVED
      - name: payout
        in: query
        schema:
          type: string
        description: Commission amount paid to the partner for this action, as a decimal string.
        example: '5.00'
      responses:
        '200':
          description: Your server has acknowledged the notification successfully.
        '202':
          description: Accepted — same effect as 200 from impact.com's perspective.
components:
  schemas:
    EventNotificationPayload:
      type: object
      description: |
        Shape of the JSON body impact.com posts to your configured URL. Fields are populated based on the body template you set up in your Event Notifications settings — partners typically include identifiers, status, payout amount, and any product-line detail relevant to their integration.
      properties:
        campaign_id:
          type: string
          description: Unique identifier of the brand program the event belongs to.
          example: '10306'
        action_id:
          type: string
          description: Unique identifier of the tracked action this notification is about.
          example: '1234567890'
        status:
          type: string
          description: 'Current status of the action at the time of notification (e.g., `APPROVED`, `PENDING`, `REVERSED`).'
          example: APPROVED
        payout:
          type: string
          description: Commission amount paid to the partner for this action, as a decimal string.
          example: '5.00'
        items:
          type: array
          description: Per-line-item detail for the action, when the brand sends SKU-level data.
          items:
            $ref: '#/components/schemas/EventNotificationItem'
    EventNotificationItem:
      type: object
      description: A single product line item attached to the action.
      properties:
        sku:
          type: string
          description: The brand's SKU for the purchased product.
          example: APP-0016
        qty:
          type: string
          description: Quantity purchased, as a decimal string.
          example: '1'
        amt:
          type: string
          description: Total amount for this line item, as a decimal string.
          example: '719.10'
x-default-client: cURL
