> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aiderx.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 광고 유닛 등록

> 캐시에 ad_unit 정보를 저장합니다.
광고 유닛 메타데이터를 기반으로 제공 로직을 갱신하는 데 사용합니다.



## OpenAPI

````yaml /openapi/decision.api.ko-dev.json post /app/api/cache/ad-units
openapi: 3.1.0
info:
  contact:
    email: a2support@aiderx.io
    name: A2 Support
    url: https://aiderx.io
  description: |-
    ### 소개
    Decision API는 사용자 요청 또는 컨텍스트 정보를 바탕으로 광고나 콘텐츠를 실시간으로 선택하고 배포합니다.
    빠른 응답과 동적 기능을 통해 최적의 광고 또는 추천을 제공하여 사용자가 가능한 가장 높은 가치를 얻도록 합니다.

    다양한 알고리즘, 머신러닝 모델 및 규칙 기반 로직을 적용할 수 있어 시스템이 끊임없이 변하는 조건에 유연하게 적응할 수 있습니다.
  title: Decision API
  version: dev
  x-logo:
    altText: A2 Logo
    url: >-
      https://cdn.prod.website-files.com/668de9e1f25ab5675d87758d/6690cf1bdce95af5e3522c25_a2_logo_800_250.png
servers: []
security: []
tags:
  - description: 광고 요청, 캐시 설정 및 광고 제공 모듈의 기타 매개변수를 구성하기 위한 API입니다.
    name: Ad Serving
  - description: 추천 요청을 위한 API
    name: Recommendation Serving
  - description: >-
      광고 제공 서버의 캐시를 조작하기 위한 API입니다.


      ### **중요**

      Serving 서버의 광고 또는 추천 관련 캐시 데이터를 직접 조작하는 경우 Ad Manager에서 광고 또는 추천 데이터를 함께
      수정하지 않는 것을 **강력히 권장합니다.**


      대신 모든 광고 또는 추천 데이터 변경은 Ad Manager API를 통해 처리하는 것을 **권장합니다.**

      Serving 서버에서 변경한 내용은 Ad Manager에 반영되지 않으므로 **데이터 무결성**이 손상될 수 있습니다.
    name: Cache Management
  - description: 광고 서빙 서버 설정 API
    name: Configuration
  - description: 광고 또는 추천과 관련된 전환, 노출 및 클릭 로그를 수신하는 API입니다.
    name: Ad Log
paths:
  /app/api/cache/ad-units:
    post:
      tags:
        - Cache Management
      summary: 광고 유닛 등록
      description: |-
        캐시에 ad_unit 정보를 저장합니다.
        광고 유닛 메타데이터를 기반으로 제공 로직을 갱신하는 데 사용합니다.
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: '#/components/schemas/AdUnit'
              type: array
        required: true
      responses:
        '204':
          description: 성공
        '400':
          content:
            text/plain:
              schema:
                type: string
          description: 요청 본문을 JSON으로 파싱하지 못했습니다.
        '415':
          content:
            text/plain:
              schema:
                type: string
          description: '`Content-Type: application/json`인 요청이 필요합니다.'
        '422':
          content:
            text/plain:
              schema:
                type: string
          description: JSON 본문을 대상 형식으로 역직렬화하지 못했습니다.
        '500':
          description: 내부 서버 오류입니다.
      security:
        - '': []
