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

# Edit



## OpenAPI

````yaml /openapi.json post /api/v1/brands/{brand_id}/google-ads/strategies/{strategy_id}/revisions
openapi: 3.1.0
info:
  title: AITasker
  version: 0.1.0
servers: []
security: []
paths:
  /api/v1/brands/{brand_id}/google-ads/strategies/{strategy_id}/revisions:
    post:
      tags:
        - Google Ads Create
      summary: Edit
      operationId: >-
        edit_api_v1_brands__brand_id__google_ads_strategies__strategy_id__revisions_post
      parameters:
        - name: brand_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Brand Id
        - name: strategy_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Strategy Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleStrategyEditRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleStrategyReadResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    GoogleStrategyEditRequest:
      properties:
        baseRevision:
          type: integer
          minimum: 1
          title: Baserevision
        context:
          $ref: '#/components/schemas/ContextSnapshotRef'
        result:
          oneOf:
            - $ref: '#/components/schemas/GoogleSingleAdResult'
            - $ref: '#/components/schemas/GoogleStrategyResult-Input'
          title: Result
          discriminator:
            propertyName: kind
            mapping:
              single_ad:
                $ref: '#/components/schemas/GoogleSingleAdResult'
              strategy:
                $ref: '#/components/schemas/GoogleStrategyResult-Input'
      additionalProperties: false
      type: object
      required:
        - baseRevision
        - context
        - result
      title: GoogleStrategyEditRequest
    GoogleStrategyReadResponse:
      properties:
        strategy:
          $ref: '#/components/schemas/GoogleStrategySummary'
        selection:
          $ref: '#/components/schemas/StrategySelection-Output'
        result:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/GoogleSingleAdResult'
                - $ref: '#/components/schemas/GoogleStrategyResult-Output'
              discriminator:
                propertyName: kind
                mapping:
                  single_ad:
                    $ref: '#/components/schemas/GoogleSingleAdResult'
                  strategy:
                    $ref: '#/components/schemas/GoogleStrategyResult-Output'
            - type: 'null'
          title: Result
        jobs:
          items:
            $ref: '#/components/schemas/GoogleStrategyJobView'
          type: array
          maxItems: 100
          title: Jobs
      additionalProperties: false
      type: object
      required:
        - strategy
        - selection
      title: GoogleStrategyReadResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ContextSnapshotRef:
      properties:
        contextSnapshotId:
          type: string
          format: uuid
          title: Contextsnapshotid
        contextHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Contexthash
        artifactSchemaVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Artifactschemaversion
        packetSchemaVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Packetschemaversion
        projectionPolicyVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Projectionpolicyversion
        manifestHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Manifesthash
      additionalProperties: false
      type: object
      required:
        - contextSnapshotId
        - contextHash
        - artifactSchemaVersion
        - packetSchemaVersion
        - projectionPolicyVersion
        - manifestHash
      title: ContextSnapshotRef
    GoogleSingleAdResult:
      properties:
        kind:
          type: string
          const: single_ad
          title: Kind
        value:
          $ref: '#/components/schemas/GoogleAdDraftRevision'
      additionalProperties: false
      type: object
      required:
        - kind
        - value
      title: GoogleSingleAdResult
    GoogleStrategyResult-Input:
      properties:
        kind:
          type: string
          const: strategy
          title: Kind
        value:
          $ref: '#/components/schemas/GoogleStrategyRevision-Input'
      additionalProperties: false
      type: object
      required:
        - kind
        - value
      title: GoogleStrategyResult
    GoogleStrategySummary:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        brandId:
          type: string
          format: uuid
          title: Brandid
        kind:
          type: string
          enum:
            - single_ad
            - strategy
          title: Kind
        scope:
          type: string
          enum:
            - single_ad
            - campaign
            - brand_strategy
          title: Scope
        title:
          type: string
          maxLength: 500
          minLength: 1
          title: Title
        currentRevision:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Currentrevision
        createdAt:
          type: string
          format: date-time
          title: Createdat
        updatedAt:
          type: string
          format: date-time
          title: Updatedat
      additionalProperties: false
      type: object
      required:
        - id
        - brandId
        - kind
        - scope
        - title
        - createdAt
        - updatedAt
      title: GoogleStrategySummary
    StrategySelection-Output:
      properties:
        brandId:
          type: string
          format: uuid
          title: Brandid
        scope:
          type: string
          enum:
            - single_ad
            - campaign
            - brand_strategy
          title: Scope
        contextSelection:
          $ref: '#/components/schemas/GoogleContextSelection'
        productIds:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 50
          title: Productids
        source:
          oneOf:
            - $ref: '#/components/schemas/NoSource'
            - $ref: '#/components/schemas/BrandDashboardSource'
            - $ref: '#/components/schemas/AccountTrackedGroupSource'
            - $ref: '#/components/schemas/AuthorizedAdSetSource'
          title: Source
          discriminator:
            propertyName: kind
            mapping:
              account_tracked_group:
                $ref: '#/components/schemas/AccountTrackedGroupSource'
              authorized_ad_set:
                $ref: '#/components/schemas/AuthorizedAdSetSource'
              brand_dashboard_group:
                $ref: '#/components/schemas/BrandDashboardSource'
              none:
                $ref: '#/components/schemas/NoSource'
        market:
          type: string
          maxLength: 80
          minLength: 2
          title: Market
        creativeLanguage:
          type: string
          maxLength: 40
          minLength: 2
          title: Creativelanguage
        outcome:
          type: string
          enum:
            - qualified_lead
            - purchase
            - awareness
            - consideration
          title: Outcome
        businessModel:
          type: string
          enum:
            - b2b
            - b2c
            - mixed
          title: Businessmodel
        offer:
          $ref: '#/components/schemas/UserOfferInput'
        economics:
          $ref: '#/components/schemas/EconomicsInput-Output'
        measurement:
          $ref: '#/components/schemas/MeasurementInput'
        requestedFamilies:
          items:
            type: string
            enum:
              - search
              - standard_shopping
              - performance_max
              - demand_gen
              - video
              - display_transition
          type: array
          maxItems: 6
          minItems: 1
          title: Requestedfamilies
        selectedFormat:
          anyOf:
            - type: string
              enum:
                - rsa
                - shopping_feed_plan
                - pmax_asset_group
                - demand_gen_image
                - demand_gen_carousel
                - demand_gen_video
                - youtube_video
            - type: 'null'
          title: Selectedformat
        selectedVideoSubtype:
          anyOf:
            - type: string
              enum:
                - skippable_in_stream
                - in_feed
                - shorts
                - bumper
                - non_skippable
                - non_skippable_ctv
                - video_views
                - efficient_reach
                - target_frequency
            - type: 'null'
          title: Selectedvideosubtype
        requestedCampaignCount:
          type: integer
          maximum: 50
          minimum: 1
          title: Requestedcampaigncount
          default: 1
        requestedGroupCount:
          type: integer
          maximum: 100
          minimum: 1
          title: Requestedgroupcount
          default: 1
        requestedOfferCount:
          type: integer
          maximum: 50
          minimum: 1
          title: Requestedoffercount
          default: 1
        requestedPersonaCount:
          type: integer
          maximum: 50
          minimum: 1
          title: Requestedpersonacount
          default: 1
        requestedLocaleCount:
          type: integer
          maximum: 20
          minimum: 1
          title: Requestedlocalecount
          default: 1
      additionalProperties: false
      type: object
      required:
        - brandId
        - scope
        - market
        - creativeLanguage
        - outcome
        - businessModel
        - offer
        - economics
        - requestedFamilies
      title: StrategySelection
    GoogleStrategyResult-Output:
      properties:
        kind:
          type: string
          const: strategy
          title: Kind
        value:
          $ref: '#/components/schemas/GoogleStrategyRevision-Output'
      additionalProperties: false
      type: object
      required:
        - kind
        - value
      title: GoogleStrategyResult
    GoogleStrategyJobView:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        strategyId:
          type: string
          format: uuid
          title: Strategyid
        kind:
          type: string
          enum:
            - single_ad
            - strategy
          title: Kind
        operation:
          type: string
          enum:
            - initial_strategy
            - single_ad_text
            - text_revision
            - media_batch
            - export
          title: Operation
        status:
          type: string
          enum:
            - queued
            - running
            - succeeded
            - partial
            - failed
            - cancel_requested
            - cancelled
            - needs_review
          title: Status
        baseRevision:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Baserevision
        resultRevision:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Resultrevision
        context:
          $ref: '#/components/schemas/ContextSnapshotRef'
        completedCells:
          type: integer
          minimum: 0
          title: Completedcells
          default: 0
        totalCells:
          type: integer
          minimum: 1
          title: Totalcells
        message:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Message
        createdAt:
          type: string
          format: date-time
          title: Createdat
        updatedAt:
          type: string
          format: date-time
          title: Updatedat
        result:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/GoogleSingleAdResult'
                - $ref: '#/components/schemas/GoogleStrategyResult-Output'
              discriminator:
                propertyName: kind
                mapping:
                  single_ad:
                    $ref: '#/components/schemas/GoogleSingleAdResult'
                  strategy:
                    $ref: '#/components/schemas/GoogleStrategyResult-Output'
            - type: 'null'
          title: Result
        items:
          items:
            $ref: '#/components/schemas/GoogleStrategyJobItemView'
          type: array
          maxItems: 200
          title: Items
      additionalProperties: false
      type: object
      required:
        - id
        - strategyId
        - kind
        - operation
        - status
        - context
        - totalCells
        - createdAt
        - updatedAt
      title: GoogleStrategyJobView
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    GoogleAdDraftRevision:
      properties:
        schemaVersion:
          type: string
          const: google-create-v1
          title: Schemaversion
          default: google-create-v1
        revision:
          type: integer
          minimum: 1
          title: Revision
        contextHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Contexthash
        contextSnapshotId:
          type: string
          format: uuid
          title: Contextsnapshotid
        evidencePacket:
          $ref: '#/components/schemas/EvidencePacketRef'
        rulesetVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Rulesetversion
        evidence:
          items:
            $ref: '#/components/schemas/EvidenceRef'
          type: array
          maxItems: 1000
          title: Evidence
        readiness:
          items:
            $ref: '#/components/schemas/ReadinessFinding'
          type: array
          maxItems: 200
          title: Readiness
        draftId:
          type: string
          format: uuid
          title: Draftid
        nativeText:
          oneOf:
            - $ref: '#/components/schemas/RsaText'
            - $ref: '#/components/schemas/PMaxAssetGroupText'
            - $ref: '#/components/schemas/DemandGenImageText'
            - $ref: '#/components/schemas/DemandGenCarouselText'
            - $ref: '#/components/schemas/DemandGenVideoText'
            - $ref: '#/components/schemas/YouTubeVideoText'
            - $ref: '#/components/schemas/ShoppingFeedPlan'
          title: Nativetext
          discriminator:
            propertyName: kind
            mapping:
              demand_gen_carousel:
                $ref: '#/components/schemas/DemandGenCarouselText'
              demand_gen_image:
                $ref: '#/components/schemas/DemandGenImageText'
              demand_gen_video:
                $ref: '#/components/schemas/DemandGenVideoText'
              pmax_asset_group:
                $ref: '#/components/schemas/PMaxAssetGroupText'
              rsa:
                $ref: '#/components/schemas/RsaText'
              shopping_feed_plan:
                $ref: '#/components/schemas/ShoppingFeedPlan'
              youtube_video:
                $ref: '#/components/schemas/YouTubeVideoText'
        mediaSlots:
          items:
            $ref: '#/components/schemas/PlannedMediaSlot'
          type: array
          maxItems: 200
          title: Mediaslots
      additionalProperties: false
      type: object
      required:
        - revision
        - contextHash
        - contextSnapshotId
        - evidencePacket
        - rulesetVersion
        - draftId
        - nativeText
      title: GoogleAdDraftRevision
    GoogleStrategyRevision-Input:
      properties:
        schemaVersion:
          type: string
          const: google-create-v1
          title: Schemaversion
          default: google-create-v1
        revision:
          type: integer
          minimum: 1
          title: Revision
        contextHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Contexthash
        contextSnapshotId:
          type: string
          format: uuid
          title: Contextsnapshotid
        evidencePacket:
          $ref: '#/components/schemas/EvidencePacketRef'
        rulesetVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Rulesetversion
        evidence:
          items:
            $ref: '#/components/schemas/EvidenceRef'
          type: array
          maxItems: 1000
          title: Evidence
        readiness:
          items:
            $ref: '#/components/schemas/ReadinessFinding'
          type: array
          maxItems: 200
          title: Readiness
        strategyId:
          type: string
          format: uuid
          title: Strategyid
        envelope:
          $ref: '#/components/schemas/ScopeEnvelope'
        objective:
          $ref: '#/components/schemas/GroundedClaim'
        primaryRecommendation:
          $ref: '#/components/schemas/CampaignPlan-Input'
        alternatives:
          items:
            $ref: '#/components/schemas/ChannelComparison'
          type: array
          maxItems: 20
          title: Alternatives
        campaigns:
          items:
            $ref: '#/components/schemas/CampaignPlan-Input'
          type: array
          maxItems: 50
          minItems: 1
          title: Campaigns
        experiments:
          items:
            $ref: '#/components/schemas/ExperimentPlan-Input'
          type: array
          maxItems: 50
          title: Experiments
      additionalProperties: false
      type: object
      required:
        - revision
        - contextHash
        - contextSnapshotId
        - evidencePacket
        - rulesetVersion
        - strategyId
        - envelope
        - objective
        - primaryRecommendation
        - campaigns
      title: GoogleStrategyRevision
    GoogleContextSelection:
      properties:
        audienceProfileVersionId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Audienceprofileversionid
        personaId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Personaid
        useIcp:
          type: boolean
          title: Useicp
          default: false
        scenarioId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Scenarioid
        useGuidelines:
          type: boolean
          title: Useguidelines
          default: true
        guidelinesId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Guidelinesid
      additionalProperties: false
      type: object
      title: GoogleContextSelection
    NoSource:
      properties:
        kind:
          type: string
          const: none
          title: Kind
          default: none
      additionalProperties: false
      type: object
      title: NoSource
    BrandDashboardSource:
      properties:
        kind:
          type: string
          const: brand_dashboard_group
          title: Kind
        domains:
          items:
            type: string
            maxLength: 253
            minLength: 1
          type: array
          maxItems: 100
          minItems: 1
          title: Domains
      additionalProperties: false
      type: object
      required:
        - kind
        - domains
      title: BrandDashboardSource
    AccountTrackedGroupSource:
      properties:
        kind:
          type: string
          const: account_tracked_group
          title: Kind
        groupId:
          type: string
          format: uuid
          title: Groupid
      additionalProperties: false
      type: object
      required:
        - kind
        - groupId
      title: AccountTrackedGroupSource
    AuthorizedAdSetSource:
      properties:
        kind:
          type: string
          const: authorized_ad_set
          title: Kind
        adIds:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 100
          minItems: 1
          title: Adids
      additionalProperties: false
      type: object
      required:
        - kind
        - adIds
      title: AuthorizedAdSetSource
    UserOfferInput:
      properties:
        description:
          type: string
          maxLength: 4000
          minLength: 1
          title: Description
        finalUrl:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Finalurl
        terms:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Terms
        landingPageLanguage:
          anyOf:
            - type: string
              maxLength: 40
              minLength: 2
            - type: 'null'
          title: Landingpagelanguage
        serviceArea:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Servicearea
      additionalProperties: false
      type: object
      required:
        - description
      title: UserOfferInput
    EconomicsInput-Output:
      properties:
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          title: Currency
        monthlyBudget:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Monthlybudget
        averageOrderValue:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Averageordervalue
        grossMarginPercent:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Grossmarginpercent
        targetAcquisitionCost:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Targetacquisitioncost
        valueBasis:
          type: string
          enum:
            - revenue
            - contribution
            - qualified_lead
            - unknown
          title: Valuebasis
          default: unknown
        assumptions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Assumptions
      additionalProperties: false
      type: object
      required:
        - currency
      title: EconomicsInput
    MeasurementInput:
      properties:
        primaryEvent:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Primaryevent
        diagnosticEvents:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          title: Diagnosticevents
        conversionLagDays:
          anyOf:
            - type: integer
              maximum: 730
              minimum: 0
            - type: 'null'
          title: Conversionlagdays
        source:
          type: string
          enum:
            - connected_account
            - user_asserted
            - unknown
          title: Source
          default: unknown
        deduplication:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Deduplication
        valueTrackingReady:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Valuetrackingready
        primaryEventReady:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Primaryeventready
      additionalProperties: false
      type: object
      title: MeasurementInput
    GoogleStrategyRevision-Output:
      properties:
        schemaVersion:
          type: string
          const: google-create-v1
          title: Schemaversion
          default: google-create-v1
        revision:
          type: integer
          minimum: 1
          title: Revision
        contextHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Contexthash
        contextSnapshotId:
          type: string
          format: uuid
          title: Contextsnapshotid
        evidencePacket:
          $ref: '#/components/schemas/EvidencePacketRef'
        rulesetVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Rulesetversion
        evidence:
          items:
            $ref: '#/components/schemas/EvidenceRef'
          type: array
          maxItems: 1000
          title: Evidence
        readiness:
          items:
            $ref: '#/components/schemas/ReadinessFinding'
          type: array
          maxItems: 200
          title: Readiness
        strategyId:
          type: string
          format: uuid
          title: Strategyid
        envelope:
          $ref: '#/components/schemas/ScopeEnvelope'
        objective:
          $ref: '#/components/schemas/GroundedClaim'
        primaryRecommendation:
          $ref: '#/components/schemas/CampaignPlan-Output'
        alternatives:
          items:
            $ref: '#/components/schemas/ChannelComparison'
          type: array
          maxItems: 20
          title: Alternatives
        campaigns:
          items:
            $ref: '#/components/schemas/CampaignPlan-Output'
          type: array
          maxItems: 50
          minItems: 1
          title: Campaigns
        experiments:
          items:
            $ref: '#/components/schemas/ExperimentPlan-Output'
          type: array
          maxItems: 50
          title: Experiments
      additionalProperties: false
      type: object
      required:
        - revision
        - contextHash
        - contextSnapshotId
        - evidencePacket
        - rulesetVersion
        - strategyId
        - envelope
        - objective
        - primaryRecommendation
        - campaigns
      title: GoogleStrategyRevision
    GoogleStrategyJobItemView:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        itemKey:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Itemkey
        kind:
          type: string
          enum:
            - text
            - image
            - video
          title: Kind
        status:
          type: string
          enum:
            - pending
            - running
            - completed
            - failed
            - cancelled
            - needs_attention
            - restricted
          title: Status
        errorCode:
          anyOf:
            - type: string
              maxLength: 120
              minLength: 1
              pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
            - type: 'null'
          title: Errorcode
      additionalProperties: false
      type: object
      required:
        - id
        - itemKey
        - kind
        - status
      title: GoogleStrategyJobItemView
      description: >-
        Safe child progress; provider inputs, receipts and copied content stay
        private.
    EvidencePacketRef:
      properties:
        artifactId:
          type: string
          format: uuid
          title: Artifactid
        checksum:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Checksum
        manifestHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Manifesthash
        artifactSchemaVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Artifactschemaversion
        packetSchemaVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Packetschemaversion
        projectionPolicyVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Projectionpolicyversion
      additionalProperties: false
      type: object
      required:
        - artifactId
        - checksum
        - manifestHash
        - artifactSchemaVersion
        - packetSchemaVersion
        - projectionPolicyVersion
      title: EvidencePacketRef
      description: Adapter to an existing A60 BIArtifact, not another evidence store.
    EvidenceRef:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        nativeIdentity:
          $ref: '#/components/schemas/NativeEvidenceIdentity'
        evidenceRecordId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Evidencerecordid
        sourceArtifactId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Sourceartifactid
        dependencyRole:
          type: string
          enum:
            - source
            - prior_finding
            - decision
            - counterevidence
          title: Dependencyrole
          default: source
        kind:
          type: string
          enum:
            - owned_brand_fact
            - user_asserted
            - own_account_metric
            - competitor_observation
            - provider_estimate
            - platform_rule
          title: Kind
        sourceId:
          type: string
          maxLength: 512
          minLength: 1
          title: Sourceid
        market:
          type: string
          maxLength: 80
          minLength: 2
          title: Market
        observedAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Observedat
        contentHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Contenthash
        measuredCount:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Measuredcount
        eligibleCount:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Eligiblecount
        limitations:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Limitations
      additionalProperties: false
      type: object
      required:
        - id
        - nativeIdentity
        - kind
        - sourceId
        - market
        - contentHash
      title: EvidenceRef
    ReadinessFinding:
      properties:
        code:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Code
        state:
          type: string
          enum:
            - blocked
            - needs_input
            - needs_qualification
            - warning
            - ready
          title: State
        layer:
          type: string
          enum:
            - strategy
            - assets
            - account
          title: Layer
        message:
          type: string
          maxLength: 4000
          minLength: 1
          title: Message
        ruleIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 20
          title: Ruleids
        evidenceIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 100
          title: Evidenceids
        slotIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 100
          title: Slotids
        remediation:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Remediation
        officialUrls:
          items:
            type: string
            maxLength: 2083
            minLength: 1
            format: uri
          type: array
          maxItems: 10
          title: Officialurls
      additionalProperties: false
      type: object
      required:
        - code
        - state
        - layer
        - message
      title: ReadinessFinding
    RsaText:
      properties:
        kind:
          type: string
          const: rsa
          title: Kind
        headlines:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 15
          minItems: 3
          title: Headlines
        descriptions:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 4
          minItems: 2
          title: Descriptions
        path1:
          anyOf:
            - type: string
              maxLength: 100
            - type: 'null'
          title: Path1
        path2:
          anyOf:
            - type: string
              maxLength: 100
            - type: 'null'
          title: Path2
        finalUrl:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Finalurl
        pins:
          items:
            $ref: '#/components/schemas/RsaPin'
          type: array
          maxItems: 19
          title: Pins
        requiredDisclosures:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 10
          title: Requireddisclosures
        extensions:
          items:
            $ref: '#/components/schemas/SearchAssetRecommendation'
          type: array
          maxItems: 20
          title: Extensions
      additionalProperties: false
      type: object
      required:
        - kind
        - headlines
        - descriptions
      title: RsaText
    PMaxAssetGroupText:
      properties:
        kind:
          type: string
          const: pmax_asset_group
          title: Kind
        headlines:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 15
          title: Headlines
        longHeadlines:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 5
          title: Longheadlines
        descriptions:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 5
          title: Descriptions
        businessName:
          type: string
          maxLength: 100
          minLength: 1
          title: Businessname
        finalUrls:
          items:
            type: string
            maxLength: 2083
            minLength: 1
            format: uri
          type: array
          maxItems: 10
          title: Finalurls
        mediaSlotIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 100
          title: Mediaslotids
        feedMode:
          type: string
          enum:
            - retail
            - non_retail
          title: Feedmode
        brandGuidelinesMode:
          type: string
          enum:
            - campaign
            - asset_group
            - unknown
          title: Brandguidelinesmode
          default: campaign
      additionalProperties: false
      type: object
      required:
        - kind
        - businessName
        - feedMode
      title: PMaxAssetGroupText
    DemandGenImageText:
      properties:
        kind:
          type: string
          const: demand_gen_image
          title: Kind
        headlines:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 5
          minItems: 1
          title: Headlines
        descriptions:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 5
          minItems: 1
          title: Descriptions
        businessName:
          type: string
          maxLength: 100
          minLength: 1
          title: Businessname
        finalUrl:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Finalurl
        imageSlotIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 20
          minItems: 1
          title: Imageslotids
        squareLogos:
          items:
            $ref: '#/components/schemas/SquareLogoBinding'
          type: array
          maxItems: 5
          minItems: 1
          title: Squarelogos
      additionalProperties: false
      type: object
      required:
        - kind
        - headlines
        - descriptions
        - businessName
        - imageSlotIds
        - squareLogos
      title: DemandGenImageText
    DemandGenCarouselText:
      properties:
        kind:
          type: string
          const: demand_gen_carousel
          title: Kind
        headline:
          type: string
          maxLength: 200
          minLength: 1
          title: Headline
        description:
          type: string
          maxLength: 200
          minLength: 1
          title: Description
        businessName:
          type: string
          maxLength: 100
          minLength: 1
          title: Businessname
        finalUrl:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Finalurl
        squareLogo:
          $ref: '#/components/schemas/SquareLogoBinding'
        cards:
          items:
            $ref: '#/components/schemas/CarouselCard'
          type: array
          maxItems: 10
          minItems: 2
          title: Cards
      additionalProperties: false
      type: object
      required:
        - kind
        - headline
        - description
        - businessName
        - squareLogo
        - cards
      title: DemandGenCarouselText
    DemandGenVideoText:
      properties:
        kind:
          type: string
          const: demand_gen_video
          title: Kind
        headlines:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 20
          minItems: 1
          title: Headlines
        longHeadlines:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 20
          minItems: 1
          title: Longheadlines
        descriptions:
          items:
            $ref: '#/components/schemas/TextAsset'
          type: array
          maxItems: 20
          minItems: 1
          title: Descriptions
        businessName:
          type: string
          maxLength: 100
          minLength: 1
          title: Businessname
        squareLogos:
          items:
            $ref: '#/components/schemas/SquareLogoBinding'
          type: array
          maxItems: 20
          minItems: 1
          title: Squarelogos
        cta:
          anyOf:
            - type: string
              maxLength: 100
            - type: 'null'
          title: Cta
        finalUrl:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Finalurl
        videos:
          items:
            $ref: '#/components/schemas/VideoSlotBinding'
          type: array
          maxItems: 5
          minItems: 1
          title: Videos
      additionalProperties: false
      type: object
      required:
        - kind
        - headlines
        - longHeadlines
        - descriptions
        - businessName
        - squareLogos
        - videos
      title: DemandGenVideoText
    YouTubeVideoText:
      properties:
        kind:
          type: string
          const: youtube_video
          title: Kind
        subtype:
          type: string
          enum:
            - skippable_in_stream
            - in_feed
            - shorts
            - bumper
            - non_skippable
            - non_skippable_ctv
            - video_views
            - efficient_reach
            - target_frequency
          title: Subtype
        headline:
          type: string
          maxLength: 500
          minLength: 1
          title: Headline
        longHeadline:
          anyOf:
            - type: string
              maxLength: 500
            - type: 'null'
          title: Longheadline
        description:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Description
        cta:
          anyOf:
            - type: string
              maxLength: 100
            - type: 'null'
          title: Cta
        finalUrl:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Finalurl
        script:
          $ref: '#/components/schemas/VideoScript'
        mediaSlotId:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Mediaslotid
        youtubeVideoId:
          anyOf:
            - type: string
              pattern: ^[A-Za-z0-9_-]{11}$
            - type: 'null'
          title: Youtubevideoid
      additionalProperties: false
      type: object
      required:
        - kind
        - subtype
        - headline
        - script
        - mediaSlotId
      title: YouTubeVideoText
    ShoppingFeedPlan:
      properties:
        kind:
          type: string
          const: shopping_feed_plan
          title: Kind
        productIds:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 50
          minItems: 1
          title: Productids
        recommendations:
          items:
            $ref: '#/components/schemas/FeedFieldRecommendation'
          type: array
          maxItems: 500
          minItems: 1
          title: Recommendations
        feedReadiness:
          items:
            $ref: '#/components/schemas/ReadinessFinding'
          type: array
          maxItems: 50
          title: Feedreadiness
      additionalProperties: false
      type: object
      required:
        - kind
        - productIds
        - recommendations
      title: ShoppingFeedPlan
    PlannedMediaSlot:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        campaignCellId:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Campaigncellid
        textVariantId:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Textvariantid
        kind:
          type: string
          enum:
            - image
            - video
          title: Kind
        requirement:
          type: string
          enum:
            - required
            - optional
          title: Requirement
        role:
          type: string
          enum:
            - marketing_image
            - square_logo
            - landscape_logo
            - video
          title: Role
        sourcePolicy:
          type: string
          enum:
            - owned_identity_required
            - generated_or_owned
          title: Sourcepolicy
        intendedFamily:
          type: string
          enum:
            - search
            - standard_shopping
            - performance_max
            - demand_gen
            - video
            - display_transition
          title: Intendedfamily
        intendedSurfaces:
          items:
            type: string
            enum:
              - search
              - search_partners
              - youtube_in_stream
              - youtube_in_feed
              - youtube_shorts
              - discover
              - gmail
              - display
              - maps
              - connected_tv
          type: array
          maxItems: 10
          minItems: 1
          title: Intendedsurfaces
        creativeDirection:
          $ref: '#/components/schemas/CreativeDirection'
        rulesetRuleIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 30
          minItems: 1
          title: Rulesetruleids
        requiredFacts:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 30
          title: Requiredfacts
        productReferenceIds:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 50
          title: Productreferenceids
        preferredAspect:
          type: string
          enum:
            - '1:1'
            - 1.91:1
            - '4:5'
            - '9:16'
            - '16:9'
            - '4:1'
          title: Preferredaspect
        minFinalDurationSeconds:
          anyOf:
            - type: number
              maximum: 600
              exclusiveMinimum: 0
            - type: 'null'
          title: Minfinaldurationseconds
        maxFinalDurationSeconds:
          anyOf:
            - type: number
              maximum: 600
              exclusiveMinimum: 0
            - type: 'null'
          title: Maxfinaldurationseconds
        asset:
          anyOf:
            - $ref: '#/components/schemas/SelectedMediaAsset'
            - type: 'null'
      additionalProperties: false
      type: object
      required:
        - id
        - campaignCellId
        - textVariantId
        - kind
        - requirement
        - role
        - sourcePolicy
        - intendedFamily
        - intendedSurfaces
        - creativeDirection
        - rulesetRuleIds
        - preferredAspect
      title: PlannedMediaSlot
    ScopeEnvelope:
      properties:
        version:
          type: string
          maxLength: 64
          minLength: 1
          title: Version
        campaignCellLimit:
          type: integer
          maximum: 50
          minimum: 1
          title: Campaigncelllimit
        adGroupOrAssetGroupLimit:
          type: integer
          maximum: 100
          minimum: 1
          title: Adgrouporassetgrouplimit
        offerLimit:
          type: integer
          maximum: 50
          minimum: 1
          title: Offerlimit
        personaLimit:
          type: integer
          maximum: 50
          minimum: 1
          title: Personalimit
        localeLimit:
          type: integer
          maximum: 20
          minimum: 1
          title: Localelimit
        textRepairLimit:
          type: integer
          maximum: 5
          minimum: 0
          title: Textrepairlimit
        mediaSlots:
          items:
            $ref: '#/components/schemas/PlannedMediaSlot'
          type: array
          maxItems: 200
          title: Mediaslots
      additionalProperties: false
      type: object
      required:
        - version
        - campaignCellLimit
        - adGroupOrAssetGroupLimit
        - offerLimit
        - personaLimit
        - localeLimit
        - textRepairLimit
      title: ScopeEnvelope
    GroundedClaim:
      properties:
        text:
          type: string
          maxLength: 4000
          minLength: 1
          title: Text
        status:
          type: string
          enum:
            - observed
            - assumed
            - recommended
            - unknown
          title: Status
        evidenceIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 100
          title: Evidenceids
        missingInputKeys:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 40
          title: Missinginputkeys
      additionalProperties: false
      type: object
      required:
        - text
        - status
      title: GroundedClaim
    CampaignPlan-Input:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        name:
          type: string
          maxLength: 500
          minLength: 1
          title: Name
        family:
          type: string
          enum:
            - search
            - standard_shopping
            - performance_max
            - demand_gen
            - video
            - display_transition
          title: Family
        subtype:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Subtype
        outcome:
          type: string
          enum:
            - qualified_lead
            - purchase
            - awareness
            - consideration
          title: Outcome
        funnelStage:
          type: string
          enum:
            - awareness
            - consideration
            - conversion
            - retention
          title: Funnelstage
        rationale:
          $ref: '#/components/schemas/GroundedClaim'
        intendedSurfaces:
          items:
            type: string
            enum:
              - search
              - search_partners
              - youtube_in_stream
              - youtube_in_feed
              - youtube_shorts
              - discover
              - gmail
              - display
              - maps
              - connected_tv
          type: array
          maxItems: 10
          minItems: 1
          title: Intendedsurfaces
        creativeLanguage:
          type: string
          maxLength: 40
          minLength: 2
          title: Creativelanguage
        targetRegions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          minItems: 1
          title: Targetregions
        locationMode:
          type: string
          enum:
            - presence
            - presence_or_interest
          title: Locationmode
        excludedRegions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Excludedregions
        languageTargetingStatus:
          type: string
          enum:
            - account_qualified
            - rollout_unverified
            - not_applicable
          title: Languagetargetingstatus
          default: rollout_unverified
        keywords:
          items:
            $ref: '#/components/schemas/KeywordHypothesis'
          type: array
          maxItems: 200
          title: Keywords
        audienceSignals:
          items:
            $ref: '#/components/schemas/AudienceSignal'
          type: array
          maxItems: 50
          title: Audiencesignals
        productIds:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 50
          title: Productids
        automation:
          $ref: '#/components/schemas/AutomationPolicy'
        bidding:
          $ref: '#/components/schemas/BidRecommendation-Input'
        budgetSharePercent:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,4}0*$
            - type: 'null'
          title: Budgetsharepercent
        monthlyBudget:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Monthlybudget
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          title: Currency
        textVariants:
          items:
            $ref: '#/components/schemas/NativeTextVariant'
          type: array
          maxItems: 100
          minItems: 1
          title: Textvariants
        mediaSlots:
          items:
            $ref: '#/components/schemas/PlannedMediaSlot'
          type: array
          maxItems: 200
          title: Mediaslots
        prerequisites:
          items:
            $ref: '#/components/schemas/ReadinessFinding'
          type: array
          maxItems: 50
          title: Prerequisites
        exclusions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 50
          title: Exclusions
      additionalProperties: false
      type: object
      required:
        - id
        - name
        - family
        - outcome
        - funnelStage
        - rationale
        - intendedSurfaces
        - creativeLanguage
        - targetRegions
        - locationMode
        - bidding
        - currency
        - textVariants
      title: CampaignPlan
    ChannelComparison:
      properties:
        channel:
          type: string
          enum:
            - google
            - meta
            - linkedin
            - tiktok
          title: Channel
        family:
          anyOf:
            - type: string
              enum:
                - search
                - standard_shopping
                - performance_max
                - demand_gen
                - video
                - display_transition
            - type: 'null'
          title: Family
        rationale:
          $ref: '#/components/schemas/GroundedClaim'
        decision:
          type: string
          enum:
            - recommended
            - alternative
            - withheld
          title: Decision
        handoffModule:
          type: string
          enum:
            - google-ads
            - paid-media
          title: Handoffmodule
      additionalProperties: false
      type: object
      required:
        - channel
        - rationale
        - decision
        - handoffModule
      title: ChannelComparison
    ExperimentPlan-Input:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        campaignIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 50
          minItems: 1
          title: Campaignids
        hypothesis:
          $ref: '#/components/schemas/GroundedClaim'
        primaryMetric:
          type: string
          maxLength: 500
          minLength: 1
          title: Primarymetric
        diagnosticMetrics:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          title: Diagnosticmetrics
        control:
          type: string
          maxLength: 4000
          minLength: 1
          title: Control
        treatment:
          type: string
          maxLength: 4000
          minLength: 1
          title: Treatment
        measurementBasis:
          type: string
          enum:
            - randomized_experiment
            - observational
            - proposed
          title: Measurementbasis
        reviewAfterDays:
          type: integer
          maximum: 730
          minimum: 1
          title: Reviewafterdays
        conversionLagDays:
          anyOf:
            - type: integer
              maximum: 730
              minimum: 0
            - type: 'null'
          title: Conversionlagdays
        stopConditions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          minItems: 1
          title: Stopconditions
        lossLimit:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Losslimit
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          title: Currency
        limitations:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          title: Limitations
      additionalProperties: false
      type: object
      required:
        - id
        - campaignIds
        - hypothesis
        - primaryMetric
        - control
        - treatment
        - measurementBasis
        - reviewAfterDays
        - stopConditions
        - currency
      title: ExperimentPlan
    CampaignPlan-Output:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        name:
          type: string
          maxLength: 500
          minLength: 1
          title: Name
        family:
          type: string
          enum:
            - search
            - standard_shopping
            - performance_max
            - demand_gen
            - video
            - display_transition
          title: Family
        subtype:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Subtype
        outcome:
          type: string
          enum:
            - qualified_lead
            - purchase
            - awareness
            - consideration
          title: Outcome
        funnelStage:
          type: string
          enum:
            - awareness
            - consideration
            - conversion
            - retention
          title: Funnelstage
        rationale:
          $ref: '#/components/schemas/GroundedClaim'
        intendedSurfaces:
          items:
            type: string
            enum:
              - search
              - search_partners
              - youtube_in_stream
              - youtube_in_feed
              - youtube_shorts
              - discover
              - gmail
              - display
              - maps
              - connected_tv
          type: array
          maxItems: 10
          minItems: 1
          title: Intendedsurfaces
        creativeLanguage:
          type: string
          maxLength: 40
          minLength: 2
          title: Creativelanguage
        targetRegions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          minItems: 1
          title: Targetregions
        locationMode:
          type: string
          enum:
            - presence
            - presence_or_interest
          title: Locationmode
        excludedRegions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Excludedregions
        languageTargetingStatus:
          type: string
          enum:
            - account_qualified
            - rollout_unverified
            - not_applicable
          title: Languagetargetingstatus
          default: rollout_unverified
        keywords:
          items:
            $ref: '#/components/schemas/KeywordHypothesis'
          type: array
          maxItems: 200
          title: Keywords
        audienceSignals:
          items:
            $ref: '#/components/schemas/AudienceSignal'
          type: array
          maxItems: 50
          title: Audiencesignals
        productIds:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 50
          title: Productids
        automation:
          $ref: '#/components/schemas/AutomationPolicy'
        bidding:
          $ref: '#/components/schemas/BidRecommendation-Output'
        budgetSharePercent:
          anyOf:
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,4}0*$
            - type: 'null'
          title: Budgetsharepercent
        monthlyBudget:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Monthlybudget
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          title: Currency
        textVariants:
          items:
            $ref: '#/components/schemas/NativeTextVariant'
          type: array
          maxItems: 100
          minItems: 1
          title: Textvariants
        mediaSlots:
          items:
            $ref: '#/components/schemas/PlannedMediaSlot'
          type: array
          maxItems: 200
          title: Mediaslots
        prerequisites:
          items:
            $ref: '#/components/schemas/ReadinessFinding'
          type: array
          maxItems: 50
          title: Prerequisites
        exclusions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 50
          title: Exclusions
      additionalProperties: false
      type: object
      required:
        - id
        - name
        - family
        - outcome
        - funnelStage
        - rationale
        - intendedSurfaces
        - creativeLanguage
        - targetRegions
        - locationMode
        - bidding
        - currency
        - textVariants
      title: CampaignPlan
    ExperimentPlan-Output:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        campaignIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 50
          minItems: 1
          title: Campaignids
        hypothesis:
          $ref: '#/components/schemas/GroundedClaim'
        primaryMetric:
          type: string
          maxLength: 500
          minLength: 1
          title: Primarymetric
        diagnosticMetrics:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          title: Diagnosticmetrics
        control:
          type: string
          maxLength: 4000
          minLength: 1
          title: Control
        treatment:
          type: string
          maxLength: 4000
          minLength: 1
          title: Treatment
        measurementBasis:
          type: string
          enum:
            - randomized_experiment
            - observational
            - proposed
          title: Measurementbasis
        reviewAfterDays:
          type: integer
          maximum: 730
          minimum: 1
          title: Reviewafterdays
        conversionLagDays:
          anyOf:
            - type: integer
              maximum: 730
              minimum: 0
            - type: 'null'
          title: Conversionlagdays
        stopConditions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          minItems: 1
          title: Stopconditions
        lossLimit:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Losslimit
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          title: Currency
        limitations:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          title: Limitations
      additionalProperties: false
      type: object
      required:
        - id
        - campaignIds
        - hypothesis
        - primaryMetric
        - control
        - treatment
        - measurementBasis
        - reviewAfterDays
        - stopConditions
        - currency
      title: ExperimentPlan
    NativeEvidenceIdentity:
      properties:
        nativeTable:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[a-z][a-z0-9_]*$
          title: Nativetable
        nativeId:
          type: string
          maxLength: 512
          minLength: 1
          title: Nativeid
        nativeRevision:
          anyOf:
            - type: string
              maxLength: 120
              minLength: 1
            - type: 'null'
          title: Nativerevision
      additionalProperties: false
      type: object
      required:
        - nativeTable
        - nativeId
      title: NativeEvidenceIdentity
    TextAsset:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        text:
          type: string
          maxLength: 500
          minLength: 1
          title: Text
        evidenceIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 30
          title: Evidenceids
      additionalProperties: false
      type: object
      required:
        - id
        - text
      title: TextAsset
    RsaPin:
      properties:
        assetId:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Assetid
        field:
          type: string
          enum:
            - headline_1
            - headline_2
            - headline_3
            - description_1
            - description_2
          title: Field
      additionalProperties: false
      type: object
      required:
        - assetId
        - field
      title: RsaPin
    SearchAssetRecommendation:
      properties:
        kind:
          type: string
          enum:
            - sitelink
            - callout
            - structured_snippet
            - call
            - location
            - image
          title: Kind
        rationale:
          $ref: '#/components/schemas/GroundedClaim'
        text:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Text
        finalUrl:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Finalurl
      additionalProperties: false
      type: object
      required:
        - kind
        - rationale
      title: SearchAssetRecommendation
    SquareLogoBinding:
      properties:
        role:
          type: string
          const: square_logo
          title: Role
          default: square_logo
        slotId:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Slotid
      additionalProperties: false
      type: object
      required:
        - slotId
      title: SquareLogoBinding
    CarouselCard:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        headline:
          type: string
          maxLength: 200
          minLength: 1
          title: Headline
        finalUrl:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Finalurl
        imageSlotIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 3
          minItems: 1
          title: Imageslotids
      additionalProperties: false
      type: object
      required:
        - id
        - headline
        - imageSlotIds
      title: CarouselCard
    VideoSlotBinding:
      properties:
        slotId:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Slotid
        script:
          $ref: '#/components/schemas/VideoScript'
        youtubeVideoId:
          anyOf:
            - type: string
              pattern: ^[A-Za-z0-9_-]{11}$
            - type: 'null'
          title: Youtubevideoid
      additionalProperties: false
      type: object
      required:
        - slotId
        - script
      title: VideoSlotBinding
    VideoScript:
      properties:
        durationSeconds:
          type: number
          maximum: 600
          exclusiveMinimum: 0
          title: Durationseconds
        shots:
          items:
            $ref: '#/components/schemas/VideoShot'
          type: array
          maxItems: 60
          minItems: 1
          title: Shots
        transcript:
          type: string
          maxLength: 12000
          title: Transcript
          default: ''
        captionsRequired:
          type: boolean
          title: Captionsrequired
          default: true
      additionalProperties: false
      type: object
      required:
        - durationSeconds
        - shots
      title: VideoScript
    FeedFieldRecommendation:
      properties:
        productId:
          type: string
          format: uuid
          title: Productid
        field:
          type: string
          enum:
            - structured_title
            - structured_description
            - image_link
            - price
            - availability
            - brand
            - gtin
            - mpn
            - shipping
            - item_group_id
          title: Field
        value:
          anyOf:
            - type: string
              maxLength: 5000
              minLength: 1
            - type: 'null'
          title: Value
        rationale:
          $ref: '#/components/schemas/GroundedClaim'
        digitalSourceType:
          anyOf:
            - type: string
              const: trained_algorithmic_media
            - type: 'null'
          title: Digitalsourcetype
      additionalProperties: false
      type: object
      required:
        - productId
        - field
        - rationale
      title: FeedFieldRecommendation
    CreativeDirection:
      properties:
        subject:
          type: string
          maxLength: 4000
          minLength: 1
          title: Subject
        action:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Action
        context:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Context
        style:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Style
        lighting:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Lighting
        camera:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Camera
        audio:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Audio
        requiredCopy:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          title: Requiredcopy
        prohibitedElements:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Prohibitedelements
      additionalProperties: false
      type: object
      required:
        - subject
      title: CreativeDirection
    SelectedMediaAsset:
      properties:
        assetId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Assetid
        uploadId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Uploadid
        checksum:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Checksum
        width:
          type: integer
          maximum: 32768
          exclusiveMinimum: 0
          title: Width
        height:
          type: integer
          maximum: 32768
          exclusiveMinimum: 0
          title: Height
        sizeBytes:
          type: integer
          maximum: 274877906944
          exclusiveMinimum: 0
          title: Sizebytes
        mimeType:
          type: string
          enum:
            - image/jpeg
            - image/png
            - image/gif
            - video/mp4
            - video/webm
            - video/quicktime
          title: Mimetype
        durationSeconds:
          anyOf:
            - type: number
              maximum: 3600
              exclusiveMinimum: 0
            - type: 'null'
          title: Durationseconds
        youtubeVideoId:
          anyOf:
            - type: string
              pattern: ^[A-Za-z0-9_-]{11}$
            - type: 'null'
          title: Youtubevideoid
        identitySource:
          type: string
          enum:
            - owned_asset
            - owned_upload
            - faithful_derivative
            - generated
          title: Identitysource
      additionalProperties: false
      type: object
      required:
        - checksum
        - width
        - height
        - sizeBytes
        - mimeType
        - identitySource
      title: SelectedMediaAsset
    KeywordHypothesis:
      properties:
        text:
          type: string
          maxLength: 200
          minLength: 1
          title: Text
        matchType:
          type: string
          enum:
            - exact
            - phrase
            - broad
            - negative_exact
            - negative_phrase
            - negative_broad
          title: Matchtype
        rationale:
          $ref: '#/components/schemas/GroundedClaim'
      additionalProperties: false
      type: object
      required:
        - text
        - matchType
        - rationale
      title: KeywordHypothesis
    AudienceSignal:
      properties:
        description:
          type: string
          maxLength: 500
          minLength: 1
          title: Description
        mode:
          type: string
          enum:
            - signal
            - restriction
            - exclusion
          title: Mode
        rationale:
          $ref: '#/components/schemas/GroundedClaim'
      additionalProperties: false
      type: object
      required:
        - description
        - mode
        - rationale
      title: AudienceSignal
    AutomationPolicy:
      properties:
        aiMax:
          type: boolean
          title: Aimax
          default: false
        broadOrKeywordlessMatching:
          type: boolean
          title: Broadorkeywordlessmatching
          default: false
        textCustomization:
          type: boolean
          title: Textcustomization
          default: false
        finalUrlExpansion:
          type: boolean
          title: Finalurlexpansion
          default: false
        providerGeneratedAssets:
          type: boolean
          title: Providergeneratedassets
          default: false
        providerEnhancedAssets:
          type: boolean
          title: Providerenhancedassets
          default: false
        allowedDestinationUrls:
          items:
            type: string
            maxLength: 2083
            minLength: 1
            format: uri
          type: array
          maxItems: 50
          title: Alloweddestinationurls
        excludedDestinationUrls:
          items:
            type: string
            maxLength: 2083
            minLength: 1
            format: uri
          type: array
          maxItems: 50
          title: Excludeddestinationurls
      additionalProperties: false
      type: object
      title: AutomationPolicy
    BidRecommendation-Input:
      properties:
        objective:
          type: string
          enum:
            - clicks
            - impressions
            - views
            - conversions
            - conversion_value
          title: Objective
        target:
          type: string
          enum:
            - none
            - cpa
            - roas
            - cpv
            - cpm
          title: Target
          default: none
        targetValue:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Targetvalue
        eligibility:
          type: string
          enum:
            - verified
            - needs_input
            - needs_qualification
          title: Eligibility
          default: needs_input
        rationale:
          $ref: '#/components/schemas/GroundedClaim'
        ruleIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 20
          title: Ruleids
      additionalProperties: false
      type: object
      required:
        - objective
        - rationale
      title: BidRecommendation
    NativeTextVariant:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        nativeText:
          oneOf:
            - $ref: '#/components/schemas/RsaText'
            - $ref: '#/components/schemas/PMaxAssetGroupText'
            - $ref: '#/components/schemas/DemandGenImageText'
            - $ref: '#/components/schemas/DemandGenCarouselText'
            - $ref: '#/components/schemas/DemandGenVideoText'
            - $ref: '#/components/schemas/YouTubeVideoText'
            - $ref: '#/components/schemas/ShoppingFeedPlan'
          title: Nativetext
          discriminator:
            propertyName: kind
            mapping:
              demand_gen_carousel:
                $ref: '#/components/schemas/DemandGenCarouselText'
              demand_gen_image:
                $ref: '#/components/schemas/DemandGenImageText'
              demand_gen_video:
                $ref: '#/components/schemas/DemandGenVideoText'
              pmax_asset_group:
                $ref: '#/components/schemas/PMaxAssetGroupText'
              rsa:
                $ref: '#/components/schemas/RsaText'
              shopping_feed_plan:
                $ref: '#/components/schemas/ShoppingFeedPlan'
              youtube_video:
                $ref: '#/components/schemas/YouTubeVideoText'
      additionalProperties: false
      type: object
      required:
        - id
        - nativeText
      title: NativeTextVariant
    BidRecommendation-Output:
      properties:
        objective:
          type: string
          enum:
            - clicks
            - impressions
            - views
            - conversions
            - conversion_value
          title: Objective
        target:
          type: string
          enum:
            - none
            - cpa
            - roas
            - cpv
            - cpm
          title: Target
          default: none
        targetValue:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Targetvalue
        eligibility:
          type: string
          enum:
            - verified
            - needs_input
            - needs_qualification
          title: Eligibility
          default: needs_input
        rationale:
          $ref: '#/components/schemas/GroundedClaim'
        ruleIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 20
          title: Ruleids
      additionalProperties: false
      type: object
      required:
        - objective
        - rationale
      title: BidRecommendation
    VideoShot:
      properties:
        startSeconds:
          type: number
          maximum: 600
          minimum: 0
          title: Startseconds
        endSeconds:
          type: number
          maximum: 600
          exclusiveMinimum: 0
          title: Endseconds
        visual:
          type: string
          maxLength: 4000
          minLength: 1
          title: Visual
        voiceover:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Voiceover
        onScreenText:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Onscreentext
        audio:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Audio
      additionalProperties: false
      type: object
      required:
        - startSeconds
        - endSeconds
        - visual
      title: VideoShot
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````