AdReady (CPXi) Plans Controller API

The plans-controller API from AdReady (CPXi) — 14 operation(s) for plans-controller.

Operations 17

GET /api/plans/{planId} #
PUT /api/plans/{planId} #
DELETE /api/plans/{planId} #
PUT /api/plans/{planId}/updateFlag #
PUT /api/plans/{planId}/changeTargetingLevel #
PUT /api/plans/{planId}/changeProductTypeAllocation #
PUT /api/plans/{planId}/changeProductCategoryAllocation #
PUT /api/plans/{planId}/changeDisplayDeviceAllocation #
GET /api/plans #
POST /api/plans #
POST /api/plans/{planId}/workflowEmailNotification #
POST /api/plans/{planId}/updateStatusEmailNotification #
POST /api/plans/{planId}/sendSubmitOrderNotification #
POST /api/plans/{planId}/sendEmailNotification #
POST /api/plans/{planId}/export #
POST /api/plans/{planId}/createOrder #
POST /api/plans/{planId}/changeAppliedEmailNotification #

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for apis

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

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/adready-cpxi-plans-controller-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

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

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

OpenAPI Specification

adready-cpxi-plans-controller-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kickstart Plans Controller API
  description: API documentation for Kickstart services
  contact:
    name: Your Team
    email: support@example.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '1.0'
servers:
- url: https://platform.digitalremedy.com
  description: Generated server url
tags:
- name: plans-controller
paths:
  /api/plans/{planId}:
    get:
      tags:
      - plans-controller
      operationId: get_3
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - name: includePacing
        in: query
        required: false
        schema:
          type: boolean
          default: false
      - name: advertiser
        in: query
        required: false
        schema:
          type: string
      - name: client
        in: query
        required: false
        schema:
          type: string
      - name: xandrId
        in: query
        required: false
        schema:
          type: string
      - name: pixel
        in: query
        required: false
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
    put:
      tags:
      - plans-controller
      operationId: updatePlan
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Plan'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
    delete:
      tags:
      - plans-controller
      operationId: delete_3
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /api/plans/{planId}/updateFlag:
    put:
      tags:
      - plans-controller
      operationId: updateFlag
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Plan'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponseBoolean'
  /api/plans/{planId}/changeTargetingLevel:
    put:
      tags:
      - plans-controller
      operationId: changeTargetingLevel
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalcReq'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
  /api/plans/{planId}/changeProductTypeAllocation:
    put:
      tags:
      - plans-controller
      operationId: changeProductTypeAllocation
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalcReq'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
  /api/plans/{planId}/changeProductCategoryAllocation:
    put:
      tags:
      - plans-controller
      operationId: changeProductCategoryAllocation
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalcReq'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
  /api/plans/{planId}/changeDisplayDeviceAllocation:
    put:
      tags:
      - plans-controller
      operationId: changeDisplayDeviceAllocation
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalcReq'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
  /api/plans:
    get:
      tags:
      - plans-controller
      operationId: getAll_1
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
      - name: pageNumber
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: sortKey
        in: query
        required: false
        schema:
          type: string
      - name: sortOrder
        in: query
        required: false
        schema:
          type: string
      - name: crFilter
        in: query
        required: false
        schema:
          type: boolean
      - name: flip
        in: query
        required: false
        schema:
          type: boolean
      - name: includePacing
        in: query
        required: false
        schema:
          type: boolean
      - name: advertiser
        in: query
        required: false
        schema:
          type: string
      - name: client
        in: query
        required: false
        schema:
          type: string
      - name: xandrId
        in: query
        required: false
        schema:
          type: string
      - name: pixel
        in: query
        required: false
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePageResponsePlan'
    post:
      tags:
      - plans-controller
      operationId: create_3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Plan'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
  /api/plans/{planId}/workflowEmailNotification:
    post:
      tags:
      - plans-controller
      operationId: workflowEmailNotification
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailNotification'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
  /api/plans/{planId}/updateStatusEmailNotification:
    post:
      tags:
      - plans-controller
      operationId: updateStatusEmailNotification
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailNotification'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
  /api/plans/{planId}/sendSubmitOrderNotification:
    post:
      tags:
      - plans-controller
      operationId: sendSubmitOrderNotification
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitOrder'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
  /api/plans/{planId}/sendEmailNotification:
    post:
      tags:
      - plans-controller
      operationId: emailNotification
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailNotification'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
  /api/plans/{planId}/export:
    post:
      tags:
      - plans-controller
      operationId: exportOrder
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExportSchedule'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /api/plans/{planId}/createOrder:
    post:
      tags:
      - plans-controller
      operationId: createOrder
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
      deprecated: true
  /api/plans/{planId}/changeAppliedEmailNotification:
    post:
      tags:
      - plans-controller
      operationId: changeAppliedEmailNotification
      parameters:
      - name: planId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailNotification'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponsePlan'
