Moloco Commerce Media Decision API

Real-time ad decisioning API for retail media — request sponsored product, display, brand and reserved display ads for a given page/placement and user context, returning the ads to render together with impression and click tracker URLs. Latency-sensitive serving path, authenticated with a platform API key.

OpenAPI Specification

moloco-commerce-media-decision-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Decision API
  description: MOLOCO Cloud RMP Decision API provides the product recommendation service.
  version: '1.0'
  contact:
    name: Moloco Inc.
    url: https://www.molocoads.com
tags:
- name: RmpDecisionApi
paths:
  /rmp/decision/v1/platforms/{platform_id}/brand-auction:
    post:
      summary: DecideAdBrands
      description: Request brand ads by auction. Server host may vary by platform. Moloco's staff will provide accurate host
        information.
      operationId: RmpDecisionApi_DecideAdBrands
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicDecisionBrandsResponse'
        '400':
          description: Bad request. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '401':
          description: Unauthorized. The request does not have valid authentication credentials for the operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '403':
          description: Permission denied. The caller does not have permission to execute the specified operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '404':
          description: Not found. One or more resources required to perform the request does not exist. Detailed cause can
            be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '429':
          description: Too many requests either by platform or by user. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '500':
          description: Internal server error. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: platform_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicDecisionBrandsInput'
        required: true
      tags:
      - Decision
  /rmp/decision/v1/platforms/{platform_id}/display-auction:
    post:
      summary: DecideAdDisplay
      description: Request display ads by auction. Server host may vary by platform. Moloco's staff will provide accurate
        host information.
      operationId: RmpDecisionApi_DecideAdDisplay
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicDecisionDisplayResponse'
        '400':
          description: Bad request. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '401':
          description: Unauthorized. The request does not have valid authentication credentials for the operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '403':
          description: Permission denied. The caller does not have permission to execute the specified operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '404':
          description: Not found. One or more resources required to perform the request does not exist. Detailed cause can
            be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '429':
          description: Too many requests either by platform or by user. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '500':
          description: Internal server error. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: platform_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicDecisionDisplayInput'
        required: true
      tags:
      - Decision
  /rmp/decision/v1/platforms/{platform_id}/product-auction:
    post:
      summary: DecideAdProducts
      description: Request product ads by auction. Server host may vary by platform. Moloco's staff will provide accurate
        host information.
      operationId: RmpDecisionApi_DecideAdProducts
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicDecisionProductsResponse'
        '400':
          description: Bad request. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '401':
          description: Unauthorized. The request does not have valid authentication credentials for the operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '403':
          description: Permission denied. The caller does not have permission to execute the specified operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '404':
          description: Not found. One or more resources required to perform the request does not exist. Detailed cause can
            be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '429':
          description: Too many requests either by platform or by user. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '500':
          description: Internal server error. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: platform_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicDecisionProductsInput'
        required: true
      tags:
      - Decision
  /rmp/decision/v1/platforms/{platform_id}/reserved-display-ads:
    post:
      summary: DecideAdReservedDisplay
      description: Request reserved display ads. Server host may vary by platform. Moloco's staff will provide accurate host
        information.
      operationId: RmpDecisionApi_DecideAdReservedDisplay
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicDecisionReservedDisplayResponse'
        '400':
          description: Bad request. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '401':
          description: Unauthorized. The request does not have valid authentication credentials for the operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '403':
          description: Permission denied. The caller does not have permission to execute the specified operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '404':
          description: Not found. One or more resources required to perform the request does not exist. Detailed cause can
            be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '429':
          description: Too many requests either by platform or by user. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '500':
          description: Internal server error. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: platform_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicDecisionReservedDisplayInput'
        required: true
      tags:
      - Decision
security:
- ApiKeyAuth: []
x-readme:
  explorer-enabled: true
