MediaMath Campaigns API

Campaigns

OpenAPI Specification

mediamath-campaigns-api-openapi.yml Raw ↑
openapi: 3.0.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
                  format: date-time
                  nullable: true
                dynamic_budget_allocation_available:
                  type: string
                  format: date-time
                  nullable: true
  /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
                  nullable: true
                  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
                            example: 100
                            minimum: 1
                            nullable: true
                        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:
    dba:
      type: array
      items:
        type: object
        properties:
          id:
            type: integer
            description: campaign id
          dynamic_budget_allocation_applied:
            type: string
            format: date-time
            nullable: true
          dynamic_budget_allocation_available:
            type: string
            format: date-time
            nullable: true
        required:
        - id
    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:
      allOf:
      - $ref: '#/components/schemas/campaign_base'
      - type: object
        properties:
          id:
            type: integer
          version:
            type: integer
          advertiser_id:
            type: integer
            readOnly: true
          created_on:
            type: string
            format: date-time
            readOnly: true
          updated_on:
            type: string
            format: date-time
            readOnly: true
          locked_on:
            type: string
            format: date-time
            readOnly: true
            nullable: true
          v3_usage:
            type: boolean
            readOnly: true
          duration:
            allOf:
            - $ref: '#/components/schemas/campaign_duration'
            - type: object
              properties:
                initial_start_date:
                  type: string
                  format: date-time
          goals:
            $ref: '#/components/schemas/campaign_goals'
          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:
            allOf:
            - $ref: '#/components/schemas/campaign_inventory'
            - type: object
              properties:
                effective_ads_txt_verified:
                  type: string
                  minLength: 1
                  enum:
                  - ANY
                  - AUTHORIZED_ONLY
                  - AUTHORIZED_DIRECT_ONLY
                  - NONE
          site_lists:
            type: array
            items:
              $ref: '#/components/schemas/campaign_site_list'
          custom_brain_selections:
            type: array
            items:
              $ref: '#/components/schemas/campaign_custom_brain_selection'
          strategies:
            type: object
            properties:
              count:
                type: integer
              strategies_list:
                type: array
                items:
                  type: integer
                  format: int32
              distinct_strategy_goal_types:
                type: array
                items:
                  type: string
                  enum:
                  - spend
                  - reach
                  - cpc
                  - cpe
                  - cpa
                  - roi
                  - ctr
                  - vcr
                  - viewability_rate
                  - vcpm
                  - cpcv
          strategy_groups:
            type: object
            properties:
              count:
                type: integer
              strategy_groups_list:
                type: array
                items:
                  type: string
    error_response:
      title: error response
      type: object
      required:
      - errors
      - meta
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              field:
                description: Optional when it is a schema error
                type: string
              message:
                type: string
        meta:
          type: object
          required:
          - status
          properties:
            status:
              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_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
    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
          format: float
          nullable: true
        rate_card_type:
          type: string
          nullable: true
          deprecated: true
          enum:
          - CPM
          - FIXED
    campaign_frequency:
      type: object
      properties:
        frequency_type:
          type: string
          enum:
          - even
          - asap
          - no-limit
          - t1-optimized
          - frequency_goal
        frequency_interval:
          type: string
          minLength: 1
          enum:
          - hour
          - day
          - week
          - month
          - not-applicable
          default: not-applicable
          nullable: true
        frequency_amount:
          type: integer
          nullable: true
          format: int32
          example: 10
        use_mm_freq:
          type: boolean
          deprecated: true
          default: false
        frequency_optimization:
          type: boolean
          default: false
    campaign_budget:
      type: object
      properties:
        total_budget:
          type: number
          format: float
          nullable: true
          deprecated: true
        total_impression_budget:
          type: integer
          nullable: true
          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
    permission_flags:
      type: object
      properties:
        create:
          type: boolean
        read:
          type: boolean
        update:
          type: boolean
        delete:
          type: boolean
        inherited_from:
          type: string
    campaign_inventory:
      type: object
      properties:
        ads_txt_verified:
          type: string
          enum:
          - ANY
          - AUTHORIZED_ONLY
          - AUTHORIZED_DIRECT_ONLY
          - NONE
          nullable: true
        minimize_multi_ads:
          type: boolean
          default: false
        override_suspicious_traffic_filter:
          type: boolean
          default: false
        suspicious_traffic_filter_level:
          type: integer
          default: 25
          minimum: 0
          maximum: 100
        dcs_data_is_campaign_level:
          type: boolean
          default: false
        restrict_targeting_to_deterministic_id:
          deprecated: true
          type: boolean
          default: true
        restrict_targeting_to_same_device_id:
          type: boolean
    campaign_goals_create:
      type: object
      allOf:
      - $ref: '#/components/schemas/campaign_goals'
      - required:
        - goal_type
        - goal_value
    campaign_attribution:
      type: object
      properties:
        has_custom_attribution:
          type: boolean
          default: false
        custom_attribution_source:
          type: string
          enum:
          - 3rd Party Attribution
          - T1 MTA via Neustar
          nullable: true
        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
          minimum: 0
          maximum: 100
        merit_pixel_id:
          type: integer
          nullable: true
          format: int32
          example: 17
          description: "Will be deprecated soon. \nIf `merit_pixel_id` is set while create or updated then `merit_pixels` will be synchronized with it. \nIf `merit_pixels` is set while create or updated then `merit_pixel_id` will be synchronized with it. \nSet up (update) both fields at the same time is not supported.\n"
        conversion_type:
          type: string
          enum:
          - every
          - variable
          default: variable
        conversion_variable_minutes:
          type: integer
          default: 1
          format: int32
          example: 1
          description: 'Deduplication window in minutes. Must be 1 or greater when conversion_type is variable. To attribute all merit events without a deduplication window, use conversion_type: every (in which case this value is ignored).'
    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
          format: date-time
          readOnly: true
          nullable: 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_budget_flights:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 77
        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:
          nullable: true
          type: integer
          format: int64
          minimum: 1
          maximum: 9223372036854776000
          example: 12345
        is_relevant:
          type: boolean
          readOnly: true
    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
          nullable: true
          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_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
    campaign_collection:
      type: object
      title: campaign_collection
      properties:
        data:
          type: array
          items:
            allOf:
            - type: object
              properties:
                id:
                  type: integer
                entity_type:
                  type: string
                name:
                  type: string
            - $ref: '#/components/schemas/campaign_with'
        meta:
          $ref: '#/components/schemas/list_metadata'
    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_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_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
          enum:
          - audience
       

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