components:
  schemas:
    AdUnit:
      properties:
        ad_unit_sizes:
          description: |-
            타기팅 메타데이터 크기입니다.
            display/video.w/h의 제공 및 렌더링 크기와는 다릅니다.
          items:
            $ref: '#/components/schemas/AdUnitSize'
          type:
            - array
            - 'null'
        code:
          description: 광고 유닛 코드 식별자입니다.
          type: string
        created_at:
          description: 광고 유닛이 생성된 날짜와 시간입니다.
          format: date-time
          type: string
        created_by:
          description: 광고 유닛을 생성한 사용자의 ID입니다.
          format: uuid
          type: string
        description:
          description: 광고 유닛의 설명입니다.
          type:
            - string
            - 'null'
        display:
          allOf:
            - $ref: '#/components/schemas/DisplayPlacement'
          default:
            clktype: 1
            priv: 0
            unit: 2
          description: 디스플레이 지면일 수 있음을 나타내는 지면 하위 유형 객체이며 관련 세부 정보를 제공합니다.
        ext:
          allOf:
            - $ref: '#/components/schemas/AdUnitExt'
          default:
            algorithm: axa0
            approval_method: admin
            bcat: []
            default_cpa: 0
            default_cpc: 0
            display:
              enabled: 1
            native:
              enabled: 0
              render_mode: html
            payout: rates
            recommendation:
              enabled: 0
            responsive: fixed
            target_ecpm: 0
            video:
              enabled: 0
          description: 광고 유닛별 추가 확장 정보이며 기본값은 `AdUnitExt` 객체입니다.
        gpid:
          description: OpenRTB imp.ext.gpid에 대한 표준 지면 ID입니다.
          type:
            - string
            - 'null'
        id:
          description: 광고 유닛의 ID(uuid7)입니다.
          format: uuid
          type: string
        instl:
          allOf:
            - $ref: '#/components/schemas/Instl'
          default: 0
          description: |-
            전면 지면인지 나타냅니다. 0은 아니요, 1은 예입니다.
            디스플레이, 비디오, 네이티브에 적용됩니다.
        is_active:
          description: 광고 유닛이 활성 상태인지 나타냅니다.
          type:
            - boolean
            - 'null'
        name:
          description: 광고 유닛의 이름입니다.
          type: string
        native:
          allOf:
            - $ref: '#/components/schemas/NativePlacement'
          default:
            assets: []
          description: >-
            OpenRTB Native Ads 1.2 Native Markup Request Object를 기반으로 하며 AdCOM
            표준 네이티브 형식은 아닙니다.
        path:
          description: '광고 유닛의 계층형 경로입니다(예: "parent_id/child_id").'
          type: string
        recommendation:
          allOf:
            - $ref: '#/components/schemas/RecommendationPlacement'
          default:
            associated_item: {}
            ext: {}
            personalization: {}
            ptype: associated_item
            topn: 10
        video:
          allOf:
            - $ref: '#/components/schemas/VideoPlacement'
          default:
            boxing: 1
            maxext: 0
            podseq: 0
            skipafter: 0
            skipmin: 0
            slotinpod: 0
            unit: 2
          description: 비디오 지면일 수 있음을 나타내는 지면 하위 유형 객체이며 관련 세부 정보를 제공합니다.
      required:
        - id
        - name
        - code
        - path
        - created_by
        - created_at
      type: object
    AdUnitSize:
      description: 광고 유닛의 타기팅 크기 항목입니다.
      properties:
        h:
          description: 픽셀 단위 높이입니다.
          format: uint32
          minimum: 0
          type: integer
        w:
          description: 픽셀 단위 너비입니다.
          format: uint32
          minimum: 0
          type: integer
      required:
        - w
        - h
      type: object
    DisplayPlacement:
      properties:
        ampren:
          format: uint8
          maximum: 255
          minimum: 0
          type:
            - integer
            - 'null'
        api:
          items:
            format: uint16
            maximum: 65535
            minimum: 0
            type: integer
          type:
            - array
            - 'null'
        clktype:
          default: 1
          format: uint8
          maximum: 255
          minimum: 0
          type: integer
        context:
          anyOf:
            - $ref: '#/components/schemas/DisplayContext'
            - type: 'null'
        ctype:
          items:
            format: uint8
            maximum: 255
            minimum: 0
            type: integer
          type:
            - array
            - 'null'
        displayfmt:
          anyOf:
            - $ref: '#/components/schemas/DisplayFormat'
            - type: 'null'
        event:
          items:
            $ref: '#/components/schemas/EventSpec'
          type:
            - array
            - 'null'
        ext: true
        h:
          format: float
          type:
            - number
            - 'null'
        ifrbust:
          items:
            type: string
          type:
            - array
            - 'null'
        mime:
          items:
            type: string
          type:
            - array
            - 'null'
        pos:
          anyOf:
            - $ref: '#/components/schemas/PlacementPosition'
            - type: 'null'
        priv:
          default: 0
          format: uint8
          maximum: 255
          minimum: 0
          type: integer
        ptype:
          anyOf:
            - $ref: '#/components/schemas/DisplayPlacementTypes'
            - type: 'null'
        topframe:
          format: uint8
          maximum: 255
          minimum: 0
          type:
            - integer
            - 'null'
        unit:
          default: 2
          format: uint8
          maximum: 255
          minimum: 0
          type: integer
        w:
          format: float
          type:
            - number
            - 'null'
      type: object
    AdUnitExt:
      properties:
        algorithm:
          default: axa0
          description: 광고 유닛에 사용되는 알고리즘입니다.
          type: string
        approval_method:
          allOf:
            - $ref: '#/components/schemas/AdUnitApproval'
          default: admin
          description: 광고 유닛의 승인 방식입니다.
        bcat:
          default: []
          description: IAB 분류법을 사용하는 차단 광고주 카테고리이며 추가 민감 카테고리로 확장됩니다.
          items:
            type: string
          type:
            - array
            - 'null'
        default_cpa:
          default: 0
          description: 특정 목표 CPA가 없는 CPA 라인 아이템의 기본 CPA입니다. 기본값은 0.0입니다.
          format: double
          type: number
        default_cpc:
          default: 0
          description: 특정 목표 CPC가 없는 CPC 라인 아이템의 기본 CPC입니다. 기본값은 0.0입니다.
          format: double
          type: number
        display:
          default:
            enabled: 0
          description: JSON 형식의 디스플레이 전용 확장 데이터입니다.
        external_raw_data:
          description: 맵으로 표현되는 광고 유닛의 외부 원시 데이터입니다.
        implicit_app_inference:
          anyOf:
            - $ref: '#/components/schemas/ImplicitAppInference'
            - type: 'null'
          description: UA 키워드 매핑을 통한 대체 또는 암시적 모바일 앱 추론 설정입니다.
        native:
          allOf:
            - $ref: '#/components/schemas/AdUnitExtNative'
          default:
            enabled: 0
            render_mode: html
          description: 네이티브 전용 확장 데이터입니다.
        passback:
          description: 맵으로 표현되는 광고 유닛의 패스백 광고 태그입니다.
        payout:
          allOf:
            - $ref: '#/components/schemas/AdUnitPayout'
          default: rates
          description: 광고 유닛의 지급 유형입니다.
        public_url:
          description: |-
            이 광고 유닛의 이벤트 트래커 URL에 대한 공개 URL 재정의입니다.
            설정하면 이 광고 유닛에 대해 EdgeConfig.public_url을 재정의합니다.
          type:
            - string
            - 'null'
        publisher:
          description: 광고 유닛의 퍼블리셔 정보입니다.
        recommendation:
          default:
            enabled: 0
          description: JSON 형식의 추천 전용 확장 데이터입니다.
        responsive:
          allOf:
            - $ref: '#/components/schemas/AdUnitResponsiveness'
          default: fixed
          description: 광고 유닛이 반응형인지 나타냅니다.
        target_ecpm:
          default: 0
          description: 광고 유닛의 목표 eCPM(1,000회 노출당 유효 비용)입니다. 기본값은 0.0입니다.
          format: double
          type: number
        target_service:
          description: 광고 유닛의 대상 서비스입니다.
          type:
            - string
            - 'null'
        video:
          default:
            enabled: 0
          description: JSON 형식의 비디오 전용 확장 데이터입니다.
      type: object
    Instl:
      description: OpenRTB 전면 광고 플래그입니다.
      enum:
        - 0
        - 1
      type: integer
      x-enum-varnames:
        - 'No'
        - 'Yes'
    NativePlacement:
      description: >-
        OpenRTB Native Ads 1.2 Native Markup Request Object를 기반으로 하며 AdCOM 표준
        네이티브 형식은 아닙니다.
      properties:
        assets:
          default: []
          description: 네이티브 에셋 요청 정의입니다.
          items:
            $ref: '#/components/schemas/AssetRequest'
          type: array
        context:
          description: >-
            OpenRTB Native 컨텍스트 유형입니다(1=ContentCentric, 2=SocialCentric,
            3=ProductContext).
          format: uint16
          maximum: 65535
          minimum: 0
          type:
            - integer
            - 'null'
        contextsubtype:
          description: 'OpenRTB Native 컨텍스트 하위 유형입니다(예: 14=PrimarilyImageContent).'
          format: uint16
          maximum: 65535
          minimum: 0
          type:
            - integer
            - 'null'
        ext:
          description: 선택적 공급업체별 확장 정보입니다.
        plcmtcnt:
          description: OpenRTB Native 지면 수입니다.
          format: uint8
          maximum: 255
          minimum: 1
          type:
            - integer
            - 'null'
        plcmttype:
          description: >-
            OpenRTB Native 지면 유형입니다(1=Feed, 2=AtomicUnit, 3=OutsideOfContent,
            4=RecommendationWidget).
          format: uint16
          maximum: 65535
          minimum: 0
          type:
            - integer
            - 'null'
      type: object
    RecommendationPlacement:
      properties:
        associated_item:
          default: {}
          description: JSON 형식의 연결된 아이템 확장 데이터입니다.
        candidate_filtering:
          anyOf:
            - $ref: '#/components/schemas/CandidateFiltering'
            - type: 'null'
          description: 추천 대상의 필터링 속성
        content_filter_rule:
          anyOf:
            - $ref: '#/components/schemas/Expr'
            - type: 'null'
          description: 추천 대상의 필터링 규칙
        ext:
          default: {}
          description: 추가 광고 유닛별 확장 정보입니다.
        personalization:
          default: {}
          description: 개인화 추천에 특화된 확장 데이터 (JSON 형식)
        ptype:
          allOf:
            - $ref: '#/components/schemas/AdUnitSubtypeRecommendation'
          default: associated_item
          description: 광고 유닛 하위 유형입니다.
        topn:
          default: 10
          description: 추천할 아이템의 개수
          format: uint32
          maximum: 99
          minimum: 0
          type: integer
      type: object
    VideoPlacement:
      properties:
        api:
          items:
            format: uint16
            maximum: 65535
            minimum: 0
            type: integer
          type:
            - array
            - 'null'
        boxing:
          default: 1
          format: uint8
          maximum: 255
          minimum: 0
          type:
            - integer
            - 'null'
        clktype:
          format: uint8
          maximum: 255
          minimum: 0
          type:
            - integer
            - 'null'
        comp:
          items:
            $ref: '#/components/schemas/Companion'
          type:
            - array
            - 'null'
        comptype:
          items:
            $ref: '#/components/schemas/CompanionType'
          type:
            - array
            - 'null'
        ctype:
          items:
            format: uint32
            minimum: 0
            type: integer
          type:
            - array
            - 'null'
        delay:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        delivery:
          items:
            $ref: '#/components/schemas/DeliveryMethod'
          type:
            - array
            - 'null'
        expdir:
          items:
            $ref: '#/components/schemas/ExpandableDirection'
          type:
            - array
            - 'null'
        ext: true
        h:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        linear:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        maxbitr:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        maxdur:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        maxext:
          default: 0
          format: int32
          type:
            - integer
            - 'null'
        maxseq:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        mime:
          items:
            type: string
          type:
            - array
            - 'null'
        minbitr:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        mincpmpersec:
          format: double
          type:
            - number
            - 'null'
        mindur:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        overlayexpdir:
          items:
            $ref: '#/components/schemas/ExpandableDirection'
          type:
            - array
            - 'null'
        playend:
          anyOf:
            - $ref: '#/components/schemas/PlaybackCessationMode'
            - type: 'null'
        playmethod:
          items:
            format: uint8
            maximum: 255
            minimum: 0
            type: integer
          type:
            - array
            - 'null'
        poddur:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        podid:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        podseq:
          default: 0
          format: int8
          maximum: 127
          minimum: -128
          type:
            - integer
            - 'null'
        pos:
          anyOf:
            - $ref: '#/components/schemas/PlacementPosition'
            - type: 'null'
        ptype:
          format: uint8
          maximum: 255
          minimum: 0
          type:
            - integer
            - 'null'
        rqddurs:
          items:
            format: uint32
            minimum: 0
            type: integer
          type:
            - array
            - 'null'
        skip:
          format: uint8
          maximum: 255
          minimum: 0
          type:
            - integer
            - 'null'
        skipafter:
          default: 0
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        skipmin:
          default: 0
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        slotinpod:
          default: 0
          format: int8
          maximum: 127
          minimum: -128
          type:
            - integer
            - 'null'
        unit:
          default: 2
          format: uint8
          maximum: 255
          minimum: 0
          type:
            - integer
            - 'null'
        w:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
      type: object
    DisplayContext:
      enum:
        - ContentCentric
        - ArticleContent
        - VideoContent
        - AudioContent
        - ImageContent
        - UserGeneratedContent
        - SocialCentric
        - EmailContent
        - ChatContent
        - ProductContext
        - AppStore
        - ProductReviews
      type: string
    DisplayFormat:
      properties:
        expdir:
          anyOf:
            - $ref: '#/components/schemas/ExpandableDirection'
            - type: 'null'
        ext: true
        h:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        hratio:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        w:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        wratio:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
      type: object
    EventSpec:
      properties:
        api:
          items:
            format: uint16
            maximum: 65535
            minimum: 0
            type: integer
          type:
            - array
            - 'null'
        ext: true
        jstrk:
          items:
            type: string
          type:
            - array
            - 'null'
        method:
          items:
            $ref: '#/components/schemas/EventTrackingMethod'
          type:
            - array
            - 'null'
        pxtrk:
          items:
            type: string
          type:
            - array
            - 'null'
        type:
          $ref: '#/components/schemas/EventType'
        wjs:
          default: 1
          format: int32
          type: integer
        wpx:
          default: 1
          format: int32
          type: integer
      required:
        - type
      type: object
    PlacementPosition:
      enum:
        - Unknown
        - AboveTheFold
        - Locked
        - BelowTheFold
        - Header
        - Footer
        - Sidebar
        - FullScreen
      type: string
    DisplayPlacementTypes:
      enum:
        - Feed
        - AtomicUnit
        - OutsideCore
        - RecommendationWidget
      type: string
    AdUnitApproval:
      enum:
        - admin
        - delegate
      type: string
    ImplicitAppInference:
      properties:
        android_bundle:
          type:
            - string
            - 'null'
        app_name:
          type:
            - string
            - 'null'
        cat:
          items:
            type: string
          type:
            - array
            - 'null'
        ios_bundle:
          type:
            - string
            - 'null'
        ua_keywords:
          default: []
          items:
            type: string
          type: array
      type: object
    AdUnitExtNative:
      properties:
        enabled:
          default: 0
          description: 광고 유닛에서 네이티브 광고가 활성화되었는지 나타냅니다(0 또는 1).
          format: int64
          type: integer
        render_mode:
          allOf:
            - $ref: '#/components/schemas/NativeRenderMode'
          default: html
          description: 이 광고 유닛의 네이티브 렌더링 모드입니다.
      type: object
    AdUnitPayout:
      enum:
        - rates
        - revenue_share
        - none
      type: string
    AdUnitResponsiveness:
      enum:
        - fixed
        - resized
      type: string
    AssetRequest:
      anyOf:
        - required:
            - title
        - required:
            - img
        - required:
            - video
        - required:
            - data
      properties:
        data:
          anyOf:
            - $ref: '#/components/schemas/DataAssetRequest'
            - type: 'null'
        ext: true
        id:
          format: int32
          type: integer
        img:
          anyOf:
            - $ref: '#/components/schemas/ImageAssetRequest'
            - type: 'null'
        required:
          anyOf:
            - $ref: '#/components/schemas/IsRequired2'
            - type: 'null'
        title:
          anyOf:
            - $ref: '#/components/schemas/TitleAssetRequest'
            - type: 'null'
        video:
          anyOf:
            - $ref: '#/components/schemas/VideoAssetRequest'
            - type: 'null'
      required:
        - id
      type: object
    CandidateFiltering:
      properties:
        method:
          allOf:
            - $ref: '#/components/schemas/CandidateFilteringMethod'
          default: NoFilter
          description: 필터링 방법
      type: object
    Expr:
      oneOf:
        - properties:
            data:
              $ref: '#/components/schemas/Compare'
            type:
              const: cmp
              type: string
          required:
            - type
            - data
          type: object
        - properties:
            data:
              items:
                $ref: '#/components/schemas/Expr'
              type: array
            type:
              const: and
              type: string
          required:
            - type
            - data
          type: object
        - properties:
            data:
              items:
                $ref: '#/components/schemas/Expr'
              type: array
            type:
              const: or
              type: string
          required:
            - type
            - data
          type: object
        - properties:
            data:
              $ref: '#/components/schemas/Expr'
            type:
              const: not
              type: string
          required:
            - type
            - data
          type: object
    AdUnitSubtypeRecommendation:
      oneOf:
        - const: associated_item
          description: 연관 상품 광고 유닛 하위 유형입니다.
          type: string
        - const: personalization
          description: 개인화 광고 유닛 하위 유형입니다.
          type: string
    Companion:
      properties:
        display:
          anyOf:
            - $ref: '#/components/schemas/DisplayPlacement'
            - type: 'null'
        ext: true
        id:
          type:
            - string
            - 'null'
        vcm:
          format: int32
          type:
            - integer
            - 'null'
      type: object
    CompanionType:
      enum:
        - Static
        - HTML
        - IFrame
      type: string
    DeliveryMethod:
      enum:
        - Streaming
        - Progressive
        - Download
      type: string
    ExpandableDirection:
      enum:
        - Left
        - Right
        - Up
        - Down
        - FullScreen
        - ResizeMinimize
      type: string
    PlaybackCessationMode:
      enum:
        - OnVideoCompletion
        - OnLeavingViewport
        - OnLeavingViewportContinuesAsAUnit
      type: string
    EventTrackingMethod:
      enum:
        - 1
        - 2
      type: integer
    EventType:
      enum:
        - 1
        - 2
        - 3
        - 4
        - 5
      type: integer
    NativeRenderMode:
      description: 네이티브 렌더링 모드입니다. 서버 렌더링 HTML 마크업 또는 클라이언트 렌더링용 원시 에셋 데이터를 사용합니다.
      enum:
        - html
        - asset
      type: string
    DataAssetRequest:
      properties:
        ext: true
        len:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        type:
          format: uint16
          maximum: 65535
          minimum: 0
          type: integer
      required:
        - type
      type: object
    ImageAssetRequest:
      properties:
        ext: true
        h:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        hmin:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        mimes:
          items:
            type: string
          type:
            - array
            - 'null'
        type:
          format: uint16
          maximum: 65535
          minimum: 0
          type:
            - integer
            - 'null'
        w:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
        wmin:
          format: uint32
          minimum: 0
          type:
            - integer
            - 'null'
      type: object
    IsRequired2:
      enum:
        - 0
        - 1
      type: integer
      x-enum-varnames:
        - 'No'
        - 'Yes'
    TitleAssetRequest:
      properties:
        ext: true
        len:
          format: uint32
          minimum: 0
          type: integer
      required:
        - len
      type: object
    VideoAssetRequest:
      properties:
        ext: true
        linearity:
          anyOf:
            - $ref: '#/components/schemas/LinearityMode'
            - type: 'null'
        maxduration:
          format: uint32
          minimum: 0
          type: integer
        mimes:
          items:
            type: string
          type: array
        minduration:
          format: uint32
          minimum: 0
          type: integer
        protocols:
          items:
            format: uint16
            maximum: 65535
            minimum: 0
            type: integer
          type: array
      required:
        - mimes
        - minduration
        - maxduration
        - protocols
      type: object
    CandidateFilteringMethod:
      enum:
        - NoFilter
        - ViewPenalty
        - ViewOut
      type: string
    Compare:
      properties:
        lhs:
          items:
            type: string
          type: array
        op:
          $ref: '#/components/schemas/Op'
        rhs: true
      required:
        - lhs
        - op
        - rhs
      type: object
    LinearityMode:
      enum:
        - 1
        - 2
      type: integer
      x-enum-varnames:
        - Linear
        - NonLinear
    Op:
      enum:
        - eq
        - ne
        - lt
        - le
        - gt
        - ge
        - in
        - nin
      type: string

````