servers:
- url: https://sandbox-dcsn.mcm-api.moloco.com
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: x-api-key
      in: header
  schemas:
    BulkCreativeAuctionResultCreative:
      type: object
      properties:
        banner:
          $ref: '#/components/schemas/decisionv1Banner'
      additionalProperties: true
    CampaignMetadataAdOperationType:
      type: string
      enum:
      - AD_OPERATION_TYPE_DEFAULT
      - AD_OPERATION_TYPE_SELF_SERVED
      - AD_OPERATION_TYPE_MANAGED
      default: AD_OPERATION_TYPE_DEFAULT
    CustomItemContext:
      type: object
      properties:
        shipping_charge:
          $ref: '#/components/schemas/commonMoneyMicro'
        distance:
          type: number
          format: float
          description: Distance to the user from where this specific item is located. There is no requirement on the unit
            of distance as long as the implied unit is consistently used when communicating with Moloco.
        discount:
          $ref: '#/components/schemas/commonDiscount'
      additionalProperties: true
    CustomItemPoolCustomItem:
      type: object
      properties:
        id:
          type: string
          description: Required. ID of the item.
        context:
          $ref: '#/components/schemas/CustomItemContext'
        score:
          $ref: '#/components/schemas/CustomItemScore'
      description: Information of the item from the pool.
      required:
      - id
      additionalProperties: true
    CustomItemScore:
      type: object
      properties:
        quality_score:
          type: number
          format: float
          description: Platform-defined quality score for items in the pool, based on its relevance to the request. To use
            this feature, each item in the custom item pool requires this score, between 0 and 1, which helps determine the
            adRank.
      additionalProperties: true
    DecidedAssetBrandLogo:
      type: object
      properties:
        image_url:
          type: string
          description: Image URL of the brand logo.
      additionalProperties: true
    DeduplicationSettingCriteria:
      type: string
      enum:
      - CRITERIA_DEFAULT
      - CRITERIA_NONE
      - CRITERIA_ITEM_ID
      - CRITERIA_AD_ACCOUNT_ID
      - CRITERIA_CAMPAIGN_ID
      - CRITERIA_LINE_ITEM_ID
      default: CRITERIA_DEFAULT
      description: "Criteria defines the attributes used to identify duplicate ads.\n\n - CRITERIA_DEFAULT: Uses the system\
        \ default deduplication criteria. Currently defaults to CRITERIA_NONE.\n - CRITERIA_NONE: Does not deduplicate ads.\
        \ Basic built-in deduplication always applies at the per_inventory level and cannot be disabled, even with CRITERIA_NONE.\
        \ Examples include Item ID for DecideAdProducts, Campaign ID for DecideAdBrands and DecideAdDisplay, and Line Item\
        \ ID for DecideAdReservedDisplay.\n - CRITERIA_ITEM_ID: Deduplicates ad responses by item ID. Applicable to the DecideAdProducts\
        \ API only.\n - CRITERIA_AD_ACCOUNT_ID: Deduplicates ad responses by ad account ID. Applicable to the DecideAdBrands,\
        \ DecideAdDisplay, and DecideAdReservedDisplay APIs only.\n - CRITERIA_CAMPAIGN_ID: Deduplicates ad responses by campaign\
        \ ID. Applicable to the DecideAdBrands and DecideAdDisplay APIs only.\n - CRITERIA_LINE_ITEM_ID: Deduplicates ad responses\
        \ by line item ID. Applicable to the DecideAdReservedDisplay API only."
    DeduplicationSettingInventoryValue:
      type: object
      properties:
        criteria:
          $ref: '#/components/schemas/DeduplicationSettingCriteria'
      description: The per_inventory object defines the deduplication logic within each inventory. It can override the logic
        defined in per_request to disable deduplication or apply different deduplication criteria within an inventory. Only
        criteria can be configured at the inventory level.
      additionalProperties: true
    DeduplicationSettingMethod:
      type: string
      enum:
      - METHOD_DEFAULT
      - METHOD_WATERFALL
      - METHOD_INTERLEAVED
      default: METHOD_DEFAULT
      description: "Method defines how duplicate ads are resolved.\n\n - METHOD_DEFAULT: Uses the system default deduplication\
        \ method. Currently defaults to METHOD_WATERFALL.\n - METHOD_WATERFALL: Resolves duplicate ads by prioritizing inventories\
        \ that appear earlier in the request. When duplicate ads appear in multiple inventories, the ads are kept in the earliest\
        \ inventory and removed from later inventories.\n - METHOD_INTERLEAVED: Resolves duplicate ads by prioritizing higher-ranking\
        \ ads. A higher-ranking ad appears earlier in the response for its inventory. If duplicate ads have the same rank,\
        \ the inventory that appears earlier in the decision request is prioritized. Ad rankings may shift after deduplication\
        \ is applied."
    DeduplicationSettingRequestValue:
      type: object
      properties:
        method:
          $ref: '#/components/schemas/DeduplicationSettingMethod'
        criteria:
          $ref: '#/components/schemas/DeduplicationSettingCriteria'
      description: The per_request object defines the deduplication logic for the entire request. It applies both within individual
        inventories and across multiple inventories. The per_inventory object can override this logic at the inventory level.
      additionalProperties: true
    FilteringAgeGroup:
      type: object
      properties:
        age_groups:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given age groups will be served.
      description: This field is used to filter ads based on age groups.
      required:
      - age_groups
      additionalProperties: true
    FilteringBrand:
      type: object
      properties:
        brand_id:
          type: string
          description: Deprecated. Only ads matching the brand id will be served. Please provide only one of brand_id or brand_ids.
        brand_ids:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given brand ids will be served. Please provide only one of brand_id
            or brand_ids.
      description: This field is used to filter ads based on brand.
      additionalProperties: true
    FilteringCategory:
      type: object
      properties:
        operator:
          $ref: '#/components/schemas/FilteringOperator'
        categories:
          type: array
          items:
            type: string
          description: Required. Only ads matching the given category filtering option will be served.
      description: This field is used to filter ads based on categories.
      required:
      - categories
      additionalProperties: true
    FilteringColor:
      type: object
      properties:
        colors:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given the colors will be served.
      description: This field is used to filter ads based on colors.
      required:
      - colors
      additionalProperties: true
    FilteringCondition:
      type: object
      properties:
        conditions:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given conditions will be served.
      description: This field is used to filter ads based on conditions.
      required:
      - conditions
      additionalProperties: true
    FilteringDelivery:
      type: object
      properties:
        delivery_option:
          type: string
          description: Deprecated. Only ads matching the delivery option will be served.
        delivery_options:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given delivery options will be served. Please provide only one
            of delivery_option or delivery_options.
      description: This field is used to filter ads based on delivery.
      additionalProperties: true
    FilteringGender:
      type: object
      properties:
        genders:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given genders will be served.
      description: This field is used to filter ads based on genders.
      required:
      - genders
      additionalProperties: true
    FilteringMaterial:
      type: object
      properties:
        materials:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given materials will be served.
      description: This field is used to filter ads based on materials.
      required:
      - materials
      additionalProperties: true
    FilteringOperator:
      type: string
      enum:
      - OR
      - AND
      default: OR
    FilteringPattern:
      type: object
      properties:
        patterns:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given patterns will be served.
      description: This field is used to filter ads based on patterns.
      required:
      - patterns
      additionalProperties: true
    FilteringPrice:
      type: object
      properties:
        min_price:
          type: number
          format: double
          description: Required. Only ads with price greater than or equal to min_price will be served. Prices are in platform's
            default currency.
        max_price:
          type: number
          format: double
          description: Required. Only ads with price less than or equal to max_price will be served. Prices are in platform's
            default currency.
      description: This field is used to filter ads based on price.
      required:
      - min_price
      - max_price
      additionalProperties: true
    FilteringRating:
      type: object
      properties:
        min:
          type: number
          format: double
          description: Required. Only ads with rating greater than or equal to min rating will be served.
        max:
          type: number
          format: double
          description: Required. Only ads with rating less than or equal to max rating will be served.
      description: This field is used to filter ads based on rating.
      required:
      - min
      - max
      additionalProperties: true
    FilteringReviewCount:
      type: object
      properties:
        min:
          type: number
          format: double
          description: Required. Only ads with review count greater than or equal to min review_count will be served.
        max:
          type: number
          format: double
          description: Required. Only ads with review count less than or equal to max review_count will be served.
      description: This field is used to filter ads based on review count.
      required:
      - min
      - max
      additionalProperties: true
    FilteringSalePrice:
      type: object
      properties:
        min_sale_price:
          type: number
          format: double
          description: Required. Only ads with sale price greater than or equal to min_sale_price will be served. Prices are
            in platform's default currency.
        max_sale_price:
          type: number
          format: double
          description: Required. Only ads with sale price less than or equal to max_sale_price will be served. Prices are
            in platform's default currency.
      description: This field is used to filter ads based on sale price.
      required:
      - min_sale_price
      - max_sale_price
      additionalProperties: true
    FilteringSize:
      type: object
      properties:
        sizes:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given sizes will be served.
      description: This field is used to filter ads based on sizes.
      required:
      - sizes
      additionalProperties: true
    TargetingKeyValue:
      type: object
      properties:
        key_id:
          type: string
          description: Key ID for the request
        value_ids:
          type: array
          items:
            type: string
          description: Value IDs for the key
      description: Key value sets for the ad request
      required:
      - key_id
      additionalProperties: true
    commonChannelType:
      type: string
      enum:
      - UNKNOWN_CHANNEL_TYPE
      - APP
      - SITE
      - DESKTOP_SITE
      - MOBILE_SITE
      default: UNKNOWN_CHANNEL_TYPE
      description: "ChannelType enumerates available channel types. Simply using APP and SITE is fine, but you can also further\
        \ distinguish DESKTOP_SITE and MOBILE_SITE for web users.\n\n - APP: Mobile App (iOS or Android)\n - SITE: Site (e.g.\
        \ Website)\n - DESKTOP_SITE: Desktop Site (e.g. Desktop Website)\n - MOBILE_SITE: Mobile Site (e.g. Mobile Website)"
    commonCurrency:
      type: string
      enum:
      - UNKNOWN_CURRENCY
      - USD
      - KRW
      - JPY
      - EUR
      - GBP
      - SEK
      - INR
      - THB
      - IDR
      - CNY
      - CAD
      - RUB
      - BRL
      - SGD
      - HKD
      - AUD
      - PLN
      - DKK
      - VND
      - MYR
      - PHP
      - TRY
      - VES
      - AED
      - CHF
      default: UNKNOWN_CURRENCY
      description: "Currency enumerates available currencies.\n\n - UNKNOWN_CURRENCY: Unknown currency.\n - USD: US Dollar.\n\
        \ - KRW: Korean Won.\n - JPY: Japanese Yen.\n - EUR: EU Euro.\n - GBP: British Pound.\n - SEK: Swedish Krona.\n -\
        \ INR: India Rupee.\n - THB: Thailand Baht.\n - IDR: Indonesia Rupiah.\n - CNY: China Yuan.\n - CAD: Canada Dollar.\n\
        \ - RUB: Russia Ruble.\n - BRL: Brazil Real.\n - SGD: Singapore Dollar.\n - HKD: Hong Kong Dollar.\n - AUD: Autrailia\
        \ Dollar.\n - PLN: Poland Zloty.\n - DKK: Denmark Krone.\n - VND: Viet Nam Dong.\n - MYR: Malaysia Ringgit.\n - PHP:\
        \ Philippines Peso.\n - TRY: Turkey Lira.\n - VES: Venezuela Bolívar Soberano.\n - AED: United Arab Emirates Dirham.\n\
        \ - CHF: Swiss Franc."
    commonDiscount:
      type: object
      properties:
        rate:
          type: number
          format: float
          description: Discount rate for the item (e.g., 0.15 for 15% discount). Applied before price_amount if both are non-zero.
        price_amount:
          $ref: '#/components/schemas/commonMoneyMicro'
      description: Discount from the original price defined either using rate or a price amount, or both.
      additionalProperties: true
    commonMediaType:
      type: string
      enum:
      - UNKNOWN_MEDIA_TYPE
      - IMAGE
      - VIDEO
      default: UNKNOWN_MEDIA_TYPE
    commonMoneyMicro:
      type: object
      properties:
        currency:
          $ref: '#/components/schemas/commonCurrency'
        amount_micro:
          type: string
          format: int64
          description: Amount in micro unit. (e.g., 1234 means 0.001234)
      description: 'A monetary amount in a specific currency; the unit is micro at fixed point value for accurate accumulation
        operation.

        For example, `{"currency": "USD", "amount_micro": "1234"}` means $0.001234.'
      required:
      - currency
      - amount_micro
      additionalProperties: true
    commonPersonalizationMode:
      type: string
      enum:
      - UNKNOWN_PERSONALIZATION_MODE
      - STANDARD
      - METRIC_ONLY
      - ID_LESS
      default: UNKNOWN_PERSONALIZATION_MODE
      description: "PersonalizationMode determines how user identification is handled in decision and event processing.\n\n\
        \ - STANDARD: STANDARD means standard user processing with full user identification.\n - METRIC_ONLY: METRIC_ONLY\
        \ means user data is used for metric collection only, not for personalization.\n - ID_LESS: ID_LESS means no user\
        \ identification is used."
    commonVideoFormat:
      type: string
      enum:
      - UNKNOWN_VIDEO_FORMAT
      - MP4_360P
      - MP4_720P
      - HLS
      default: UNKNOWN_VIDEO_FORMAT
      description: VideoFormat enumerates the video format to be responded from the decision.
    decisionv1Banner:
      type: object
      properties:
        creative_id:
          type: string
          description: Identifier to track the decided creative.
        image_url:
          type: string
          description: Image URL of the creative.
        imp_trackers:
          type: array
          items:
            type: string
          description: Impression tracking links which should be fired when an impression of this creative occurs.
        click_trackers:
          type: array
          items:
            type: string
          description: Click tracking links which should be fired when a click of this creative occurs.
      description: Banner to show in the requested inventory.
      required:
      - creative_id
      - image_url
      - imp_trackers
      - click_trackers
      additionalProperties: true
    protobufAny:
      type: object
      properties:
        '@type':
          type: string
      additionalProperties: {}
    publicAdAuctionResult:
      type: object
      properties:
        ad_account_id:
          type: string
          description: The ID of the owning ad account. The relationship among platform, ad account, and campaign is explained
            on https://mcm-docs.moloco.com/docs/2-solution-components. In short, a platform has many sellers, and each seller
            corresponds to an ad account. One ad account can own many ad campaigns.
        campaign_id:
          type: string
          description: The ID of the owning ad campaign. Refer to ad_account_id for relationship among platforms, ad accounts,
            and campaigns.
        win_price:
          $ref: '#/components/schemas/commonMoneyMicro'
        win_price_advertiser:
          $ref: '#/components/schemas/commonMoneyMicro'
        campaign_metadata:
          $ref: '#/components/schemas/v1CampaignMetadata'
      description: AdAuctionResult contains auction specific information of the ad such as ad_account_id and campaign_id.
      required:
      - ad_account_id
      - campaign_id
      additionalProperties: true
    publicBrandAd:
      type: object
      properties:
        auction_result:
          $ref: '#/components/schemas/publicAdAuctionResult'
        asset:
          $ref: '#/components/schemas/publicDecidedAsset'
        landing_page:
          $ref: '#/components/schemas/publicLandingPage'
        items:
          type: array
          items:
            $ref: '#/components/schemas/publicBrandItem'
          description: Items to be displayed.
      description: Ad components to be displayed for the inventory.
      additionalProperties: true
    publicBrandDecision:
      type: object
      properties:
        inventory_id:
          type: string
        ads:
          type: array
          items:
            $ref: '#/components/schemas/publicBrandAd'
          description: Ads to be displayed for the inventory.
      required:
      - inventory_id
      - ads
      additionalProperties: true
    publicBrandItem:
      type: object
      properties:
        item_id:
          type: string
          description: The item id specified in the client's catalog.
        imp_trackers:
          type: array
          items:
            type: string
          description: Impression tracking links which should be fired when an impression of this item occurs.
        click_trackers:
          type: array
          items:
            type: string
          description: Click tracking links which should be fired when a click of this item occurs.
        track_id:
          type: string
          description: Identifier to track the decided item.
      description: Item which may display along with the asset
      required:
      - item_id
      - imp_trackers
      - click_trackers
      additionalProperties: true
    publicBulkCreativeAuctionResult:
      type: object
      properties:
        inventory_id:
          type: string
        auction_result:
          $ref: '#/components/schemas/v1CreativeAuctionResult'
        creatives:
          type: array
          items:
            $ref: '#/components/schemas/BulkCreativeAuctionResultCreative'
          description: The creative information by winning the auction.
        items:
          type: array
          items:
            $ref: '#/components/schemas/v1CreativeItem'
          description: Decided Items by winning the auction.
      additionalProperties: true
    publicDecidedAsset:
      type: object
      properties:
        id:
          type: string
        banner:
          $ref: '#/components/schemas/publicDecidedAssetBanner'
        logo:
          $ref: '#/components/schemas/DecidedAssetBrandLogo'
        headline:
          $ref: '#/components/schemas/publicDecidedAssetHeadline'
        cta:
          $ref: '#/components/schemas/publicDecidedAssetCallToAction'
        imp_trackers:
          type: array
          items:
            type: string
          description: Impression tracking links which should be fired when an impression of this item occurs.
        click_trackers:
          type: array
          items:
            type: string
          description: Click tracking links which should be fired when a click of this item occurs.
        track_id:
          type: string
          description: Identifier to track the decided item.
      description: Asset attributes to be displayed in the ad.
      required:
      - id
      - imp_trackers
      - click_trackers
      additionalProperties: true
    publicDecidedAssetBanner:
      type: object
      properties:
        media_type:
          $ref: '#/components/schemas/commonMediaType'
        image_url:
          type: string
          description: Image URL of the banner. Only filled if banner media type is IMAGE
        video_url:
          type: string
          description: Video URL of the banner. Only filled if banner media type is VIDEO
        video_thumbnail_url:
          type: string
          description: Video thumbnail URL of the banner. Only filled if banner media type is VIDEO
      additionalProperties: true
    publicDecidedAssetCallToAction:
      type: object
      properties:
        text:
          type: string
          description: Text for the CTA button.
      additionalProperties: true
    publicDecidedAs

# --- truncated at 32 KB (88 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/moloco/refs/heads/main/openapi/moloco-commerce-media-decision-openapi.yml