MediaMath Targeting API

Targeting

OpenAPI Specification

mediamath-targeting-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Campaigns Ad Servers Targeting 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: Targeting
  description: Targeting
paths:
  /target:
    get:
      operationId: list-targets-legacy
      summary: (Legacy) List Targets
      description: Get a list of targets
      tags:
      - Targeting
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_offset'
      - $ref: '#/components/parameters/sort_by'
      - $ref: '#/components/parameters/q'
      responses:
        '200':
          $ref: '#/components/responses/collection'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
    post:
      operationId: create-target-legacy
      summary: (Legacy) Create a Target
      description: Create a target
      tags:
      - Targeting
      responses:
        '201':
          $ref: '#/components/responses/target'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
      requestBody:
        $ref: '#/components/requestBodies/target_create'
  /target/{target_id}:
    get:
      operationId: get-target-legacy
      summary: (Legacy) Get a Target
      description: Get a target by ID
      tags:
      - Targeting
      responses:
        '200':
          $ref: '#/components/responses/target'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
      parameters:
      - schema:
          type: integer
        name: target_id
        in: path
        required: true
        description: Numeric ID of the target to get
    post:
      operationId: update-target-legacy
      summary: (Legacy) Update a Target
      description: Update a target by ID
      tags:
      - Targeting
      responses:
        '200':
          $ref: '#/components/responses/target'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
      requestBody:
        $ref: '#/components/requestBodies/target_update'
      parameters:
      - schema:
          type: integer
        name: target_id
        in: path
        required: true
        description: Numeric ID of the target to update
    delete:
      operationId: delete-target-legacy
      summary: (Legacy) Delete a Target
      description: Delete a target by ID
      tags:
      - Targeting
      responses:
        '200':
          $ref: '#/components/responses/target_deleted'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
      parameters:
      - schema:
          type: integer
        name: target_id
        in: path
        required: true
        description: Numeric ID of the target to delete
    put:
      operationId: put-update-target-legacy
      summary: (Legacy) Update a Target
      description: Update a target by ID
      tags:
      - Targeting
      responses:
        '200':
          $ref: '#/components/responses/target'
        '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/target_update'
      parameters:
      - schema:
          type: integer
        name: target_id
        in: path
        required: true
        description: Numeric ID of the target to update
  /targets:
    get:
      operationId: list-targets
      summary: List targets
      description: Get a list of targets
      tags:
      - Targeting
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_offset'
      - $ref: '#/components/parameters/sort_by'
      - $ref: '#/components/parameters/q'
      responses:
        '200':
          $ref: '#/components/responses/collection'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
    post:
      operationId: create-target
      summary: Create a Target
      description: Create a target
      tags:
      - Targeting
      responses:
        '201':
          $ref: '#/components/responses/target'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
      requestBody:
        $ref: '#/components/requestBodies/target_create'
  /targets/{target_id}:
    get:
      operationId: get-target
      summary: Get a Target
      description: Get a target by ID
      tags:
      - Targeting
      responses:
        '200':
          $ref: '#/components/responses/target'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
      parameters:
      - in: path
        name: target_id
        schema:
          type: integer
        required: true
        description: Numeric ID of the target to get
    post:
      operationId: update-target
      summary: Update a Target
      description: Update a target by ID
      tags:
      - Targeting
      responses:
        '200':
          $ref: '#/components/responses/target'
        '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/target_update'
      parameters:
      - schema:
          type: integer
        name: target_id
        in: path
        required: true
        description: Numeric ID of the target to update
    delete:
      operationId: delete-target
      summary: Delete a Target
      description: Delete a target by ID
      tags:
      - Targeting
      responses:
        '200':
          $ref: '#/components/responses/target_deleted'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
      parameters:
      - schema:
          type: integer
        name: target_id
        in: path
        required: true
        description: Numeric ID of the target to delete
  /target-path:
    get:
      operationId: list-target-paths-legacy
      summary: List Target paths
      description: Get a list of target paths
      tags:
      - Targeting
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_offset'
      - $ref: '#/components/parameters/sort_by'
      - $ref: '#/components/parameters/q'
      responses:
        '200':
          $ref: '#/components/responses/collection'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
  /targeting:
    post:
      operationId: add-view-targeting
      summary: Add and View Targeting
      description: Add and view targeting
      tags:
      - Targeting
      responses:
        '200':
          description: Add and view response
          content:
            application/json:
              schema:
                description: ''
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      location:
                        type: array
                        nullable: true
                        items:
                          $ref: '#/components/schemas/location_response'
                  meta:
                    type: object
                    required:
                    - status
                    - count
                    properties:
                      status:
                        type: string
                        minLength: 1
                      count:
                        type: number
                  errors:
                    type: array
                    nullable: true
                    items: {}
                required:
                - meta
        '207':
          description: Multi-Status (WebDAV)
          content:
            application/json:
              schema:
                description: ''
                type: object
                properties:
                  data:
                    type: object
                    required:
                    - location
                    properties:
                      location:
                        type: array
                        uniqueItems: true
                        minItems: 1
                        items:
                          type: object
                          properties:
                            strategy_id:
                              type: number
                            strategy_target_id:
                              type: number
                            strategy_target_exclude:
                              type: boolean
                            strategy_target_active:
                              type: boolean
                            strategy_target_operator:
                              type: string
                              minLength: 1
                            strategy_target_value_id:
                              type: number
                            target_dimension_code:
                              type: string
                              minLength: 1
                            target_dimension_name:
                              type: string
                              minLength: 1
                            target_value_id:
                              type: number
                            target_value_name:
                              type: string
                              minLength: 1
                            target_value_value:
                              type: number
                            target_value_code:
                              type: string
                              minLength: 1
                            strategy_count:
                              type: number
                          required:
                          - strategy_id
                          - strategy_target_id
                          - strategy_target_exclude
                          - strategy_target_active
                          - strategy_target_operator
                          - strategy_target_value_id
                          - target_dimension_code
                          - target_dimension_name
                          - target_value_id
                          - target_value_name
                          - target_value_value
                          - target_value_code
                          - strategy_count
                  meta:
                    type: object
                    required:
                    - status
                    - count
                    properties:
                      status:
                        type: string
                        minLength: 1
                      count:
                        type: number
                  errors:
                    type: array
                    uniqueItems: true
                    minItems: 1
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          minLength: 1
                        message:
                          type: string
                          minLength: 1
                        field:
                          type: string
                          minLength: 1
                      required:
                      - code
                      - message
                      - field
                required:
                - data
                - meta
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
      requestBody:
        content:
          application/json:
            schema:
              description: ''
              type: object
              properties:
                strategy_id:
                  type: array
                  items:
                    type: integer
                    format: int32
                    example: 87
                targeting:
                  $ref: '#/components/schemas/targeting_base'
              required:
              - strategy_id
  /contextual_segments/cpm_estimate:
    post:
      operationId: contextual-segments-cpm-estimate
      summary: Contextual Segments CPM estimates
      description: Get CPM estimates for contextual segments
      tags:
      - Targeting
      parameters:
      - $ref: '#/components/parameters/extended'
      requestBody:
        $ref: '#/components/requestBodies/contextual_segment_estimate'
      responses:
        '200':
          $ref: '#/components/responses/contextual_segment_estimate'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
  /targeting_segments/frequently_used:
    get:
      operationId: get-targeting-segments-frequently-used
      summary: Get Frequently Used Contextual Segments
      description: Display the most frequently used contextual segments for a given advertiser
      tags:
      - Targeting
      parameters:
      - in: query
        name: advertiser_id
        schema:
          type: integer
        description: Numeric ID of the advertiser to filter on
      - in: query
        name: top
        schema:
          type: integer
        description: limit of top elements
      responses:
        '200':
          $ref: '#/components/responses/targeting_segment_friendly_name'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
  /audience_segments/frequently_used:
    get:
      operationId: get-audience-segments-frequently-used
      summary: Frequently Used Audience Segments
      description: Display the most frequently used audience segments for a given advertiser or campaign.
      tags:
      - Targeting
      parameters:
      - in: query
        name: advertiser_id
        schema:
          type: integer
        description: Numeric ID of the advertiser to filter on
      - in: query
        name: campaign_id
        schema:
          type: integer
        description: Numeric ID of the campaign to filter on
      - in: query
        name: top
        schema:
          type: integer
        description: limit of top elements
      responses:
        '200':
          $ref: '#/components/responses/targeting_segment_friendly_name'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
  /audience_segments/cpm_estimate:
    post:
      operationId: audience-segments-cpm-estimate
      tags:
      - Targeting
      summary: Audience Segments CPM Estimate
      description: Audience segments CPM estimate
      parameters:
      - $ref: '#/components/parameters/extended'
      requestBody:
        $ref: '#/components/requestBodies/audience_segments_cpm_estimate'
      responses:
        '200':
          $ref: '#/components/responses/audience_segments_cpm_estimate'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
  /technology_target_values:
    get:
      operationId: list-technology-target-values
      summary: List Technology Target Values
      description: "Get list of technology target values. Can be sorted by:\n- `id`,\n- `dimension`,\n- `parent_id`,\n- `name`,\n- `full_path`,\n- `value`,\n- `code`,\n- `sortable_name` \nand queried (with `q=`) by:\n- `id`,\n- `parent_id`,\n- `name`,\n- `full_path` (if provided parameter `full_path` will be ignored),\n- `value`,\n- `code`,\n- `sortable_name`.\n"
      tags:
      - Targeting
      parameters:
      - in: query
        name: name
        schema:
          type: string
        required: false
        description: 'Case insensitive name contains search. Example: `name=target1`'
      - in: query
        name: full_path
        schema:
          type: string
        required: false
        description: 'Case insensitive full_path contains search. Example: `full_path=target1`'
      - in: query
        name: dimension_code
        schema:
          type: string
        required: true
        description: "Comma separated list of dimension codes. Example: `dimension_code=BRLG,BSER`. Supported values:\n - `BRLG` - Browser Language,\n - `OSXX` - Operating System (extended),\n - `BSER` - Browser,\n - `CSPD` - Connection Speed,\n - `DVMD` - Device Model,\n - `DVCE` - Device,\n - `INVT` - Inventory (supply source/publisher),\n - `ISPX` - ISP (Internet Service Provider),\n - `VAUD` - Video: Audibility,\n - `VCON` - Video: Context,\n - `VLIN` - Video: Linearity (linear vs non-linear),\n - `VPLC` - Video: Placement,\n - `VPSZ` - Video: Player Size,\n - `VSKP` - Video: Skippability,\n - `DMAX` - Designated Market Area,\n - `REGN` - Region (geographic region),\n - `COUNTRY` - Country,\n - `CITY` - City.\n"
      - $ref: '#/components/parameters/sort_by'
      - $ref: '#/components/parameters/q'
      responses:
        '200':
          $ref: '#/components/responses/list_technology_target_values'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
  /path_targeting_segments:
    get:
      operationId: list-contextual-segments
      summary: List Contextual Segments
      description: Get a list of contextual segments
      tags:
      - Targeting
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_offset'
      - $ref: '#/components/parameters/sort_by'
      - $ref: '#/components/parameters/q'
      - $ref: '#/components/parameters/full'
      - in: query
        name: currency_code
        schema:
          type: string
          example: USD
          minLength: 3
          maxLength: 3
        required: false
        description: If not provided, the default currency (USD) will be used.
      responses:
        '200':
          description: List targeting segments response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/contextual_segment_collection'
                - $ref: '#/components/schemas/contextual_segment_collection_full'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
  /path_audience_segments:
    get:
      operationId: list-path-audience-segments
      summary: List Path Audience Segments
      description: "Get a list of path audience segments. Segments can be queried and sorted by fields: \n- `id`, \n- `name`,  \n- `version`, \n- `parent_audience_segment_id`, \n- `full_path`, \n- `uniques`, \n- `retail_cpm` (type = double, value in usd), \n- `code`, \n- `buyable`, \n- `child_count`, \n- `wholesale_cpm` (type = double, value in usd), \n- `type`, \n- `taxonomy_id`, \n- `updated_on`, \n- `created_on`, \n- `audience_vendor_id`, \n- `audience_vendor_name`, \n- `audience_vendor_vendor_id`, \n- `audience_vendor_mma_free_cm`, \n- `audience_vendor_updated_on`, \n- `audience_vendor_created_on`, \n- `audience_vendor_version`, \n- `audience_vendor_provides_batch_segments`, \n- `audience_vendor_campaign_brain_enabled`, \n- `audience_vendor_pin_top_search`, \n- `audience_vendor_bidder_code`, \n- `audience_vendor_namespace_code`.\n"
      tags:
      - Targeting
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_offset'
      - $ref: '#/components/parameters/sort_by'
      - $ref: '#/components/parameters/q_required'
      - in: query
        name: currency_code
        schema:
          type: string
          example: USD
          minLength: 3
          maxLength: 3
        required: false
        description: If not provided, the default currency (USD) will be used.
      - in: query
        name: advertiser_id
        schema:
          type: integer
        required: false
        description: Advertiser ID for taxonomy lookup
      - in: query
        name: only_brain_enabled
        schema:
          type: boolean
        required: false
        description: If true, only segments with audience_vendor.campaign_brain_enabled = true will be returned
      - in: query
        name: parent_id
        schema:
          type: integer
        required: false
        description: Parent audience segment ID
      - in: query
        name: with
        schema:
          type: string
          enum:
          - audience_vendor
        required: false
        description: If provided, additional entity information will be returned
      responses:
        '200':
          description: Path audience segments collection response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/path_audience_segments_collection_full'
        '400':
          $ref: '#/components/responses/error'
        '401':
          $ref: '#/components/responses/error'
        '403':
          $ref: '#/components/responses/error'
        '404':
          $ref: '#/components/responses/error'