components:
  schemas:
    LineItemTargeting:
      type: object
      properties:
        id:
          type: integer
          format: int32
        targetableElementId:
          type: integer
          format: int32
        value: {}
    ApiResponseBoolean:
      type: object
      properties:
        status:
          type: integer
          format: int32
        message:
          type: string
        result:
          type: boolean
    ApiResponsePageResponsePlan:
      type: object
      properties:
        status:
          type: integer
          format: int32
        message:
          type: string
        result:
          $ref: '#/components/schemas/PageResponsePlan'
    ApiResponsePlan:
      type: object
      properties:
        status:
          type: integer
          format: int32
        message:
          type: string
        result:
          $ref: '#/components/schemas/Plan'
    CompanionAsset:
      type: object
      properties:
        adTagCode:
          type: string
        assetType:
          type: string
          enum:
          - image
          - ad_tag
          - facebook
          - twitter
          - pinterest
        createdAt:
          type: string
          format: date-time
        createdBy:
          type: string
        deletedAt:
          type: string
          format: date-time
        id:
          type: integer
          format: int32
        images:
          type: array
          items:
            $ref: '#/components/schemas/FileData'
          uniqueItems: true
        landingPageURL:
          type: string
        location:
          type: string
          enum:
          - top
          - bottom
          - top_mobile
          - bottom_mobile
          - right_rail
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          type: string
    LocationData:
      type: object
      properties:
        addresses:
          type: array
          items:
            type: string
        locationId:
          type: integer
          format: int32
    LineItemVendors:
      type: object
      properties:
        id:
          type: integer
          format: int32
        vendorId:
          type: integer
          format: int32
    LineItem:
      type: object
      properties:
        adreadyId:
          type: string
        assignedTo:
          type: integer
          format: int32
        audienceName:
          type: string
        billingType:
          type: string
          enum:
          - FIRST_PARTY
          - THIRD_PARTY
          - THIRD_PARTY_FLASHTALKING
          - THIRD_PARTY_SIZMEK
          - THIRD_PARTY_INNOVID
          - THIRD_PARTY_OTHERS
        budgetGroup:
          $ref: '#/components/schemas/BudgetGroup'
        budgetGroupId:
          type: integer
          format: int32
        contactUserId:
          type: integer
          format: int32
        crLineItems:
          type: array
          items:
            $ref: '#/components/schemas/LineItem'
          uniqueItems: true
        createdAt:
          type: string
          format: date-time
        createdBy:
          type: string
        creatives:
          type: array
          items:
            $ref: '#/components/schemas/Creative'
          uniqueItems: true
        customUserId:
          type: integer
          format: int32
        dayParting: {}
        deletedAt:
          type: string
          format: date-time
        deviceTypes:
          type: array
          items:
            $ref: '#/components/schemas/LineItemDeviceTypes'
          uniqueItems: true
        externalName:
          type: string
        externalSourceId:
          type: integer
          format: int32
        fixCpm:
          type: number
        flag:
          type: boolean
        flagId:
          type: integer
          format: int32
        flightEndDate:
          type: string
          format: date-time
        flightStartDate:
          type: string
          format: date-time
        flip:
          type: boolean
        frequencyRecency: {}
        goalMetric:
          type: number
          format: double
        id:
          type: integer
          format: int32
        impressions:
          type: integer
          format: int32
        incrementality:
          type: boolean
        kpis:
          type: array
          items:
            $ref: '#/components/schemas/Kpi'
          uniqueItems: true
        lineItemBudget:
          type: number
        lucid:
          type: boolean
        managementFeeOnly:
          type: boolean
        markup:
          type: number
        mediaSpend:
          type: number
        name:
          type: string
        note:
          $ref: '#/components/schemas/Note'
        pace:
          type: number
          format: double
        parentId:
          type: integer
          format: int32
        planId:
          type: integer
          format: int32
        price:
          type: number
        pricingType:
          type: string
          enum:
          - CPM
          - COST_PLUS
          - FIXED_MARGIN
          - ADDED_VALUE
          - CPA
        productCategoryId:
          type: integer
          format: int32
        productTypes:
          type: array
          items:
            $ref: '#/components/schemas/LineItemProductType'
          uniqueItems: true
        qa: {}
        retargetingNotes:
          type: string
        siteRetargeting:
          type: boolean
        spend:
          type: number
          format: double
        statusId:
          type: integer
          format: int32
        tagsTrackers:
          type: boolean
        targetings:
          type: array
          items:
            $ref: '#/components/schemas/LineItemTargeting'
          uniqueItems: true
        taskTypeId:
          type: integer
          format: int32
        trackingPixels:
          type: array
          items:
            $ref: '#/components/schemas/TrackingPixelData'
          uniqueItems: true
        type:
          type: string
          enum:
          - LINE
          - FLIGHT
          - CHANGE
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          type: string
        vendors:
          type: array
          items:
            $ref: '#/components/schemas/LineItemVendors'
          uniqueItems: true
        workflowId:
          type: integer
          format: int32
        xandrLineItemId:
          type: integer
          format: int32
    Headline:
      type: object
      properties:
        id:
          type: integer
          format: int32
        value:
          type: string
    LineItemProductType:
      type: object
      properties:
        categoryPath:
          type: string
        goalId:
          type: integer
          format: int32
        googleAdAccount:
          type: string
        id:
          type: integer
          format: int32
        placementType:
          type: string
        productTypeId:
          type: integer
          format: int32
        productTypes:
          type: array
          items:
            type: string
    TargetingTypeAllocation:
      type: object
      properties:
        id:
          type: integer
          format: int32
        level:
          type: integer
          format: int32
        targetingType:
          type: string
          enum:
          - NONE
          - PUBLISHER
          - GEO
          - AUDIENCE
          - CONTEXTUAL
    Plan:
      type: object
      properties:
        accountId:
          type: integer
          format: int32
        advertiserId:
          type: integer
          format: int32
        advertiserIsNew:
          type: boolean
        agencyId:
          type: integer
          format: int32
        brandSafetyLevelId:
          type: integer
          format: int32
        budget:
          type: number
        campaignName:
          type: string
        contactUserId:
          type: integer
          format: int32
        crPlans:
          type: array
          items:
            $ref: '#/components/schemas/Plan'
          uniqueItems: true
        createdAt:
          type: string
          format: date-time
        createdBy:
          type: string
        customOrderId:
          type: string
        customUserId:
          type: integer
          format: int32
        deletedAt:
          type: string
          format: date-time
        emailSubject:
          type: string
        endedFlightDate:
          type: string
          format: date-time
        externalSourceId:
          type: integer
          format: int32
        files:
          type: array
          items:
            $ref: '#/components/schemas/FileData'
          uniqueItems: true
        flag:
          type: boolean
        flagId:
          type: integer
          format: int32
        flightEndDate:
          type: string
          format: date-time
        flightStartDate:
          type: string
          format: date-time
        flip:
          type: boolean
        flipCampaignInfo: {}
        goalMetric:
          type: number
          format: double
        id:
          type: integer
          format: int32
        impressions:
          type: integer
          format: int32
        industryId:
          type: integer
          format: int32
        internalNote:
          $ref: '#/components/schemas/Note'
        ioId:
          type: integer
          format: int32
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/LineItem'
          uniqueItems: true
        location:
          $ref: '#/components/schemas/LocationData'
        lucid:
          type: boolean
        lucidCampaignInfo: {}
        marketingObjectiveId:
          type: integer
          format: int32
        nonEndedFlightDate:
          type: integer
          format: int32
        note:
          $ref: '#/components/schemas/Note'
        ownerId:
          type: integer
          format: int32
        pace:
          type: number
          format: double
        parentId:
          type: integer
          format: int32
        planFlip:
          type: boolean
        political:
          type: boolean
        productCategoryAllocations:
          type: array
          items:
            $ref: '#/components/schemas/ProductCategoryAllocation'
          uniqueItems: true
        source:
          type: string
          enum:
          - ADREADY
          - FLIPPLUS
          - DMM
          - PIO
          - VIA
        spend:
          type: number
          format: double
        state:
          type: string
          enum:
          - PLAN
          - IO
          - CHANGE
          - EXTEND
        statusId:
          type: integer
          format: int32
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          type: string
        verificationPartners: {}
        xandrIoId:
          type: integer
          format: int32
    ProductCategoryAllocation:
      type: object
      properties:
        avgCPM:
          type: number
        budget:
          type: number
        budgetPercentage:
          type: number
        id:
          type: integer
          format: int32
        impressions:
          type: integer
          format: int32
        planningMatrixEntries:
          type: array
          items:
            $ref: '#/components/schemas/PlanningMatrixEntry'
        productCategeoryDeviceAllocations:
          type: array
          items:
            $ref: '#/components/schemas/ProductCategeoryDeviceAllocation'
          uniqueItems: true
        productCategoryId:
          type: integer
          format: int32
        productTypeAllocations:
          type: array
          items:
            $ref: '#/components/schemas/ProductTypeAllocation'
          uniqueItems: true
    PageResponsePlan:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/Plan'
        first:
          type: boolean
        last:
          type: boolean
        pageNumber:
          type: integer
          format: int32
        pageSize:
          type: integer
          format: int32
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    SubmitOrder:
      type: object
      properties:
        crPlanId:
          type: integer
          format: int32
        emails:
          type: array
          items:
            type: string
        notes:
          type: string
    Creative:
      type: object
      properties:
        addCloseCaptioning:
          type: boolean
        bodyText:
          type: string
        brandName:
          type: string
        businessName:
          type: string
        callToAction:
          type: string
        clickThroughURL:
          type: string
        companionAsset:
          type: boolean
        companionAssets:
          type: array
          items:
            $ref: '#/components/schemas/CompanionAsset'
          uniqueItems: true
        createdAt:
          type: string
          format: date-time
        createdBy:
          type: string
        creativeEndDate:
          type: string
          format: date-time
        creativeStartDate:
          type: string
          format: date-time
        creativeType:
          type: string
          enum:
          - normal
          - search
          - social
          - pay_per_call
          - url_only
          - native_display
          - native_video
          - native_article
          - youtube_bumper_video
          - youtube_nonskippable_video
          - social_tiktok
          - social_snapchat
        cta:
          type: string
        deletedAt:
          type: string
          format: date-time
        description1:
          type: string
        description2:
          type: string
        displayPath1:
          type: string
        displayPath2:
          type: string
        files:
          type: array
          items:
            $ref: '#/components/schemas/FileData'
          uniqueItems: true
        headline1:
          type: string
        headline2:
          type: string
        headline3:
          type: string
        headlines:
          type: array
          items:
            $ref: '#/components/schemas/Headline'
        id:
          type: integer
          format: int32
        name:
          type: string
        percentOfRetargetingBudget:
          type: number
          format: double
        phoneNumber:
          type: string
        previewText:
          type: string
        socialUrl:
          type: string
        trueView:
          type: boolean
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          type: string
    ApiResponse:
      type: object
      properties:
        status:
          type: integer
          format: int32
        message:
          type: string
        result: {}
    Note:
      type: object
      properties:
        files:
          type: array
          items:
            $ref: '#/components/schemas/FileData'
          uniqueItems: true
        id:
          type: integer
          format: int32
        value:
          type: string
    Kpi:
      type: object
      properties:
        benchmark:
          type: number
        deletedAt:
          type: string
          format: date-time
        id:
          type: integer
          format: int32
        kpiId:
          type: integer
          format: int32
        notes:
          type: string
        value:
          type: string
    ExportSchedule:
      type: object
      properties:
        createdAt:
          type: string
          format: date-time
        createdBy:
          type: string
        deletedAt:
          type: string
          format: date-time
        emailIds:
          type: string
        emailSource:
          type: string
        id:
          type: integer
          format: int32
        lineItemId:
          type: integer
          format: int32
        notes:
          type: string
        planId:
          type: integer
          format: int32
        scheduledTime:
          type: string
          format: date-time
        status:
          type: string
          enum:
          - SCHEDULED
          - STARTED
          - FINISHED
          - FAILED
          - DELETED
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          type: string
    BudgetGroup:
      type: object
      properties:
        budget:
          type: number
        budgetGroupId:
          type: integer
          format: int32
        id:
          type: integer
          format: int32
        markup:
          type: number
        planId:
          type: integer
          format: int32
    CalcReq:
      type: object
      properties:
        productCategoryId:
          type: integer
          format: int32
          writeOnly: true
        productTypeId:
          type: integer
          format: int32
          writeOnly: true
        deviceTypeId:
          type: integer
          format: int32
          writeOnly: true
        targetingType:
          type: string
          writeOnly: true
        level:
          type: integer
          format: int32
          writeOnly: true
        fixCpm:
          type: number
          format: double
          writeOnly: true
        percentage:
          type: number
          format: float
          writeOnly: true
    ProductTypeAllocation:
      type: object
      properties:
        budget:
          type: number
        budgetPercentage:
          type: number
        cpm:
          type: number
        fixCpm:
          type: number
        id:
          type: integer
          format: int32
        impressions:
          type: integer
          format: int32
        maxCpm:
          type: number
        productTypeId:
          type: integer
          format: int32
        targetingTypeAllocations:
          type: array
          items:
            $ref: '#/components/schemas/TargetingTypeAllocation'
          uniqueItems: true
    LineItemDeviceTypes:
      type: object
      properties:
        deletedAt:
          type: string
          format: date-time
        deviceTypeId:
          type: integer
          format: int32
        id:
          type: integer
          format: int32
    TrackingPixelData:
      type: object
      properties:
        files:
          type: array
          items:
            $ref: '#/components/schemas/FileData'
          uniqueItems: true
        id:
          ty

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adready-cpxi/refs/heads/main/openapi/adready-cpxi-plans-controller-api-openapi.yml