MediaMath Campaigns API

Campaigns

Operations 11

POST /bulk_update/campaigns Bulk Update Campaigns #
GET /campaigns/{campaign_id} Get a Specific Campaign #
POST /campaigns/{campaign_id} Update a Campaign #
GET /campaigns List Campaigns #
POST /campaigns Create a Campaign #
GET /campaigns/{campaign_id}/history Campaign Audit Log #
POST /campaigns/{campaign_id}/dynamic_budget_allocation (Legacy) Update Specific Campaign Dynamic Budget Allocation #
POST /campaigns/{campaign_id}/copy Copy a Campaign #
POST /campaign_dba Update Campaign Dynamic Budget Allocation #
GET /campaigns/{campaign_id}/permissions List User Permissions for a Campaign #
POST /audit_log/campaigns Bulk Campaign Audit Log #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/mediamath-campaigns-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

mediamath-campaigns-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ad Servers Campaigns API
  description: 'MediaMath Campaign Management API


    [Postman Collection](https://apidocs.mediamath.com/guides/postman-collections)

    '
  version: 3.0.1807
  contact:
    url: https://support.infillion.com/
servers:
- url: https://api.mediamath.com/api/v3.0
  description: Live Server
security:
- Auth0:
  - offline_access
  - manage:services
tags:
- name: Campaigns
  description: Campaigns
paths:
  /bulk_update/campaigns:
    post:
      operationId: bulk-update-campaigns
      summary: Bulk Update Campaigns
      description: Update multiple campaigns
      responses:
        '200':
          $ref: '#/components/responses/campaign_bulk'
        '207':
          $ref: '#/components/responses/campaign_bulk'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
      requestBody:
        $ref: '#/components/requestBodies/campaign_bulk_update'
      tags:
      - Campaigns
  /campaigns/{campaign_id}:
    get:
      operationId: get-campaign
      summary: Get a Specific Campaign
      description: Get a campaign by ID
      tags:
      - Campaigns
      responses:
        '200':
          description: Campaign response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/campaign_full-2'
                - $ref: '#/components/schemas/campaign_full_extended-2'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
      parameters:
      - $ref: '#/components/parameters/extended'
      - schema:
          type: integer
        name: campaign_id
        in: path
        required: true
        description: Numeric ID of the campaign to get
    post:
      operationId: update-campaign
      summary: Update a Campaign
      description: Update a campaign by ID
      tags:
      - Campaigns
      responses:
        '200':
          $ref: '#/components/responses/campaign'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
        '409':
          $ref: '#/components/responses/error'
      requestBody:
        $ref: '#/components/requestBodies/campaign_update'
      parameters:
      - schema:
          type: integer
        name: campaign_id
        in: path
        required: true
        description: Numeric ID of the campaign to update
  /campaigns:
    get:
      operationId: list-campaigns
      summary: List Campaigns
      description: Get a list of campaigns. The data fetched for each campaign depends on the values of query params. For example, if you use query parameter `full` all properties are fetched.
      tags:
      - Campaigns
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_offset'
      - $ref: '#/components/parameters/sort_by'
      - $ref: '#/components/parameters/q'
      - $ref: '#/components/parameters/full'
      - $ref: '#/components/parameters/campaign_with'
      - name: live_only
        in: query
        required: false
        description: "If provided and true only campaigns with start_date < now and end_date > now will be returned. \nDefault value is false. Cannot be combined with filter_expired=true.\n"
        schema:
          type: boolean
      - name: filter_expired
        in: query
        required: false
        description: "If provided and true only campaigns with end_date > now will be returned. \nDefault value is false. Cannot be combined with live_only=true.\n"
        schema:
          type: boolean
      responses:
        '200':
          description: List campaigns response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/campaign_collection'
                - $ref: '#/components/schemas/campaign_collection_full'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
    post:
      operationId: create-campaign
      summary: Create a Campaign
      description: Create a campaign
      tags:
      - Campaigns
      requestBody:
        $ref: '#/components/requestBodies/campaign_create'
      responses:
        '201':
          $ref: '#/components/responses/campaign'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
  /campaigns/{campaign_id}/history:
    get:
      operationId: campaign-audit-log
      summary: Campaign Audit Log
      description: Get a list of changes made to this campaign
      tags:
      - Campaigns
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_offset'
      - in: path
        name: campaign_id
        schema:
          type: integer
        required: true
        description: Numeric ID of the campaign
      responses:
        '200':
          $ref: '#/components/responses/audit_log'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
  /campaigns/{campaign_id}/dynamic_budget_allocation:
    post:
      operationId: update-dba-single-legacy
      summary: (Legacy) Update Specific Campaign Dynamic Budget Allocation
      description: Legacy Endpoint - To be removed
      tags:
      - Campaigns
      parameters:
      - $ref: '#/components/parameters/full'
      - schema:
          type: integer
        name: campaign_id
        in: path
        required: true
        description: Numeric ID of the campaign
      responses:
        '200':
          description: DBA updated response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/campaign_dba_collection'
                - $ref: '#/components/schemas/campaign_dba_collection_full'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
        '503':
          $ref: '#/components/responses/error'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                dynamic_budget_allocation_applied:
                  type:
                  - string
                  - 'null'
                  format: date-time
                dynamic_budget_allocation_available:
                  type:
                  - string
                  - 'null'
                  format: date-time
  /campaigns/{campaign_id}/copy:
    description: Copy a campaign
    post:
      operationId: copy-campaign
      summary: Copy a Campaign
      description: Copy a campaign
      tags:
      - Campaigns
      parameters:
      - in: path
        name: campaign_id
        schema:
          type: integer
        required: true
        description: Numeric ID of the campaign object
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                advertiser_id:
                  type: integer
                name:
                  type: string
                  maxLength: 256
                start_date:
                  type: string
                  format: date-time
                end_date:
                  type: string
                  format: date-time
                merit_pixel_id:
                  type:
                  - integer
                  - 'null'
                  description: "Will be deprecated soon. \nIf `merit_pixel_id` is updated then `merit_pixels` will be synchronized with it. \nIf `merit_pixels` is updated then `merit_pixel_id` will be synchronized with it. \nUpdate both fields at the same time is not supported.\n"
                status:
                  type: boolean
                  default: true
                copy_assigned_site_lists:
                  type: boolean
                  default: false
                  description: If true copy everything under 'site lists'
                copy_vendor_contracts:
                  type: boolean
                  default: false
                  description: If true copy everything under 'vendor contracts'
                copy_brain_settings:
                  type: boolean
                  default: false
                  description: Used to be called 'remember_source'.  If true set the source_campaign_id to campaign id
                copy_audience_in_brain:
                  type: boolean
                  default: false
                  description: If true copy 'custom_brain_selections'
                copy_viewability:
                  type: boolean
                  default: false
                  description: If true then copy viewability fields
                budget:
                  type: object
                  properties:
                    flights:
                      type: array
                      items:
                        type: object
                        properties:
                          start_date:
                            type: string
                            format: date-time
                            example: '2019-08-24T14:15:22Z'
                          end_date:
                            type: string
                            format: date-time
                            example: '2019-08-24T14:15:22Z'
                          total_budget:
                            type: number
                            example: 0.1
                          total_impression_budget:
                            type:
                            - integer
                            - 'null'
                            example: 100
                            minimum: 1
                        required:
                        - start_date
                        - end_date
                        - total_budget
              required:
              - name
              - status
      responses:
        '201':
          $ref: '#/components/responses/campaign'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
  /campaign_dba:
    post:
      operationId: update-dba
      summary: Update Campaign Dynamic Budget Allocation
      description: This end point is restricted to a specific service account
      tags:
      - Campaigns
      responses:
        '200':
          $ref: '#/components/responses/dba_bulk'
        '207':
          $ref: '#/components/responses/dba_bulk'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
      requestBody:
        $ref: '#/components/requestBodies/dba'
  /campaigns/{campaign_id}/permissions:
    get:
      operationId: list-user-permissions-campaign
      summary: List User Permissions for a Campaign
      description: List user permissions for an campaign
      tags:
      - Campaigns
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_offset'
      - $ref: '#/components/parameters/sort_by'
      - $ref: '#/components/parameters/q'
      - in: path
        name: campaign_id
        schema:
          type: integer
        required: true
        description: Numeric ID of the campaign
      responses:
        '200':
          description: List user permissions response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/permission_campaign_with_user'
                  meta:
                    $ref: '#/components/schemas/list_metadata'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
  /audit_log/campaigns:
    post:
      operationId: campaign-audit-log-bulk
      summary: Bulk Campaign Audit Log
      description: Get a list of changes to these campaigns
      tags:
      - Campaigns
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_offset'
      responses:
        '200':
          $ref: '#/components/responses/audit_log_bulk'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
      requestBody:
        $ref: '#/components/requestBodies/id_list'
components:
  schemas:
    single_metadata:
      title: single_metadata
      type: object
      properties:
        status:
          type: string
          example: success
      required:
      - status
    campaign_budget:
      type: object
      properties:
        total_budget:
          type:
          - number
          - 'null'
          format: float
          deprecated: true
        total_impression_budget:
          type:
          - integer
          - 'null'
          deprecated: true
          format: int64
          minimum: 1
          maximum: 9223372036854776000
          example: 18789
        currency_code:
          type: string
          minLength: 3
          maxLength: 3
          example: USD
        margin_pct:
          type: number
          format: float
          minimum: 0
          maximum: 9999999.9999
        dynamic_budget_allocation_type:
          type: string
          enum:
          - SBA_AUTO_ALLOCATION
          - SBA_RECOMMENDATIONS_ONLY
          - 'OFF'
          default: 'OFF'
        dynamic_budget_allocation_applied:
          type: string
          format: date-time
        dynamic_budget_allocation_available:
          type: string
          format: date-time
    campaign_bulk:
      type: object
      allOf:
      - $ref: '#/components/schemas/campaign_base'
      - type: object
        required:
        - id
        properties:
          id:
            type: integer
            minimum: 1
            format: int32
            example: 67
          version:
            type: integer
            format: int32
            example: 1
          goals:
            $ref: '#/components/schemas/campaign_goals'
          duration:
            $ref: '#/components/schemas/campaign_duration'
          budget:
            allOf:
            - $ref: '#/components/schemas/campaign_budget'
            - type: object
              properties:
                flights:
                  type: array
                  items:
                    $ref: '#/components/schemas/campaign_budget_flights'
          frequency:
            $ref: '#/components/schemas/campaign_frequency'
          inventory:
            $ref: '#/components/schemas/campaign_inventory'
    campaign_identity:
      type: object
      properties:
        device_graph_only:
          type: boolean
          default: false
        bid_min_devices:
          type: integer
          format: int16
          minimum: -32768
          maximum: 32767
          default: 1
        connected_id_type:
          type:
          - string
          - 'null'
          enum:
          - DETERMINISTIC_FIRST
    campaign_goals:
      type: object
      properties:
        goal_type:
          type: string
          enum:
          - spend
          - reach
          - cpc
          - cpe
          - cpa
          - roi
          - ctr
          - vcr
          - viewability_rate
          - vcpm
          - cpcv
        goal_alert:
          type: number
          format: float
          minimum: 0
          maximum: 999.99
        goal_value:
          type: number
          format: float
          minimum: 0.0001
          maximum: 9999999.9999
        goal_category:
          type:
          - string
          - 'null'
          enum:
          - audience
          - engagement
          - response
    campaign_ad_server:
      type: object
      properties:
        ad_server_id:
          type: integer
          format: int32
          example: 19
        ad_server_username:
          type: string
          maxLength: 64
        ad_server_password:
          type: string
          maxLength: 64
        use_default_ad_server:
          type: boolean
          default: true
        ad_server_fee:
          type: number
          format: float
          minimum: 0
          maximum: 9999999.99
    campaign_duration:
      type: object
      description: Duration of campaigns must not exceed 36 months
      properties:
        start_date:
          type: string
          format: date-time
        end_date:
          type: string
          format: date-time
    campaign_budget_flights_create:
      type: object
      properties:
        start_date:
          type: string
          format: date-time
        end_date:
          type: string
          format: date-time
          description: The latest end date of flight must be no more than 36 months after the earliest start date
        total_budget:
          type: number
          format: float
        total_impression_budget:
          type:
          - integer
          - 'null'
          format: int64
          minimum: 1
          maximum: 9223372036854776000
          example: 12345
      required:
      - start_date
      - end_date
      - total_budget
    campaign_frequency:
      type: object
      properties:
        frequency_type:
          type: string
          enum:
          - even
          - asap
          - no-limit
          - t1-optimized
          - frequency_goal
        frequency_interval:
          type:
          - string
          - 'null'
          minLength: 1
          enum:
          - hour
          - day
          - week
          - month
          - not-applicable
          default: not-applicable
        frequency_amount:
          type:
          - integer
          - 'null'
          format: int32
          example: 10
        use_mm_freq:
          type: boolean
          deprecated: true
          default: false
        frequency_optimization:
          type: boolean
          default: false
    campaign_full_extended-2:
      title: campaign_response_extended
      type: object
      properties:
        data:
          $ref: '#/components/schemas/campaign_full_extended'
        meta:
          $ref: '#/components/schemas/single_metadata'
    campaign_collection_full:
      type: object
      title: campaign_collection_full
      properties:
        data:
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/campaign_full'
            - $ref: '#/components/schemas/campaign_with'
        meta:
          $ref: '#/components/schemas/list_metadata'
    permission_user_output:
      type: object
      properties:
        id:
          type: integer
        entity_type:
          type: string
        username:
          type: string
        active:
          type: boolean
        version:
          type: integer
        title:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        link_ldap:
          type: boolean
        link_saml:
          type: boolean
        phone:
          type: string
        mobile:
          type: string
        fax:
          type: string
        type:
          type: string
        role:
          type: string
        scope:
          type: string
        view_organizations:
          type: boolean
        edit_campaigns:
          type: boolean
        edit_margins_and_performance:
          type: boolean
        labs_enable_rmx:
          type: boolean
        creator_id:
          type: integer
        created_on:
          type: string
          format: date-time
          readOnly: true
        updated_on:
          type: string
          format: date-time
          readOnly: true
        last_login_on:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        access_internal_fees:
          type: boolean
        view_segments:
          type: boolean
        edit_segments:
          type: boolean
        view_data_definition:
          type: boolean
        edit_data_definition:
          type: boolean
        view_dmp_reports:
          type: boolean
        email:
          type: string
        permissions:
          type: object
          properties:
            organizations:
              type: array
              items:
                $ref: '#/components/schemas/permission'
            agencies:
              type: array
              items:
                $ref: '#/components/schemas/permission'
            advertisers:
              type: array
              items:
                $ref: '#/components/schemas/permission'
        roles:
          $ref: '#/components/schemas/roles'
        language:
          type: string
        zone_name:
          type: string
    campaign_dba_collection:
      type: object
      title: campaign_dba_collection
      properties:
        data:
          type: object
          properties:
            id:
              type: integer
            entity_type:
              type: string
            name:
              type: string
        meta:
          $ref: '#/components/schemas/list_metadata'
    campaign_pacing:
      type: object
      properties:
        pacing_alert:
          type: number
          format: float
          default: 0
          minimum: 0
          maximum: 999.99
        impression_cap_automatic:
          type: boolean
          default: false
        impression_cap_amount:
          type:
          - integer
          - 'null'
          format: int32
          example: 11
        impression_cap_type:
          type: string
          enum:
          - even
          - asap
          - no-limit
          default: no-limit
        spend_cap_type:
          type: string
          default: no-limit
          enum:
          - even
          - asap
          - no-limit
        spend_cap_amount:
          type:
          - number
          - 'null'
          format: float
          default: 0
          minimum: 0
          maximum: 9999999.99
        spend_cap_automatic:
          type: boolean
          default: true
        brain_intraday_pacing:
          type: boolean
          default: false
        spend_pace_ahead:
          description: feature still in development
          type: boolean
          default: false
        impression_pace_ahead:
          description: feature still in development
          type: boolean
          default: false
    campaign_base:
      type: object
      properties:
        archived:
          type: boolean
          default: false
        status:
          type: boolean
          default: true
        name:
          type: string
          minLength: 1
          maxLength: 256
        service_type:
          type: string
          enum:
          - SELF
          - MANAGED
        io_name:
          type: string
          maxLength: 256
        io_reference_num:
          type: string
          maxLength: 32
        is_programmatic_guaranteed:
          type: boolean
        political:
          type: boolean
          default: false
        source_campaign_id:
          type:
          - integer
          - 'null'
          format: int32
          example: 7
        zone_name:
          type: string
          minLength: 1
        viewability:
          $ref: '#/components/schemas/campaign_viewability'
        identity:
          $ref: '#/components/schemas/campaign_identity'
        ad_server:
          $ref: '#/components/schemas/campaign_ad_server'
        pacing:
          $ref: '#/components/schemas/campaign_pacing'
        attribution:
          $ref: '#/components/schemas/campaign_attribution'
        vendor_contracts:
          type: array
          items:
            $ref: '#/components/schemas/vendor_contract_base'
        mfa_avoidance:
          type: string
          enum:
          - INHERIT
          - ALLOW_ALL
          - EXCLUDE_MFA
        targeting_identity_level:
          type: string
          enum:
          - INHERIT
          - INDIVIDUAL
          - HOUSEHOLD
          default: INHERIT
    campaign_viewability:
      type:
      - object
      - 'null'
      required:
      - vendor_id
      - sample_rate
      - type
      properties:
        vendor_id:
          type: integer
          format: int32
          example: 34
        type:
          type: string
          enum:
          - AUTO_TAG
          - BYOV
        sample_rate:
          type: number
          format: float
          minimum: 0
          maximum: 1
    dba:
      type: array
      items:
        type: object
        properties:
          id:
            type: integer
            description: campaign id
          dynamic_budget_allocation_applied:
            type:
            - string
            - 'null'
            format: date-time
          dynamic_budget_allocation_available:
            type:
            - string
            - 'null'
            format: date-time
        required:
        - id
    campaign_dba_collection_full:
      type: object
      title: campaign_dba_collection_full
      properties:
        data:
          $ref: '#/components/schemas/campaign_full'
        meta:
          $ref: '#/components/schemas/single_metadata'
    vendor_contract_base:
      type: object
      required:
      - vendor_id
      properties:
        vendor_id:
          type: integer
          format: int32
          example: 23
        use_mm_contract:
          type: boolean
        price:
          type:
          - number
          - 'null'
          format: float
        rate_card_type:
          type:
          - string
          - 'null'
          deprecated: true
          enum:
          - CPM
          - FIXED
    campaign_full_with_inherited:
      type: object
      allOf:
      - $ref: '#/components/schemas/campaign_full'
      - type: object
        properties:
          inherited_mfa_avoidance:
            type: string
            description: available if mfa_avoidance = INHERIT
            enum:
            - INHERIT
            - ALLOW_ALL
            - EXCLUDE_MFA
          inherited_mfa_from:
            type: string
            description: available if mfa_avoidance = INHERIT
            enum:
            - Organization
            - Agency
            - Advertiser
            - Campaign
          inherited_targeting_identity_level:
            type: string
            description: available if targeting_identity_level = INHERIT
            enum:
            - INDIVIDUAL
            - HOUSEHOLD
    list_metadata:
      title: pagination metadata
      type: object
      properties:
        status:
          type: string
          example: success
          description: The status of the response, indicating success or failure.
        count:
          type: integer
          example: 10
          description: The number of items returned in the current response.
        total_count:
          type: integer
          example: 100
          description: The total number of items available in the dataset.
        offset:
          type: integer
          example: 0
          description: The offset from the start of the dataset, used for pagination.
        next_page:
          type: string
          description: The URL to fetch the next page of results.
        prev_page:
          type: string
          description: The URL to fetch the previous page of results.
      required:
      - status
      - count
    campaign_full-2:
      title: campaign_response
      type: object
      properties:
        data:
          $ref: '#/components/schemas/campaign_full_with_inherited'
        meta:
          $ref: '#/components/schemas/single_metadata'
    permission_flags:
      type: object
      properties:
        create:
          type: boolean
        read:
          type: boolean
        update:
          type: boolean
        delete:
          type: boolean
        inherited_from:
          type: string
    campaign_update:
      type: object
      allOf:
      - $ref: '#/components/schemas/campaign_base'
      - type: object
        properties:
          version:
            type: integer
            format: int32
            example: 4
          goals:
            $ref: '#/components/schemas/campaign_goals'
          budget:
            allOf:
            - $ref: '#/components/schemas/campaign_budget'
            - required:
              - currency_code
              - flights
              properties:
                flights:
                  type: array
                  minItems: 1
                  items:
                    $ref: '#/components/schemas/campaign_budget_flights'
          frequency:
            $ref: '#/components/schemas/campaign_frequency'
          inventory:
            $ref: '#/components/schemas/campaign_inventory'
          site_lists:
            type: array
            items:
              type: object
              required:
              - id
              - assigned
              properties:
                id:
                  type: integer
                  format: int32
                  example: 23
                assigned:
                  type: boolean
          custom_brain_selections:
            type: array
            items:
              type: object
              properties:
                selection_id:
                  type: integer
                  format: int32
                  example: 45
                selection_type:
                  enum:
                  - Audience Target
                  - Data Pixel
                  - Event Pixel
                  - Segment
                  - Dynamic
    campaign_with:
      type: object
      properties:
        advertiser:
          type: object
          description: available only if `with=advertiser`
          properties:
            id:
              type: integer
            name:
              type: string
        agency:
          type: object
          description: available only if `with=agency`
          properties:
            id:
              type: integer
            name:
              type: string
    campaign_full_extended:
      type: object
      allOf:
      - $ref: '#/components/schemas/campaign_full'
      - type: object
        properties:
          inherited_mfa_avoidance:
            type: string
            enum:
            - INHERIT
            - ALLOW_ALL
            - EXCLUDE_MFA
          inherited_mfa_from:
            type: string
            enum:
            - Organization
            - Agency
            - Advertiser
            - Campaign
          inherited_targeting_identity_level:
            type: string
            enum:
            - INDIVIDUAL
            - HOUSEHOLD
    campaign_attribution:
      type: object
      properties:
        has_custom_attribution:
          type: boolean
          default: false
        custom_attribution_source:
          type:
          - string
          - 'null'
          enum:
          - 3rd Party Attribution
          - T1 MTA via Neustar
        pc_window_minutes:
          type: integer
          format: int32
          example: 5
        pv_window_minutes:
          type: integer
          format: int32
          example: 6
        pv_pct:
          type: number
          format: float
          default: 100
     

# --- truncated at 32 KB (52 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mediamath/refs/heads/main/openapi/mediamath-campaigns-api-openapi.yml