components:
  schemas:
    path_audience_segment:
      title: path_audience_segment
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        version:
          type: integer
        parent_audience_segment_id:
          type: integer
          nullable: true
        full_path:
          type: string
        uniques:
          type: integer
        retail_cpm:
          type: array
          items:
            $ref: '#/components/schemas/cpm'
        audience_vendor_id:
          type: integer
        code:
          type: string
          nullable: true
        buyable:
          type: boolean
        child_count:
          type: integer
        wholesale_cpm:
          type: array
          items:
            $ref: '#/components/schemas/cpm'
        type:
          type: string
        taxonomy_id:
          type: integer
        created_on:
          type: string
          format: date-time
        updated_on:
          type: string
          format: date-time
        audience_vendor:
          description: available with parameter `with=audience_vendor`
          type: object
          nullable: true
          allOf:
          - $ref: '#/components/schemas/audience_vendor'
    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
    target_update:
      type: object
      properties:
        parent_id:
          type: integer
          format: int32
          example: 5
        name:
          type: string
          minLength: 1
        factual_id:
          type: string
        mediamath_organization_id:
          type: integer
          format: int32
          example: 55
        target_inet:
          type: string
          minLength: 1
        visible:
          type: boolean
        visible_overridden:
          type: boolean
        bidder_frequency:
          type: integer
          format: int32
          example: 3
        dimension_code:
          type: string
          minLength: 1
        version:
          type: integer
          format: int32
          example: 2
    target_create:
      allOf:
      - $ref: '#/components/schemas/target_base'
      - type: object
    target_dimension_include:
      type: object
      properties:
        code:
          type: string
          description: valid location codes - DMAX, REGN, USZC | valid technology codes -  BSER, CSPD, DVCE, ISPX, OSXX, INVT, DVMD | valid contextual codes -  SFTY
        operator:
          type: string
          enum:
          - AND
          - OR
        target_value_ids:
          type: array
          items:
            type: integer
            format: int32
            example: 33
      required:
      - code
      - operator
      - target_value_ids
    audience_vendor:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        version:
          type: integer
        vendor_id:
          type: integer
        mma_free_cm:
          type: boolean
        created_on:
          type: string
          format: date-time
        updated_on:
          type: string
          format: date-time
        provides_batch_segments:
          type: boolean
        campaign_brain_enabled:
          type: boolean
        pin_top_search:
          type: boolean
        bidder_code:
          type: string
        namespace_code:
          type: string
    audience_target:
      type: object
      properties:
        operator:
          type: string
          enum:
          - AND
          - OR
        audience_segment_ids:
          type: array
          items:
            type: integer
            format: int32
            example: 32
    contextual_segment_collection:
      type: object
      title: contextual_segment_collection
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
              entity_type:
                type: string
        meta:
          $ref: '#/components/schemas/list_metadata'
    contextual_segment_collection_full:
      type: object
      title: contextual_segment_collection_full
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/contextual_segment_full'
        meta:
          $ref: '#/components/schemas/list_metadata'
    cpm:
      type: object
      properties:
        currency_code:
          type: string
          example: USD
        value:
          type: number
          format: double
    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
    contextual_segment_short:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 3
        name:
          type: string
        full_path:
          type: string
        cpm:
          type: number
          format: double
        user_cpm:
          type: number
          format: double
          nullable: true
        segment_objective_name:
          type: string
        uniques:
          type: integer
          format: int32
          example: 12345
          nullable: true
    single_metadata:
      title: single_metadata
      type: object
      properties:
        status:
          type: string
          example: success
      required:
      - status
    day_part:
      type: object
      required:
      - start_hour
      - end_hour
      - days
      properties:
        user_time:
          type: boolean
          default: true
        start_hour:
          type: integer
          minimum: 0
          maximum: 23
          example: 1
        end_hour:
          type: integer
          minimum: 0
          maximum: 23
          example: 5
        days:
          type: array
          items:
            type: string
            enum:
            - M
            - T
            - W
            - R
            - F
            - S
            - U
          example:
          - M
          - T
          - W
          - S
          - U
    audience_segments_group:
      type: object
      properties:
        operator:
          type: string
          enum:
          - AND
          - OR
        segments:
          type: array
          items:
            type: object
            properties:
              audience_segment_id:
                type: integer
                format: int32
                example: 88
              user_cpm:
                type: number
                format: double
                minimum: 0
                description: if provided value will be used instead of segment cpm (value in USD).
    target_dimension_exclude:
      type: object
      properties:
        code:
          type: string
          description: valid location codes - DMAX, REGN, USZC | valid technology codes -  BSER, CSPD, DVCE, ISPX, OSXX, INVT, DVMD | valid contextual codes -  SFTY
        operator:
          type: string
          enum:
          - AND
          - OR
        target_value_ids:
          type: array
          items:
            type: integer
            format: int32
            example: 3
      required:
      - target_value_ids
    targeting_base:
      type: object
      properties:
        audience:
          type: object
          properties:
            include:
              type: array
              items:
                $ref: '#/components/schemas/audience_target'
            exclude:
              type: array
              items:
                $ref: '#/components/schemas/audience_target'
        contextual:
          type: object
          properties:
            include:
        

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