openapi: 3.0.0
info:
  title: Uber Ads API
  version: 1.0.0
  description: Complete reference for the Uber Ads external API. This document aggregates every endpoint (ad accounts, campaigns, ad groups, ads, product catalog, and reporting) into a single OpenAPI specification.
servers:
  - url: https://api.uber.com
tags:
  - name: Ad Account
  - name: Campaigns
  - name: Ad Groups
  - name: Ads
  - name: Product Catalog
  - name: Reporting
paths:
  /v1/ads/ad-accounts:
    get:
      summary: Get Ad Accounts
      description: Retrieve a list of ad accounts for the authenticated user. Only active ad accounts are returned.
      security:
        - auth:
            - ads.ad-accounts.read
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ad_accounts:
                    type: array
                    items:
                      $ref: '#/components/schemas/GetAdAccounts_AdAccount'
                    description: List of ad account objects
              example:
                ad_accounts:
                  - ad_account_id: acc_12345
                    name: Main Advertising Account
                    country_code: US
                    currency_code: USD
                    account_type: OFD
                    billing:
                      address:
                        address_line1: 123 Main Street
                        address_line2: Suite 100
                        city: San Francisco
                        state: CA
                        country_code: US
                        postal_code: '94102'
                      type: ACCOUNT_BILLING_MODE_AUTO
                  - ad_account_id: acc_67890
                    name: Secondary Account
                    country_code: CA
                    currency_code: CAD
                    account_type: USER_STORES_GROUP
                    billing:
                      address:
                        address_line1: 456 Maple Avenue
                        city: Toronto
                        state: 'ON'
                        country_code: CA
                        postal_code: M5V 3A8
                      type: ACCOUNT_BILLING_MODE_MANUAL
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdAccounts_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdAccounts_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdAccounts_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdAccounts_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdAccounts_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdAccounts_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: get-ad-accounts
      tags:
        - Ad Account
  /v1/ads/{ad_account_id}/stores:
    get:
      summary: Get Stores
      description: Retrieve a list of stores for an ad account.
      security:
        - auth:
            - ads.ad-accounts.read
      parameters:
        - in: path
          name: ad_account_id
          required: true
          description: Ad account identifier
          schema:
            type: string
        - in: query
          name: page_token
          required: false
          description: Page token for pagination
          schema:
            type: string
        - in: query
          name: page_limit
          required: false
          description: Number of results to return (Max 2000)
          schema:
            type: integer
            maximum: 2000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  stores:
                    type: array
                    items:
                      $ref: '#/components/schemas/GetStores_Store'
                    description: List of store objects
                  next_page_token:
                    $ref: '#/components/schemas/GetStores_PageToken'
              example:
                stores:
                  - id: store-123
                    name: Downtown Restaurant
                    currency_code: USD
                    image_url: https://images.uber.com/store/downtown-restaurant.jpg
                    address:
                      address_line1: 123 Main Street
                      address_line2: Suite 100
                      city: San Francisco
                      region: CA
                      postal_code: '94102'
                      country: US
                      latitude: 37.7749
                      longitude: -122.4194
                  - id: store-456
                    name: Uptown Cafe
                    currency_code: USD
                    image_url: https://images.uber.com/store/uptown-cafe.jpg
                    address:
                      address_line1: 456 Market Street
                      city: San Francisco
                      region: CA
                      postal_code: '94103'
                      country: US
                      latitude: 37.7849
                      longitude: -122.4294
                next_page_token:
                  value: eyJsYXN0X3N0b3JlX2lkIjoic3RvcmUtNDU2In0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetStores_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetStores_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetStores_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetStores_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetStores_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetStores_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: get-stores
      tags:
        - Ad Account
  /v1/ads/{account_id}/campaigns:
    get:
      summary: Get Campaigns
      description: Retrieve a list of campaigns for an account.
      security:
        - auth:
            - ads.campaigns.read
      parameters:
        - in: path
          name: account_id
          required: true
          description: Account identifier
          schema:
            type: string
        - in: query
          name: page_token
          required: false
          description: Page token for pagination
          schema:
            type: string
        - in: query
          name: page_limit
          required: false
          description: Number of results to return (Max 2000)
          schema:
            type: integer
            maximum: 2000
        - in: query
          name: campaign_id
          required: false
          description: Filter by specific campaign ID
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  campaigns:
                    type: array
                    items:
                      $ref: '#/components/schemas/GetCampaigns_Campaign'
                    description: List of campaign objects
                  next_page_token:
                    $ref: '#/components/schemas/GetCampaigns_PageToken'
              example:
                campaigns:
                  - campaign_id: 00117dad-f83f-4a38-9192-a371250ff09e
                    name: Q4 Holiday Sponsored Listings Campaign
                    created_at: '2023-12-01T20:27:24Z'
                    updated_at: '2023-12-01T22:09:13Z'
                    created_by_email: advertiser@restaurant.com
                    updated_by_email: manager@restaurant.com
                    budget:
                      unit: BUDGET_UNIT_DAILY
                      total:
                        amount_e5: '50000'
                        currency_code: USD
                      cofunding_sources:
                        - funding_percentage: 70
                    ad_groups:
                      - ad_group_id: 379638e6-5ecf-5b27-af83-68368ee3f597
                        name: Downtown Store Promotion - Ad Group 1
                        ad_product: SPONSORED_LISTING
                        configured_status: AD_GROUP_CONFIGURED_STATUS_ACTIVE
                        effective_status: AD_GROUP_EFFECTIVE_STATUS_ACTIVE
                        permissions:
                          - READ
                          - UPDATE
                          - DELETE
                    configured_status: CAMPAIGN_CONFIGURED_STATUS_ACTIVE
                    effective_status: CAMPAIGN_EFFECTIVE_STATUS_ACTIVE
                    permissions:
                      - READ
                      - UPDATE
                      - DELETE
                  - campaign_id: 02416290-cf7b-4f17-ab46-f77cb13f5051
                    name: Winter Menu Launch Campaign
                    created_at: '2023-12-18T23:47:34Z'
                    updated_at: '2023-12-18T23:47:34Z'
                    created_by_email: marketing@brand.com
                    updated_by_email: manager@brand.com
                    budget:
                      unit: BUDGET_UNIT_WEEKLY
                      total:
                        amount_e5: '25000'
                        currency_code: USD
                      cofunding_sources:
                        - funding_percentage: 70
                    ad_groups:
                      - ad_group_id: 41dd6ced-2465-5e8d-a686-bad20c1de101
                        name: Chicago Area Stores - Ad Group 1
                        ad_product: SPONSORED_SEARCH
                        configured_status: AD_GROUP_CONFIGURED_STATUS_ACTIVE
                        effective_status: AD_GROUP_EFFECTIVE_STATUS_ACTIVE
                        permissions:
                          - READ
                          - UPDATE
                    configured_status: CAMPAIGN_CONFIGURED_STATUS_ACTIVE
                    effective_status: CAMPAIGN_EFFECTIVE_STATUS_ACTIVE
                    permissions:
                      - READ
                      - UPDATE
                next_page_token:
                  value: eyJsYXN0X2NhbXBhaWduX2lkIjoiMDI0MTYyOTAtY2Y3Yi00ZjE3LWFiNDYtZjc3Y2IxM2Y1MDUxIn0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCampaigns_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCampaigns_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCampaigns_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCampaigns_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCampaigns_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCampaigns_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: get-campaigns
      tags:
        - Campaigns
    post:
      summary: Create Campaigns
      description: Create one or more campaigns for an account.
      security:
        - auth:
            - ads.campaigns.write
      parameters:
        - in: path
          name: account_id
          required: true
          description: Ad account identifier
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                campaigns:
                  type: array
                  items:
                    $ref: '#/components/schemas/CreateCampaigns_CreateCampaignInput'
                  description: List of campaigns to create
            example:
              campaigns:
                - name: Q1 Spring Promotion Campaign
                  configured_status: CAMPAIGN_CONFIGURED_STATUS_ACTIVE
                  budget:
                    unit: BUDGET_UNIT_DAILY
                    total:
                      amount_e5: '50000'
                      currency_code: USD
                - name: Weekend Special Campaign
                  configured_status: CAMPAIGN_CONFIGURED_STATUS_PAUSED
                  budget:
                    unit: BUDGET_UNIT_WEEKLY
                    total:
                      amount_e5: '100000'
                      currency_code: USD
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/CreateCampaigns_OperationResult'
                    description: Results of the create operations
              example:
                results:
                  - success:
                      id: 00117dad-f83f-4a38-9192-a371250ff09e
                  - success:
                      id: 02416290-cf7b-4f17-ab46-f77cb13f5051
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCampaigns_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCampaigns_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCampaigns_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCampaigns_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCampaigns_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCampaigns_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: create-campaigns
      tags:
        - Campaigns
    patch:
      summary: Update Campaigns
      description: Update one or more existing campaigns for an account.
      security:
        - auth:
            - ads.campaigns.write
      parameters:
        - in: path
          name: account_id
          required: true
          description: Ad account identifier
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                campaigns:
                  type: array
                  items:
                    $ref: '#/components/schemas/UpdateCampaigns_UpdateCampaignInput'
                  description: List of campaigns to update
            example:
              campaigns:
                - campaign_id: 00117dad-f83f-4a38-9192-a371250ff09e
                  name: Q1 Spring Promotion Campaign - Updated
                  configured_status: CAMPAIGN_CONFIGURED_STATUS_PAUSED
                  budget:
                    unit: BUDGET_UNIT_DAILY
                    total:
                      amount_e5: '75000'
                      currency_code: USD
                - campaign_id: 02416290-cf7b-4f17-ab46-f77cb13f5051
                  configured_status: CAMPAIGN_CONFIGURED_STATUS_ACTIVE
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/UpdateCampaigns_OperationResult'
                    description: Results of the update operations
              example:
                results:
                  - success:
                      id: 00117dad-f83f-4a38-9192-a371250ff09e
                  - success:
                      id: 02416290-cf7b-4f17-ab46-f77cb13f5051
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCampaigns_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCampaigns_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCampaigns_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCampaigns_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCampaigns_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCampaigns_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: update-campaigns
      tags:
        - Campaigns
  /v1/ads/{account_id}/campaigns/{campaign_id}/ad-groups:
    get:
      summary: Get Ad Groups
      description: Retrieve ad groups for a specific campaign.
      security:
        - auth:
            - ads.campaigns.read
      parameters:
        - in: path
          name: account_id
          required: true
          description: Account identifier
          schema:
            type: string
        - in: path
          name: campaign_id
          required: true
          description: Campaign identifier
          schema:
            type: string
        - in: query
          name: page_token
          required: false
          description: Page token for pagination
          schema:
            type: string
        - in: query
          name: page_limit
          required: false
          description: Number of results to return (Max 2000)
          schema:
            type: integer
            maximum: 2000
        - in: query
          name: ad_group_id
          required: false
          description: Filter by specific ad group ID
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ad_groups:
                    type: array
                    items:
                      $ref: '#/components/schemas/GetAdGroups_AdGroup'
                    description: List of ad group objects
                  next_page_token:
                    $ref: '#/components/schemas/GetAdGroups_PageToken'
              example:
                ad_groups:
                  - ad_group_id: 41dd6ced-2465-5e8d-a686-bad20c1de101
                    campaign_id: 02416290-cf7b-4f17-ab46-f77cb13f5051
                    name: National Brands Holiday Campaign - Ad Group 1
                    ad_product: SPONSORED_LISTING
                    schedule:
                      start_time: '2023-12-18T05:00:00Z'
                      end_time: '2024-01-01T05:00:00Z'
                    budget:
                      unit: BUDGET_UNIT_WEEKLY
                      total:
                        amount_e5: '25000'
                        currency_code: USD
                      cofunding_sources:
                        - funding_percentage: 70
                    bidding:
                      auto: {}
                    targeting:
                      negation: false
                      operator: AND
                      criteria:
                        - keyword_targeting:
                            keywords:
                              - pizza
                              - pasta
                              - italian food
                            match_type: MATCH_TYPE_EXACT
                    dayparting_schedule:
                      dayparting_day_schedule:
                        - intervals:
                            - start_time:
                                hour: 6
                                minute: 0
                              end_time:
                                hour: 22
                                minute: 0
                        - intervals:
                            - start_time:
                                hour: 6
                                minute: 0
                              end_time:
                                hour: 22
                                minute: 0
                        - intervals:
                            - start_time:
                                hour: 6
                                minute: 0
                              end_time:
                                hour: 22
                                minute: 0
                        - intervals:
                            - start_time:
                                hour: 6
                                minute: 0
                              end_time:
                                hour: 22
                                minute: 0
                        - intervals:
                            - start_time:
                                hour: 6
                                minute: 0
                              end_time:
                                hour: 22
                                minute: 0
                        - intervals:
                            - start_time:
                                hour: 6
                                minute: 0
                              end_time:
                                hour: 24
                                minute: 0
                        - intervals:
                            - start_time:
                                hour: 6
                                minute: 0
                              end_time:
                                hour: 24
                                minute: 0
                    subjects:
                      stores:
                        store_ids:
                          - 65681a33-d4b2-4e23-b9a2-8e9fd44f0b60
                    configured_status: AD_GROUP_CONFIGURED_STATUS_ACTIVE
                    effective_status: AD_GROUP_EFFECTIVE_STATUS_ACTIVE
                    permissions:
                      - READ
                      - UPDATE
                      - DELETE
                  - ad_group_id: f1768d22-414e-4dfa-8871-0c0ae345092d
                    campaign_id: 03527abc-8d4e-4c19-bc67-f88da25ef203
                    name: Asian Cuisine Targeting Group
                    ad_product: SPONSORED_SEARCH
                    schedule:
                      start_time: '2025-08-21T21:00:00Z'
                    budget:
                      unit: BUDGET_UNIT_DAILY
                      total:
                        amount_e5: '30000'
                        currency_code: USD
                      cofunding_sources:
                        - funding_percentage: 70
                    bidding:
                      auto: {}
                    targeting:
                      negation: false
                      operator: AND
                      criteria:
                        - keyword_targeting:
                            keywords:
                              - sushi
                              - asian fusion
                              - takeout
                            match_type: MATCH_TYPE_BROAD
                    subjects:
                      stores:
                        store_ids:
                          - 9ec56511-e1d6-4361-86b3-0e35f55fe24f
                    configured_status: AD_GROUP_CONFIGURED_STATUS_ACTIVE
                    effective_status: AD_GROUP_EFFECTIVE_STATUS_ACTIVE
                    permissions:
                      - READ
                      - UPDATE
                next_page_token:
                  value: eyJsYXN0X2FkX2dyb3VwX2lkIjoiNDFkZDZjZWQtMjQ2NS01ZThkLWE2ODYtYmFkMjBjMWRlMTAxIn0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdGroups_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdGroups_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdGroups_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdGroups_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdGroups_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAdGroups_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: get-ad-groups
      tags:
        - Ad Groups
    post:
      summary: Create Ad Groups
      description: Create one or more ad groups within a campaign.
      security:
        - auth:
            - ads.campaigns.write
      parameters:
        - in: path
          name: account_id
          required: true
          description: Ad account identifier
          schema:
            type: string
        - in: path
          name: campaign_id
          required: true
          description: Campaign identifier
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ad_groups:
                  type: array
                  items:
                    $ref: '#/components/schemas/CreateAdGroups_CreateAdGroupInput'
                  description: List of ad groups to create
            example:
              ad_groups:
                - name: Downtown Store Promotion
                  ad_product: SPONSORED_LISTING
                  configured_status: AD_GROUP_CONFIGURED_STATUS_ACTIVE
                  budget:
                    unit: BUDGET_UNIT_DAILY
                    total:
                      amount_e5: '25000'
                      currency_code: USD
                  schedule:
                    start_time: '2024-01-01T00:00:00Z'
                  dayparting_schedule:
                    dayparting_day_schedule:
                      - intervals:
                          - start_time:
                              hour: 6
                              minute: 0
                            end_time:
                              hour: 22
                              minute: 0
                      - intervals:
                          - start_time:
                              hour: 6
                              minute: 0
                            end_time:
                              hour: 22
                              minute: 0
                      - intervals:
                          - start_time:
                              hour: 6
                              minute: 0
                            end_time:
                              hour: 22
                              minute: 0
                      - intervals:
                          - start_time:
                              hour: 6
                              minute: 0
                            end_time:
                              hour: 22
                              minute: 0
                      - intervals:
                          - start_time:
                              hour: 6
                              minute: 0
                            end_time:
                              hour: 22
                              minute: 0
                      - intervals:
                          - start_time:
                              hour: 6
                              minute: 0
                            end_time:
                              hour: 24
                              minute: 0
                      - intervals:
                          - start_time:
                              hour: 6
                              minute: 0
                            end_time:
                              hour: 24
                              minute: 0
                  bidding:
                    auto: {}
                  targeting:
                    negation: false
                    operator: AND
                    criteria:
                      - uber_one: {}
                  ad_subjects:
                    stores:
                      store_ids:
                        - store-123
                        - store-456
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/CreateAdGroups_OperationResult'
                    description: Results of the create operations
              example:
                results:
                  - success:
                      id: 379638e6-5ecf-5b27-af83-68368ee3f597
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAdGroups_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAdGroups_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAdGroups_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAdGroups_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAdGroups_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAdGroups_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: create-ad-groups
      tags:
        - Ad Groups
    patch:
      summary: Update Ad Groups
      description: Update one or more existing ad groups within a campaign.
      security:
        - auth:
            - ads.campaigns.write
      parameters:
        - in: path
          name: account_id
          required: true
          description: Ad account identifier
          schema:
            type: string
        - in: path
          name: campaign_id
          required: true
          description: Campaign identifier
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ad_groups:
                  type: array
                  items:
                    $ref: '#/components/schemas/UpdateAdGroups_UpdateAdGroupInput'
                  description: List of ad groups to update
            example:
              ad_groups:
                - ad_group_id: 379638e6-5ecf-5b27-af83-68368ee3f597
                  name: Downtown Store Promotion - Updated
                  configured_status: AD_GROUP_CONFIGURED_STATUS_PAUSED
                  budget:
                    unit: BUDGET_UNIT_DAILY
                    total:
                      amount_e5: '35000'
                      currency_code: USD
                  bidding:
                    manual:
                      bid_amount:
                        amount_e5: '15000'
                        currency_code: USD
                  targeting:
                    negation: false
                    operator: AND
                    criteria:
                      - uber_one: {}
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/UpdateAdGroups_OperationResult'
                    description: Results of the update operations
              example:
                results:
                  - success:
                      id: 379638e6-5ecf-5b27-af83-68368ee3f597
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAdGroups_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAdGroups_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAdGroups_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAdGroups_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAdGroups_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAdGroups_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: update-ad-groups
      tags:
        - Ad Groups
  /v1/ads/{account_id}/campaigns/{campaign_id}/ad-groups/{ad_group_id}/ads:
    get:
      summary: Get Ads
      description: Retrieve a list of ads within an ad group.
      security:
        - auth:
            - ads.campaigns.read
      parameters:
        - in: path
          name: account_id
          required: true
          description: Ad account identifier
          schema:
            type: string
        - in: path
          name: campaign_id
          required: true
          description: Campaign identifier
          schema:
            type: string
        - in: path
          name: ad_group_id
          required: true
          description: Ad group identifier
          schema:
            type: string
        - in: query
          name: page_token
          required: false
          description: Page token for pagination
          schema:
            type: string
        - in: query
          name: page_limit
          required: false
          description: Number of results to return (Max 2000)
          schema:
            type: integer
            maximum: 2000
        - in: query
          name: ad_id
          required: false
          description: Filter by specific ad ID
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ads:
                    type: array
                    items:
                      $ref: '#/components/schemas/GetAds_Ad'
                    description: List of ad objects
                  next_page_token:
                    $ref: '#/components/schemas/GetAds_PageToken'
              example:
                ads:
                  - ad_id: ad-123-456-789
                    ad_group_id: 379638e6-5ecf-5b27-af83-68368ee3f597
                    campaign_id: 00117dad-f83f-4a38-9192-a371250ff09e
                    name: Downtown Store Ad
                  - ad_id: ad-987-654-321
                    ad_group_id: 379638e6-5ecf-5b27-af83-68368ee3f597
                    campaign_id: 00117dad-f83f-4a38-9192-a371250ff09e
                    name: Weekend Special Ad
                next_page_token:
                  value: eyJsYXN0X2FkX2lkIjoiYWQtOTg3LTY1NC0zMjEifQ
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAds_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAds_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAds_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAds_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAds_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAds_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: get-ads
      tags:
        - Ads
    post:
      summary: Create Ads
      description: Create one or more ads within an ad group.
      security:
        - auth:
            - ads.campaigns.write
      parameters:
        - in: path
          name: account_id
          required: true
          description: Ad account identifier
          schema:
            type: string
        - in: path
          name: campaign_id
          required: true
          description: Campaign identifier
          schema:
            type: string
        - in: path
          name: ad_group_id
          required: true
          description: Ad group identifier
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ads:
                  type: array
                  items:
                    $ref: '#/components/schemas/CreateAds_CreateAdInput'
                  description: List of ads to create
            example:
              ads:
                - name: Downtown Store Ad
                - name: Weekend Special Ad
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/CreateAds_OperationResult'
                    description: Results of the create operations
              example:
                results:
                  - success:
                      id: ad-123-456-789
                  - success:
                      id: ad-987-654-321
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAds_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAds_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAds_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAds_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAds_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAds_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: create-ads
      tags:
        - Ads
    patch:
      summary: Update Ads
      description: Update one or more existing ads within an ad group.
      security:
        - auth:
            - ads.campaigns.write
      parameters:
        - in: path
          name: account_id
          required: true
          description: Ad account identifier
          schema:
            type: string
        - in: path
          name: campaign_id
          required: true
          description: Campaign identifier
          schema:
            type: string
        - in: path
          name: ad_group_id
          required: true
          description: Ad group identifier
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ads:
                  type: array
                  items:
                    $ref: '#/components/schemas/UpdateAds_UpdateAdInput'
                  description: List of ads to update
            example:
              ads:
                - ad_id: ad-123-456-789
                  name: Downtown Store Ad - Updated
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/UpdateAds_OperationResult'
                    description: Results of the update operations
              example:
                results:
                  - success:
                      id: ad-123-456-789
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAds_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAds_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAds_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAds_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAds_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAds_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: update-ads
      tags:
        - Ads
  /v1/ads/{account_id}/products:
    get:
      summary: Get Products
      description: |
        Retrieve product information for advertising inventory.

        **Note: Product catalog data may be updated every 4 hours.**
      security:
        - auth:
            - ads.products.read
      parameters:
        - in: path
          name: account_id
          required: true
          description: Account identifier
          schema:
            type: string
        - in: query
          name: page_token
          required: false
          description: Page token for pagination
          schema:
            type: string
        - in: query
          name: page_limit
          required: false
          description: Number of results to return (Max 2000)
          schema:
            type: integer
            maximum: 2000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  products:
                    type: array
                    items:
                      $ref: '#/components/schemas/GetProducts_Product'
                    description: List of product objects
                  next_page_token:
                    $ref: '#/components/schemas/GetProducts_PageToken'
              example:
                products:
                  - gtin: '0123456789012'
                    product_name: Classic Margherita Pizza
                    brand_owner_name: Tony's Italian Kitchen
                    brand_name: Tony's
                    main_image_url: https://images.uber.com/products/margherita-pizza-001.jpg
                    size: 25 oz
                  - gtin: '0987654321098'
                    product_name: Chicago Deep Dish Special
                    brand_owner_name: Windy City Pizza Co
                    brand_name: Windy City
                    main_image_url: https://images.uber.com/products/deep-dish-special-002.jpg
                    size: 32 oz
                  - gtin: '0456789123456'
                    product_name: Fresh Caesar Salad
                    brand_owner_name: Garden Bistro
                    brand_name: Garden
                    main_image_url: https://images.uber.com/products/caesar-salad-003.jpg
                    size: 18 oz
                next_page_token:
                  value: eyJsYXN0X3Byb2R1Y3RfZ3RpbiI6IjA0NTY3ODkxMjM0NTYifQ
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProducts_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProducts_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProducts_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProducts_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProducts_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProducts_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: get-products
      tags:
        - Product Catalog
  /v1/ads/{account_id}/reporting/report:
    post:
      summary: Generate Report
      description: Request an asynchronous report with advertising metrics including performance, keyword, and category data.
      security:
        - auth:
            - ads.reporting
      parameters:
        - in: path
          name: account_id
          required: true
          description: Account identifier
          schema:
            type: string
      requestBody:
        required: true
        description: Report generation request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateReports_ExternalSubmitReportJobRequest'
            example:
              report_type: AD_PERFORMANCE
              time_range:
                start_time: '2025-08-01T00:00:00Z'
                end_time: '2025-08-21T00:00:00Z'
              columns:
                - campaign_id
                - ad_group_id
                - impressions
                - clicks
                - ad_spend
                - sales_7d_on_click_date
                - orders_7d_on_click_date
                - roas_7d_on_click_date
                - cost_per_click
              time_unit: DAILY
              filters:
                - column: campaign_id
                  operator: EQUAL
                  values:
                    - 13529bf9-328e-5cf9-b2a7-b670334c2bd9
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReports_ExternalSubmitReportJobResponse'
              example:
                report_id: report_abc123def456
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReports_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReports_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReports_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReports_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReports_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReports_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: create-reports
      tags:
        - Reporting
  /v1/ads/{account_id}/reporting/{report_id}:
    get:
      summary: Get Report Status
      description: |
        Check the status of a report generation request and retrieve the download URL when ready.

        The download URL expires 5 minutes after the report status becomes `COMPLETED`.
      security:
        - auth:
            - ads.reporting
      parameters:
        - in: path
          name: account_id
          required: true
          description: Account identifier
          schema:
            type: string
        - in: path
          name: report_id
          required: true
          description: Report identifier
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetReport_ExternalGetReportJobStatusResponse'
              example:
                status: COMPLETED
                result:
                  success_result:
                    report_url: https://reports.uber.com/download/abc123def456
                    file_size: '1048576'
                    url_expires_at: '2024-02-01T00:00:00Z'
                    report_schema:
                      - campaign_id
                      - impressions
                      - clicks
                      - spend
                  started_at: '2024-01-01T10:00:00Z'
                  finished_at: '2024-01-01T10:05:30Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetReport_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetReport_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetReport_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetReport_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetReport_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetReport_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: get-report
      tags:
        - Reporting
  /v1/ads/{account_id}/reporting/sync:
    post:
      summary: Sync Report
      description: Request a synchronous report that returns advertising metrics immediately in the response. Ideal for real-time dashboards and interactive analytics.
      security:
        - auth:
            - ads.reporting
      parameters:
        - in: path
          name: account_id
          required: true
          description: Account identifier
          schema:
            type: string
      requestBody:
        required: true
        description: Sync report request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncReport_SyncReportRequest'
            example:
              report_type: AD_PERFORMANCE
              time_range:
                start_time: '2025-11-03T00:00:00Z'
                end_time: '2025-11-05T00:00:00Z'
              columns:
                - campaign_id
                - ad_group_id
                - impressions
                - clicks
                - ad_spend
                - sales_7d_on_click_date
                - roas_7d_on_click_date
              time_unit: DAILY
              filters:
                - column: campaign_id
                  operator: EQUAL
                  values:
                    - 13529bf9-328e-5cf9-b2a7-b670334c2bd9
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncReport_SyncReportResponse'
              example:
                schema:
                  columns:
                    - name: day_of
                      type: COLUMN_TYPE_TIMESTAMP
                    - name: campaign_id
                      type: COLUMN_TYPE_STRING
                    - name: ad_group_id
                      type: COLUMN_TYPE_STRING
                    - name: impressions
                      type: COLUMN_TYPE_INT64
                    - name: clicks
                      type: COLUMN_TYPE_INT64
                    - name: ad_spend
                      type: COLUMN_TYPE_DOUBLE
                    - name: sales_7d_on_click_date
                      type: COLUMN_TYPE_DOUBLE
                    - name: roas_7d_on_click_date
                      type: COLUMN_TYPE_DOUBLE
                data:
                  rows:
                    - values:
                        - '2025-11-04T00:00:00Z'
                        - '{campaign_uuid}'
                        - '{ad_group_uuid}'
                        - '8428'
                        - '506'
                        - '159.35'
                        - '2250'
                        - '14.119861939127706'
                    - values:
                        - '2025-11-03T00:00:00Z'
                        - '{campaign_uuid}'
                        - '{ad_group_uuid}'
                        - '6677'
                        - '457'
                        - '111.92'
                        - '2201.26'
                        - '19.668155825589707'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncReport_error'
              example:
                code: BadRequest
                message: Invalid request format or parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncReport_error'
              example:
                code: Unauthorized
                message: Authentication credentials are missing or invalid.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncReport_error'
              example:
                code: PermissionDenied
                message: Insufficient permissions to perform this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncReport_error'
              example:
                code: NotFound
                message: The requested resource was not found or is inaccessible
        '429':
          description: Rate Limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncReport_error'
              example:
                code: RateLimitExceeded
                message: Request limit exceeded.
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncReport_error'
              example:
                code: Internal
                message: An unexpected server error occurred.
      operationId: sync-report
      tags:
        - Reporting
components:
  securitySchemes:
    auth:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://login.uber.com/oauth/v2/authorize
          tokenUrl: https://login.uber.com/oauth/v2/token
          scopes:
            ads.ad-accounts.read: Read access to ad account data
            ads.campaigns.read: Read access to campaign data
            ads.campaigns.write: Write access to campaign data
            ads.products.read: Read access to product endpoints
            ads.reporting: Access to reporting endpoints
  schemas:
    GetAdAccounts_AdAccount:
      type: object
      properties:
        ad_account_id:
          type: string
          description: Unique ad account identifier
        name:
          type: string
          description: Ad account name
        country_code:
          type: string
          description: Country code of the ad account (ISO 3166-1 alpha-2)
        currency_code:
          type: string
          description: Currency code of the ad account (ISO 4217)
        account_type:
          type: string
          description: Type of ad account. See [AdAccount](/docs/ads/references/models/v1/ad-account) for value descriptions and [Ad Products](/docs/ads/campaign-management/ad-products) for campaign-creation eligibility by type.
          enum:
            - OFD
            - USER_STORES_GROUP
            - AGENCY
            - INTERNAL
            - UNKNOWN
        billing:
          $ref: '#/components/schemas/GetAdAccounts_Billing'
    GetAdAccounts_Billing:
      type: object
      description: Billing information for the ad account
      properties:
        address:
          $ref: '#/components/schemas/GetAdAccounts_Address'
        type:
          type: string
          description: Billing type
          enum:
            - ACCOUNT_BILLING_MODE_INVALID
            - ACCOUNT_BILLING_MODE_MANUAL
            - ACCOUNT_BILLING_MODE_AUTO
            - ACCOUNT_BILLING_MODE_UCOMMERCE
    GetAdAccounts_Address:
      type: object
      description: Billing address information
      properties:
        address_line1:
          type: string
          description: Primary address line
        address_line2:
          type: string
          description: Secondary address line (optional, for suite/apartment/etc)
        city:
          type: string
          description: City name
        state:
          type: string
          description: State or province
        country_code:
          type: string
          description: Country code (ISO 3166-1 alpha-2)
        postal_code:
          type: string
          description: Postal or ZIP code
    GetAdAccounts_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    GetStores_Store:
      type: object
      properties:
        id:
          type: string
          description: Unique store identifier
        name:
          type: string
          description: Store name
        currency_code:
          type: string
          format: currency-code
          description: Currency code (ISO 4217)
        image_url:
          type: string
          format: uri
          description: Store image URL
        address:
          $ref: '#/components/schemas/GetStores_StoreAddress'
          description: Store address
    GetStores_StoreAddress:
      type: object
      description: Store address information
      properties:
        address_line1:
          type: string
          description: Primary address line
        address_line2:
          type: string
          description: Secondary address line (optional)
        city:
          type: string
          description: City name
        region:
          type: string
          description: State or region
        postal_code:
          type: string
          description: Postal or ZIP code
        country:
          type: string
          description: Country name or code
        latitude:
          type: number
          format: double
          description: Latitude coordinate
        longitude:
          type: number
          format: double
          description: Longitude coordinate
    GetStores_PageToken:
      type: object
      description: Pagination token for retrieving additional results
      properties:
        value:
          type: string
          description: Opaque page token for pagination
    GetStores_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    GetCampaigns_Campaign:
      type: object
      properties:
        campaign_id:
          type: string
          description: Unique campaign identifier
        name:
          type: string
          description: Campaign name
        created_at:
          type: string
          format: date-time
          description: Creation timestamp (RFC 3339)
        updated_at:
          type: string
          format: date-time
          description: Last update timestamp (RFC 3339)
        created_by_email:
          type: string
          description: Email of user who created the campaign
        updated_by_email:
          type: string
          description: Email of user who last updated the campaign
        budget:
          $ref: '#/components/schemas/GetCampaigns_Budget'
        ad_groups:
          type: array
          items:
            $ref: '#/components/schemas/GetCampaigns_AdGroupSummary'
          description: Summary of ad groups in this campaign
        configured_status:
          type: string
          description: Status configured by the user
        effective_status:
          type: string
          description: Status representing deliverability of the campaign
        version:
          type: integer
          description: Campaign version number
        effective_status_reasons:
          type: array
          items:
            type: string
          description: Reasons why the campaign is not eligible to be served
        permissions:
          type: array
          items:
            type: string
            enum:
              - READ
              - UPDATE
              - DELETE
          description: Operations the caller is permitted to perform on this campaign
    GetCampaigns_Budget:
      type: object
      description: Budget configuration for campaigns
      properties:
        unit:
          type: string
          enum:
            - BUDGET_UNIT_INVALID
            - BUDGET_UNIT_FIXED
            - BUDGET_UNIT_DAILY
            - BUDGET_UNIT_WEEKLY
          description: Budget time unit
        total:
          $ref: '#/components/schemas/GetCampaigns_CurrencyAmount'
          description: Total budget amount
        cofunding_sources:
          type: array
          items:
            $ref: '#/components/schemas/GetCampaigns_CofundingSource'
          description: Sources of campaign funding
    GetCampaigns_AdGroupSummary:
      type: object
      properties:
        ad_group_id:
          type: string
          description: Unique ad group identifier
        name:
          type: string
          description: Ad group name
        configured_status:
          type: string
          description: Status configured by the user
        effective_status:
          type: string
          description: Status representing deliverability of the ad group
        effective_status_reasons:
          type: array
          items:
            type: string
          description: Reasons why the campaign is not eligible to be served
        permissions:
          type: array
          items:
            type: string
            enum:
              - READ
              - UPDATE
              - DELETE
          description: Operations the caller is permitted to perform on this ad group
    GetCampaigns_CurrencyAmount:
      type: object
      properties:
        amount_e5:
          type: string
          format: currency-amount
          description: Amount in E5
        currency_code:
          type: string
          format: currency-code
          description: Currency code (ISO 4217)
    GetCampaigns_CofundingSource:
      type: object
      properties:
        funding_percentage:
          type: number
          format: double
          description: Percentage of cofunding for this campaign (e.g., 70.0 means 70% of the campaign budget is cofunded)
    GetCampaigns_PageToken:
      type: object
      description: Pagination token for retrieving additional results
      properties:
        value:
          type: string
          description: Opaque page token for pagination
    GetCampaigns_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    CreateCampaigns_CreateCampaignInput:
      type: object
      required:
        - name
        - configured_status
      properties:
        name:
          type: string
          description: Campaign name
        configured_status:
          type: string
          enum:
            - CAMPAIGN_CONFIGURED_STATUS_ACTIVE
            - CAMPAIGN_CONFIGURED_STATUS_PAUSED
          description: Status configured by the user
        budget:
          allOf:
            - $ref: '#/components/schemas/CreateCampaigns_BudgetInput'
          description: Budget configuration. Can be set at campaign level (shared across ad groups) or ad group level (more granular control).
    CreateCampaigns_BudgetInput:
      type: object
      required:
        - unit
        - total
      properties:
        unit:
          type: string
          enum:
            - BUDGET_UNIT_FIXED
            - BUDGET_UNIT_DAILY
            - BUDGET_UNIT_WEEKLY
          description: Budget time unit
        total:
          $ref: '#/components/schemas/CreateCampaigns_CurrencyAmountInput'
          description: Total budget amount
    CreateCampaigns_CurrencyAmountInput:
      type: object
      required:
        - amount_e5
        - currency_code
      properties:
        amount_e5:
          type: string
          format: currency-amount
          description: Amount in E5 format (e.g., "50000" represents $0.50)
        currency_code:
          type: string
          format: currency-code
          description: Currency code (ISO 4217)
    CreateCampaigns_OperationResult:
      type: object
      oneOf:
        - type: object
          properties:
            success:
              $ref: '#/components/schemas/CreateCampaigns_OperationSuccess'
        - type: object
          properties:
            failure:
              $ref: '#/components/schemas/CreateCampaigns_OperationFailure'
    CreateCampaigns_OperationSuccess:
      type: object
      properties:
        id:
          type: string
          description: ID of the created campaign
    CreateCampaigns_OperationFailure:
      type: object
      properties:
        error_code:
          type: string
          description: Error code for the failed operation
        error_message:
          type: string
          description: Error message for the failed operation
    CreateCampaigns_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    UpdateCampaigns_UpdateCampaignInput:
      type: object
      description: Input for updating a campaign.
      required:
        - campaign_id
      properties:
        campaign_id:
          type: string
          description: Unique campaign identifier
        name:
          type: string
          description: Campaign name
        configured_status:
          type: string
          enum:
            - CAMPAIGN_CONFIGURED_STATUS_ACTIVE
            - CAMPAIGN_CONFIGURED_STATUS_PAUSED
          description: Status configured by the user
        budget:
          allOf:
            - $ref: '#/components/schemas/UpdateCampaigns_BudgetInput'
          description: Budget configuration for the campaign. Providing an empty budget removes the budget from the campaign.
    UpdateCampaigns_BudgetInput:
      type: object
      required:
        - unit
        - total
      properties:
        unit:
          type: string
          enum:
            - BUDGET_UNIT_FIXED
            - BUDGET_UNIT_DAILY
            - BUDGET_UNIT_WEEKLY
          description: Budget time unit
        total:
          $ref: '#/components/schemas/UpdateCampaigns_CurrencyAmount'
          description: Total budget amount
    UpdateCampaigns_CurrencyAmount:
      type: object
      required:
        - amount_e5
        - currency_code
      properties:
        amount_e5:
          type: string
          format: currency-amount
          description: Amount in E5 format (e.g., "50000" represents $0.50)
        currency_code:
          type: string
          format: currency-code
          description: Currency code (ISO 4217)
    UpdateCampaigns_OperationResult:
      type: object
      oneOf:
        - type: object
          properties:
            success:
              $ref: '#/components/schemas/UpdateCampaigns_OperationSuccess'
        - type: object
          properties:
            failure:
              $ref: '#/components/schemas/UpdateCampaigns_OperationFailure'
    UpdateCampaigns_OperationSuccess:
      type: object
      properties:
        id:
          type: string
          description: ID of the updated campaign
    UpdateCampaigns_OperationFailure:
      type: object
      properties:
        error_code:
          type: string
          description: Error code for the failed operation
        error_message:
          type: string
          description: Error message for the failed operation
    UpdateCampaigns_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    GetAdGroups_AdGroup:
      type: object
      properties:
        ad_group_id:
          type: string
          description: Unique ad group identifier
        campaign_id:
          type: string
          description: Parent campaign ID
        name:
          type: string
          description: Ad group name
        ad_product:
          type: string
          description: Ad product type
        schedule:
          $ref: '#/components/schemas/GetAdGroups_Schedule'
        budget:
          $ref: '#/components/schemas/GetAdGroups_Budget'
        bidding:
          $ref: '#/components/schemas/GetAdGroups_Bidding'
        targeting:
          $ref: '#/components/schemas/GetAdGroups_TargetingCriteria'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/GetAdGroups_AdGroupAction'
          description: Actions configured for this ad group
        dayparting_schedule:
          $ref: '#/components/schemas/GetAdGroups_DaypartingSchedule'
        subjects:
          $ref: '#/components/schemas/GetAdGroups_AdSubjects'
        configured_status:
          type: string
          description: Status configured by the user
        effective_status:
          type: string
          description: Status representing deliverability of the ad group
        effective_status_reasons:
          type: array
          items:
            type: string
          description: Reasons why the ad group is not eligible to be served
        ads:
          type: array
          items:
            $ref: '#/components/schemas/GetAdGroups_AdSummary'
          description: Summary of ads in this ad group
        permissions:
          type: array
          items:
            type: string
            enum:
              - READ
              - UPDATE
              - DELETE
          description: Operations the caller is permitted to perform on this ad group
    GetAdGroups_Schedule:
      type: object
      description: Time-based schedule configuration for ad groups
      properties:
        start_time:
          type: string
          format: date-time
          description: Start time (RFC 3339)
        end_time:
          type: string
          format: date-time
          description: End time (RFC 3339). If not provided, there is no end date.
    GetAdGroups_Budget:
      type: object
      description: Budget configuration for ad groups
      properties:
        unit:
          type: string
          enum:
            - BUDGET_UNIT_INVALID
            - BUDGET_UNIT_FIXED
            - BUDGET_UNIT_DAILY
            - BUDGET_UNIT_WEEKLY
          description: Budget time unit
        total:
          $ref: '#/components/schemas/GetAdGroups_CurrencyAmount'
          description: Total budget amount
        cofunding_sources:
          type: array
          items:
            $ref: '#/components/schemas/GetAdGroups_CofundingSource'
          description: Sources of campaign funding
    GetAdGroups_Bidding:
      type: object
      description: Bidding strategy configuration for the ad group
      oneOf:
        - type: object
          properties:
            auto:
              $ref: '#/components/schemas/GetAdGroups_AutoBidding'
        - type: object
          properties:
            manual:
              $ref: '#/components/schemas/GetAdGroups_ManualBidding'
        - type: object
          properties:
            goal_based:
              $ref: '#/components/schemas/GetAdGroups_GoalBasedBidding'
    GetAdGroups_AutoBidding:
      type: object
      description: Automatic bidding strategy
    GetAdGroups_ManualBidding:
      type: object
      description: Manual bidding strategy with fixed bid amount
      properties:
        bid_amount:
          $ref: '#/components/schemas/GetAdGroups_CurrencyAmount'
    GetAdGroups_GoalBasedBidding:
      type: object
      description: Goal-based bidding strategy targeting specific ROAS
      properties:
        roas_goal:
          type: number
          format: double
          description: Return on ad spend goal
    GetAdGroups_TargetingCriteria:
      type: object
      description: Targeting configuration for the ad group
      properties:
        negation:
          type: boolean
          description: Whether this is a negative targeting criteria
        operator:
          type: string
          enum:
            - AND
            - OR
        criteria:
          type: array
          items:
            $ref: '#/components/schemas/GetAdGroups_TargetingCriterion'
      example:
        negation: false
        operator: AND
        criteria:
          - keyword_targeting:
              keywords:
                - sushi
                - noodles
              match_type: MATCH_TYPE_EXACT
          - uber_one: {}
          - new_to_brand: {}
    GetAdGroups_TargetingCriterion:
      type: object
      description: Individual targeting criterion
      oneOf:
        - type: object
          description: Nested targeting criteria
          properties:
            criteria:
              $ref: '#/components/schemas/GetAdGroups_TargetingCriteria'
        - type: object
          description: Target users who have an active Uber One membership subscription
          properties:
            uber_one:
              $ref: '#/components/schemas/GetAdGroups_UberOneTargetingCriterion'
          example:
            uber_one: {}
        - type: object
          description: Target users based on their order frequency within a specified time range (e.g., users who placed 1-3 orders in the past 30 days)
          properties:
            order_frequency:
              $ref: '#/components/schemas/GetAdGroups_OrderFrequencyTargetingCriterion'
          example:
            order_frequency:
              lower_bound: 1
              upper_bound: 5
              time_range:
                past_days_range:
                  start_day: 0
                  end_day: 30
        - type: object
          description: Target users based on search terms they use (keyword matching for sponsored search campaigns)
          properties:
            keyword_targeting:
              $ref: '#/components/schemas/GetAdGroups_KeywordTargetingCriterion'
          example:
            keyword_targeting:
              keywords:
                - pizza
                - delivery
              match_type: MATCH_TYPE_EXACT
        - type: object
          description: Target users from a custom audience segment
          properties:
            custom_audience:
              $ref: '#/components/schemas/GetAdGroups_CustomAudienceTargetingCriterion'
          example:
            custom_audience: {}
        - type: object
          description: Target users who have not ordered from the merchant's brand within the last 365 days
          properties:
            new_to_brand:
              $ref: '#/components/schemas/GetAdGroups_NewToBrandTargetingCriterion'
          example:
            new_to_brand: {}
        - type: object
          description: Target users who have not ordered from the merchant's location within the last 365 days
          properties:
            new_to_location:
              $ref: '#/components/schemas/GetAdGroups_NewToLocationTargetingCriterion'
          example:
            new_to_location: {}
        - type: object
          description: Target users who have previously ordered from the merchant's location within the last 42 days
          properties:
            existing_to_location:
              $ref: '#/components/schemas/GetAdGroups_ExistingToLocationTargetingCriterion'
          example:
            existing_to_location: {}
        - type: object
          description: Target users who have ordered from the merchant's location in the last 365 days but have not ordered in the last 42 days
          properties:
            lapsed_to_location:
              $ref: '#/components/schemas/GetAdGroups_LapsedToLocationTargetingCriterion'
          example:
            lapsed_to_location: {}
    GetAdGroups_UberOneTargetingCriterion:
      type: object
      description: Targets users who have an active Uber One membership subscription
    GetAdGroups_OrderFrequencyTargetingCriterion:
      type: object
      description: Targets users based on their order frequency within a specified time range.
      properties:
        lower_bound:
          type: integer
          description: Lower bound for the number of orders (non-inclusive).
        upper_bound:
          type: integer
          description: Upper bound for the number of orders (non-inclusive). Set to `-1` to indicate no upper limit (any number of orders).
        time_range:
          $ref: '#/components/schemas/GetAdGroups_OrderFrequencyTimeRange'
          description: Time range for order frequency calculation
    GetAdGroups_OrderFrequencyTimeRange:
      type: object
      properties:
        past_days_range:
          $ref: '#/components/schemas/GetAdGroups_PastDaysRange'
    GetAdGroups_PastDaysRange:
      type: object
      properties:
        start_day:
          type: integer
          description: Start day for the range (0 = today, closest day to now)
        end_day:
          type: integer
          description: End day for the range (furthest day from now)
    GetAdGroups_KeywordTargetingCriterion:
      type: object
      description: Targets users based on search terms they use for keyword matching
      properties:
        keywords:
          type: array
          items:
            type: string
          description: List of keywords to target
          example:
            - pizza
            - delivery
            - fast food
        match_type:
          type: string
          enum:
            - MATCH_TYPE_INVALID
            - MATCH_TYPE_EXACT
            - MATCH_TYPE_BROAD
          example: MATCH_TYPE_EXACT
    GetAdGroups_CustomAudienceTargetingCriterion:
      type: object
      description: Targets users from a custom audience segment
    GetAdGroups_NewToBrandTargetingCriterion:
      type: object
      description: Targets users who have not ordered from the merchant's brand within the last 365 days
    GetAdGroups_NewToLocationTargetingCriterion:
      type: object
      description: Targets users who have not ordered from the merchant's location within the last 365 days
    GetAdGroups_ExistingToLocationTargetingCriterion:
      type: object
      description: Targets users who have previously ordered from the merchant's location within the last 42 days
    GetAdGroups_LapsedToLocationTargetingCriterion:
      type: object
      description: Targets users who have ordered from the merchant's location in the last 365 days but have not ordered in the last 42 days
    GetAdGroups_AdGroupAction:
      type: object
      description: Automated actions configured for ad groups
      oneOf:
        - type: object
          properties:
            auto_resume_action:
              $ref: '#/components/schemas/GetAdGroups_AutoResumeAction'
    GetAdGroups_AutoResumeAction:
      type: object
      description: Automatic resume action configuration
      properties:
        resume_date:
          type: string
          format: date-time
          description: Date to resume the ad group (RFC 3339 format, e.g., "2024-01-15T10:00:00Z")
    GetAdGroups_DaypartingSchedule:
      type: object
      description: Schedule configuration for ad delivery by time of day. Contains exactly 7 day schedules (Monday through Sunday).
      properties:
        dayparting_day_schedule:
          type: array
          items:
            $ref: '#/components/schemas/GetAdGroups_DaypartingDaySchedule'
          description: Weekly schedule starting from Monday (7 elements)
    GetAdGroups_DaypartingDaySchedule:
      type: object
      description: Schedule configuration for a specific day
      properties:
        intervals:
          type: array
          items:
            $ref: '#/components/schemas/GetAdGroups_DaypartingInterval'
    GetAdGroups_DaypartingInterval:
      type: object
      description: Time interval for ad delivery
      properties:
        start_time:
          $ref: '#/components/schemas/GetAdGroups_DaypartingTime'
        end_time:
          $ref: '#/components/schemas/GetAdGroups_DaypartingTime'
    GetAdGroups_DaypartingTime:
      type: object
      description: Specific time of day
      properties:
        hour:
          type: integer
          minimum: 0
          maximum: 24
          description: Hour of the day (0-23, or 24 to represent end of day)
        minute:
          type: integer
          minimum: 0
          maximum: 59
          description: Minute of the hour (0-59)
    GetAdGroups_AdSubjects:
      type: object
      description: Subject configuration for the ad group
      properties:
        stores:
          $ref: '#/components/schemas/GetAdGroups_StoreSubjects'
    GetAdGroups_StoreSubjects:
      type: object
      description: Store-based targeting configuration
      properties:
        store_ids:
          type: array
          items:
            type: string
          description: List of store IDs
    GetAdGroups_AdSummary:
      type: object
      properties:
        ad_id:
          type: string
          description: Unique ad identifier
        name:
          type: string
          description: Ad name
    GetAdGroups_CurrencyAmount:
      type: object
      properties:
        amount_e5:
          type: string
          format: currency-amount
          description: Amount in E5
        currency_code:
          type: string
          format: currency-code
          description: Currency code (ISO 4217)
    GetAdGroups_CofundingSource:
      type: object
      properties:
        funding_percentage:
          type: number
          format: double
          description: Percentage of cofunding for this campaign (e.g., 70.0 means 70% of the campaign budget is cofunded)
    GetAdGroups_PageToken:
      type: object
      description: Pagination token for retrieving additional results
      properties:
        value:
          type: string
          description: Opaque page token for pagination
    GetAdGroups_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    CreateAdGroups_CreateAdGroupInput:
      type: object
      required:
        - name
        - ad_product
        - configured_status
        - schedule
        - bidding
        - ad_subjects
      properties:
        name:
          type: string
          description: Ad group name
        ad_product:
          type: string
          enum:
            - SPONSORED_LISTING
            - SPONSORED_SEARCH
          description: Ad product type
        configured_status:
          type: string
          enum:
            - AD_GROUP_CONFIGURED_STATUS_ACTIVE
            - AD_GROUP_CONFIGURED_STATUS_PAUSED
          description: Status configured by the user
        budget:
          allOf:
            - $ref: '#/components/schemas/CreateAdGroups_BudgetInput'
          description: Budget configuration. Can be set at campaign level (shared across ad groups) or ad group level (more granular control).
        schedule:
          $ref: '#/components/schemas/CreateAdGroups_ScheduleInput'
          description: Schedule configuration for the ad group
        dayparting_schedule:
          $ref: '#/components/schemas/CreateAdGroups_DaypartingScheduleInput'
          description: Dayparting schedule configuration
        bidding:
          $ref: '#/components/schemas/CreateAdGroups_BiddingInput'
          description: Bidding configuration
        targeting:
          $ref: '#/components/schemas/CreateAdGroups_TargetingCriteriaInput'
          description: Targeting criteria configuration. Optional - if not provided or set to null, targets all users without restrictions.
        ad_subjects:
          $ref: '#/components/schemas/CreateAdGroups_AdSubjectsInput'
          description: Ad subjects configuration
    CreateAdGroups_BudgetInput:
      type: object
      required:
        - unit
        - total
      properties:
        unit:
          type: string
          enum:
            - BUDGET_UNIT_FIXED
            - BUDGET_UNIT_DAILY
            - BUDGET_UNIT_WEEKLY
          description: Budget time unit
        total:
          $ref: '#/components/schemas/CreateAdGroups_CurrencyAmountInput'
          description: Total budget amount
    CreateAdGroups_ScheduleInput:
      type: object
      required:
        - start_time
      properties:
        start_time:
          type: string
          format: date-time
          description: Start time (RFC 3339)
        end_time:
          type: string
          format: date-time
          description: End time (RFC 3339). If not provided, there is no end date.
    CreateAdGroups_DaypartingScheduleInput:
      type: object
      required:
        - dayparting_day_schedule
      description: Schedule configuration for ad delivery by time of day. Must include exactly 7 day schedules (Monday through Sunday).
      properties:
        dayparting_day_schedule:
          type: array
          items:
            $ref: '#/components/schemas/CreateAdGroups_DaypartingDayScheduleInput'
          description: Weekly schedule starting from Monday (7 elements required)
    CreateAdGroups_DaypartingDayScheduleInput:
      type: object
      properties:
        intervals:
          type: array
          items:
            $ref: '#/components/schemas/CreateAdGroups_DaypartingIntervalInput'
          description: Time intervals for the day
    CreateAdGroups_DaypartingIntervalInput:
      type: object
      required:
        - start_time
        - end_time
      description: Time interval for ad delivery
      properties:
        start_time:
          $ref: '#/components/schemas/CreateAdGroups_DaypartingTimeInput'
          description: Start time for the interval
        end_time:
          $ref: '#/components/schemas/CreateAdGroups_DaypartingTimeInput'
          description: End time for the interval
    CreateAdGroups_DaypartingTimeInput:
      type: object
      required:
        - hour
        - minute
      description: Specific time of day
      properties:
        hour:
          type: integer
          minimum: 0
          maximum: 24
          description: Hour of the day (0-23, or 24 to represent end of day)
        minute:
          type: integer
          minimum: 0
          maximum: 59
          description: Minute of the hour (0-59). Must be divisible by 15.
    CreateAdGroups_BiddingInput:
      type: object
      oneOf:
        - type: object
          properties:
            auto:
              $ref: '#/components/schemas/CreateAdGroups_AutoBiddingInput'
        - type: object
          properties:
            manual:
              $ref: '#/components/schemas/CreateAdGroups_ManualBiddingInput'
        - type: object
          properties:
            goal_based:
              $ref: '#/components/schemas/CreateAdGroups_GoalBasedBiddingInput'
    CreateAdGroups_AutoBiddingInput:
      type: object
      description: Automatic bidding configuration
    CreateAdGroups_ManualBiddingInput:
      type: object
      required:
        - bid_amount
      properties:
        bid_amount:
          $ref: '#/components/schemas/CreateAdGroups_CurrencyAmountInput'
          description: Manual bid amount
    CreateAdGroups_GoalBasedBiddingInput:
      type: object
      required:
        - roas_goal
      properties:
        roas_goal:
          type: number
          format: double
          description: Return on ad spend goal
    CreateAdGroups_TargetingCriteriaInput:
      type: object
      required:
        - negation
        - operator
        - criteria
      properties:
        negation:
          type: boolean
          description: Whether to negate the targeting criteria
        operator:
          type: string
          enum:
            - AND
            - OR
          description: Logical operator for combining criteria
        criteria:
          type: array
          items:
            $ref: '#/components/schemas/CreateAdGroups_TargetingCriterionInput'
          description: List of targeting criteria
    CreateAdGroups_TargetingCriterionInput:
      type: object
      oneOf:
        - type: object
          description: Nested targeting criteria
          properties:
            criteria:
              $ref: '#/components/schemas/CreateAdGroups_TargetingCriteriaInput'
        - type: object
          description: Target users who have an active Uber One membership subscription
          properties:
            uber_one:
              $ref: '#/components/schemas/CreateAdGroups_UberOneTargetingCriterionInput'
        - type: object
          description: Target users based on their order frequency within a specified time range (e.g., users who placed 1-3 orders in the past 30 days)
          properties:
            order_frequency:
              $ref: '#/components/schemas/CreateAdGroups_OrderFrequencyTargetingCriterionInput'
        - type: object
          description: Target users based on search terms they use (keyword matching for sponsored search campaigns)
          properties:
            keyword_targeting:
              $ref: '#/components/schemas/CreateAdGroups_KeywordTargetingCriterionInput'
        - type: object
          description: Target users who have not ordered from the merchant's brand within the last 365 days
          properties:
            new_to_brand:
              $ref: '#/components/schemas/CreateAdGroups_NewToBrandTargetingCriterionInput'
        - type: object
          description: Target users who have not ordered from the merchant's location within the last 365 days
          properties:
            new_to_location:
              $ref: '#/components/schemas/CreateAdGroups_NewToLocationTargetingCriterionInput'
        - type: object
          description: Target users who have previously ordered from the merchant's location within the last 42 days
          properties:
            existing_to_location:
              $ref: '#/components/schemas/CreateAdGroups_ExistingToLocationTargetingCriterionInput'
        - type: object
          description: Target users who have ordered from the merchant's location in the last 365 days but have not ordered in the last 42 days
          properties:
            lapsed_to_location:
              $ref: '#/components/schemas/CreateAdGroups_LapsedToLocationTargetingCriterionInput'
    CreateAdGroups_UberOneTargetingCriterionInput:
      type: object
      description: Targets users who have an active Uber One membership subscription
    CreateAdGroups_NewToBrandTargetingCriterionInput:
      type: object
      description: Targets users who have not ordered from the merchant's brand within the last 365 days
    CreateAdGroups_NewToLocationTargetingCriterionInput:
      type: object
      description: Targets users who have not ordered from the merchant's location within the last 365 days
    CreateAdGroups_ExistingToLocationTargetingCriterionInput:
      type: object
      description: Targets users who have previously ordered from the merchant's location within the last 42 days
    CreateAdGroups_LapsedToLocationTargetingCriterionInput:
      type: object
      description: Targets users who have ordered from the merchant's location in the last 365 days but have not ordered in the last 42 days
    CreateAdGroups_OrderFrequencyTargetingCriterionInput:
      type: object
      description: Targets users based on their order frequency within a specified time range.
      required:
        - lower_bound
        - upper_bound
        - time_range
      properties:
        lower_bound:
          type: integer
          description: Lower bound for order frequency (non-inclusive).
        upper_bound:
          type: integer
          description: Upper bound for order frequency (non-inclusive). Set to `-1` to indicate no upper limit (any number of orders).
        time_range:
          $ref: '#/components/schemas/CreateAdGroups_OrderFrequencyTimeRangeInput'
          description: Time range for order frequency
    CreateAdGroups_OrderFrequencyTimeRangeInput:
      type: object
      oneOf:
        - type: object
          properties:
            past_days_range:
              $ref: '#/components/schemas/CreateAdGroups_PastDaysRangeInput'
    CreateAdGroups_PastDaysRangeInput:
      type: object
      required:
        - start_day
        - end_day
      properties:
        start_day:
          type: integer
          description: Start day for the range (0 = today, closest day to now)
        end_day:
          type: integer
          description: End day for the range (furthest day from now)
    CreateAdGroups_KeywordTargetingCriterionInput:
      type: object
      description: Targets users based on search terms they use for keyword matching
      required:
        - keywords
        - match_type
      properties:
        keywords:
          type: array
          items:
            type: string
          description: List of keywords to target
        match_type:
          type: string
          enum:
            - EXACT
            - BROAD
          description: Keyword match type
    CreateAdGroups_AdSubjectsInput:
      type: object
      properties:
        stores:
          $ref: '#/components/schemas/CreateAdGroups_StoreSubjectsInput'
    CreateAdGroups_StoreSubjectsInput:
      type: object
      required:
        - store_ids
      properties:
        store_ids:
          type: array
          items:
            type: string
          description: List of store IDs
    CreateAdGroups_CurrencyAmountInput:
      type: object
      required:
        - amount_e5
        - currency_code
      properties:
        amount_e5:
          type: string
          format: currency-amount
          description: Amount in E5 format (e.g., "50000" represents $0.50)
        currency_code:
          type: string
          format: currency-code
          description: Currency code (ISO 4217)
    CreateAdGroups_OperationResult:
      type: object
      oneOf:
        - type: object
          properties:
            success:
              $ref: '#/components/schemas/CreateAdGroups_OperationSuccess'
        - type: object
          properties:
            failure:
              $ref: '#/components/schemas/CreateAdGroups_OperationFailure'
    CreateAdGroups_OperationSuccess:
      type: object
      properties:
        id:
          type: string
          description: ID of the created ad group
    CreateAdGroups_OperationFailure:
      type: object
      properties:
        error_code:
          type: string
          description: Error code for the failed operation
        error_message:
          type: string
          description: Error message for the failed operation
    CreateAdGroups_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    UpdateAdGroups_UpdateAdGroupInput:
      type: object
      description: Input for updating an ad group.
      required:
        - ad_group_id
      properties:
        ad_group_id:
          type: string
          description: Unique ad group identifier
        name:
          type: string
          description: Ad group name
        configured_status:
          type: string
          enum:
            - AD_GROUP_CONFIGURED_STATUS_ACTIVE
            - AD_GROUP_CONFIGURED_STATUS_PAUSED
          description: Status configured by the user
        budget:
          allOf:
            - $ref: '#/components/schemas/UpdateAdGroups_BudgetInput'
          description: Budget configuration for the ad group. Providing an empty budget removes the budget from the ad group.
        bidding:
          $ref: '#/components/schemas/UpdateAdGroups_BiddingInput'
          description: Bidding configuration
        targeting:
          $ref: '#/components/schemas/UpdateAdGroups_TargetingCriteriaInput'
          description: Targeting criteria configuration. Optional - if not provided or set to null, targets all users without restrictions. Providing an empty targeting object clears the targeting from the ad group.
        ad_subjects:
          $ref: '#/components/schemas/UpdateAdGroups_AdSubjectsInput'
          description: Ad subjects configuration
        schedule:
          allOf:
            - $ref: '#/components/schemas/UpdateAdGroups_ScheduleInput'
          description: Schedule configuration for the ad group
        dayparting_schedule:
          allOf:
            - $ref: '#/components/schemas/UpdateAdGroups_DaypartingScheduleInput'
          description: Dayparting schedule configuration. Providing an empty dayparting schedule disables the dayparting schedule for the ad group.
    UpdateAdGroups_BudgetInput:
      type: object
      required:
        - unit
        - total
      properties:
        unit:
          type: string
          enum:
            - BUDGET_UNIT_FIXED
            - BUDGET_UNIT_DAILY
            - BUDGET_UNIT_WEEKLY
          description: Budget time unit
        total:
          $ref: '#/components/schemas/UpdateAdGroups_CurrencyAmount'
          description: Total budget amount
    UpdateAdGroups_ScheduleInput:
      type: object
      required:
        - start_time
      properties:
        start_time:
          type: string
          format: date-time
          description: Start time (RFC 3339)
        end_time:
          type: string
          format: date-time
          description: End time (RFC 3339). If not provided, there is no end date.
    UpdateAdGroups_DaypartingScheduleInput:
      type: object
      required:
        - dayparting_day_schedule
      description: Schedule configuration for ad delivery by time of day. Must include exactly 7 day schedules (Monday through Sunday).
      properties:
        dayparting_day_schedule:
          type: array
          items:
            $ref: '#/components/schemas/UpdateAdGroups_DaypartingDayScheduleInput'
          description: Weekly schedule starting from Monday (7 elements required)
    UpdateAdGroups_DaypartingDayScheduleInput:
      type: object
      properties:
        intervals:
          type: array
          items:
            $ref: '#/components/schemas/UpdateAdGroups_DaypartingIntervalInput'
          description: Time intervals for the day
    UpdateAdGroups_DaypartingIntervalInput:
      type: object
      required:
        - start_time
        - end_time
      description: Time interval for ad delivery
      properties:
        start_time:
          $ref: '#/components/schemas/UpdateAdGroups_DaypartingTimeInput'
          description: Start time for the interval
        end_time:
          $ref: '#/components/schemas/UpdateAdGroups_DaypartingTimeInput'
          description: End time for the interval
    UpdateAdGroups_DaypartingTimeInput:
      type: object
      required:
        - hour
        - minute
      description: Specific time of day
      properties:
        hour:
          type: integer
          minimum: 0
          maximum: 24
          description: Hour of the day (0-23, or 24 to represent end of day)
        minute:
          type: integer
          minimum: 0
          maximum: 59
          description: Minute of the hour (0-59). Must be divisible by 15.
    UpdateAdGroups_BiddingInput:
      type: object
      oneOf:
        - type: object
          properties:
            auto:
              $ref: '#/components/schemas/UpdateAdGroups_AutoBiddingInput'
        - type: object
          properties:
            manual:
              $ref: '#/components/schemas/UpdateAdGroups_ManualBiddingInput'
        - type: object
          properties:
            goal_based:
              $ref: '#/components/schemas/UpdateAdGroups_GoalBasedBiddingInput'
    UpdateAdGroups_AutoBiddingInput:
      type: object
      description: Automatic bidding configuration
    UpdateAdGroups_ManualBiddingInput:
      type: object
      required:
        - bid_amount
      properties:
        bid_amount:
          $ref: '#/components/schemas/UpdateAdGroups_CurrencyAmount'
          description: Manual bid amount
    UpdateAdGroups_GoalBasedBiddingInput:
      type: object
      required:
        - roas_goal
      properties:
        roas_goal:
          type: number
          format: double
          description: Return on ad spend goal
    UpdateAdGroups_TargetingCriteriaInput:
      type: object
      required:
        - negation
        - operator
        - criteria
      properties:
        negation:
          type: boolean
          description: Whether to negate the targeting criteria
        operator:
          type: string
          enum:
            - AND
            - OR
          description: Logical operator for combining criteria
        criteria:
          type: array
          items:
            $ref: '#/components/schemas/UpdateAdGroups_TargetingCriterionInput'
          description: List of targeting criteria
    UpdateAdGroups_TargetingCriterionInput:
      type: object
      oneOf:
        - type: object
          description: Nested targeting criteria
          properties:
            criteria:
              $ref: '#/components/schemas/UpdateAdGroups_TargetingCriteriaInput'
        - type: object
          description: Target users who have an active Uber One membership subscription
          properties:
            uber_one:
              $ref: '#/components/schemas/UpdateAdGroups_UberOneTargetingCriterionInput'
        - type: object
          description: Target users based on their order frequency within a specified time range (e.g., users who placed 1-3 orders in the past 30 days)
          properties:
            order_frequency:
              $ref: '#/components/schemas/UpdateAdGroups_OrderFrequencyTargetingCriterionInput'
        - type: object
          description: Target users based on search terms they use (keyword matching for sponsored search campaigns)
          properties:
            keyword_targeting:
              $ref: '#/components/schemas/UpdateAdGroups_KeywordTargetingCriterionInput'
        - type: object
          description: Target users who have not ordered from the merchant's brand within the last 365 days
          properties:
            new_to_brand:
              $ref: '#/components/schemas/UpdateAdGroups_NewToBrandTargetingCriterionInput'
        - type: object
          description: Target users who have not ordered from the merchant's location within the last 365 days
          properties:
            new_to_location:
              $ref: '#/components/schemas/UpdateAdGroups_NewToLocationTargetingCriterionInput'
        - type: object
          description: Target users who have previously ordered from the merchant's location within the last 42 days
          properties:
            existing_to_location:
              $ref: '#/components/schemas/UpdateAdGroups_ExistingToLocationTargetingCriterionInput'
        - type: object
          description: Target users who have ordered from the merchant's location in the last 365 days but have not ordered in the last 42 days
          properties:
            lapsed_to_location:
              $ref: '#/components/schemas/UpdateAdGroups_LapsedToLocationTargetingCriterionInput'
    UpdateAdGroups_UberOneTargetingCriterionInput:
      type: object
      description: Targets users who have an active Uber One membership subscription
    UpdateAdGroups_NewToBrandTargetingCriterionInput:
      type: object
      description: Targets users who have not ordered from the merchant's brand within the last 365 days
    UpdateAdGroups_NewToLocationTargetingCriterionInput:
      type: object
      description: Targets users who have not ordered from the merchant's location within the last 365 days
    UpdateAdGroups_ExistingToLocationTargetingCriterionInput:
      type: object
      description: Targets users who have previously ordered from the merchant's location within the last 42 days
    UpdateAdGroups_LapsedToLocationTargetingCriterionInput:
      type: object
      description: Targets users who have ordered from the merchant's location in the last 365 days but have not ordered in the last 42 days
    UpdateAdGroups_OrderFrequencyTargetingCriterionInput:
      type: object
      description: Targets users based on their order frequency within a specified time range.
      required:
        - lower_bound
        - upper_bound
        - time_range
      properties:
        lower_bound:
          type: integer
          description: Lower bound for order frequency (non-inclusive).
        upper_bound:
          type: integer
          description: Upper bound for order frequency (non-inclusive). Set to `-1` to indicate no upper limit (any number of orders).
        time_range:
          $ref: '#/components/schemas/UpdateAdGroups_OrderFrequencyTimeRangeInput'
          description: Time range for order frequency
    UpdateAdGroups_OrderFrequencyTimeRangeInput:
      type: object
      oneOf:
        - type: object
          properties:
            past_days_range:
              $ref: '#/components/schemas/UpdateAdGroups_PastDaysRangeInput'
    UpdateAdGroups_PastDaysRangeInput:
      type: object
      required:
        - start_day
        - end_day
      properties:
        start_day:
          type: integer
          description: Start day for the range (0 = today, closest day to now)
        end_day:
          type: integer
          description: End day for the range (furthest day from now)
    UpdateAdGroups_KeywordTargetingCriterionInput:
      type: object
      description: Targets users based on search terms they use for keyword matching
      required:
        - keywords
        - match_type
      properties:
        keywords:
          type: array
          items:
            type: string
          description: List of keywords to target
        match_type:
          type: string
          enum:
            - EXACT
            - BROAD
          description: Keyword match type
    UpdateAdGroups_AdSubjectsInput:
      type: object
      properties:
        stores:
          $ref: '#/components/schemas/UpdateAdGroups_StoreSubjectsInput'
    UpdateAdGroups_StoreSubjectsInput:
      type: object
      required:
        - store_ids
      properties:
        store_ids:
          type: array
          items:
            type: string
          description: List of store IDs
    UpdateAdGroups_CurrencyAmount:
      type: object
      required:
        - amount_e5
        - currency_code
      properties:
        amount_e5:
          type: string
          format: currency-amount
          description: Amount in E5 format (e.g., "50000" represents $0.50)
        currency_code:
          type: string
          format: currency-code
          description: Currency code (ISO 4217)
    UpdateAdGroups_OperationResult:
      type: object
      oneOf:
        - type: object
          properties:
            success:
              $ref: '#/components/schemas/UpdateAdGroups_OperationSuccess'
        - type: object
          properties:
            failure:
              $ref: '#/components/schemas/UpdateAdGroups_OperationFailure'
    UpdateAdGroups_OperationSuccess:
      type: object
      properties:
        id:
          type: string
          description: ID of the updated ad group
    UpdateAdGroups_OperationFailure:
      type: object
      properties:
        error_code:
          type: string
          description: Error code for the failed operation
        error_message:
          type: string
          description: Error message for the failed operation
    UpdateAdGroups_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    GetAds_Ad:
      type: object
      properties:
        ad_id:
          type: string
          description: Unique ad identifier
        ad_group_id:
          type: string
          description: Ad group identifier
        campaign_id:
          type: string
          description: Campaign identifier
        name:
          type: string
          description: Ad name
    GetAds_PageToken:
      type: object
      description: Pagination token for retrieving additional results
      properties:
        value:
          type: string
          description: Opaque page token for pagination
    GetAds_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    CreateAds_CreateAdInput:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: Ad name
    CreateAds_OperationResult:
      type: object
      oneOf:
        - type: object
          properties:
            success:
              $ref: '#/components/schemas/CreateAds_OperationSuccess'
        - type: object
          properties:
            failure:
              $ref: '#/components/schemas/CreateAds_OperationFailure'
    CreateAds_OperationSuccess:
      type: object
      properties:
        id:
          type: string
          description: ID of the created ad
    CreateAds_OperationFailure:
      type: object
      properties:
        error_code:
          type: string
          description: Error code for the failed operation
        error_message:
          type: string
          description: Error message for the failed operation
    CreateAds_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    UpdateAds_UpdateAdInput:
      type: object
      required:
        - ad_id
      properties:
        ad_id:
          type: string
          description: Unique ad identifier
        name:
          type: string
          description: Ad name
    UpdateAds_OperationResult:
      type: object
      oneOf:
        - type: object
          properties:
            success:
              $ref: '#/components/schemas/UpdateAds_OperationSuccess'
        - type: object
          properties:
            failure:
              $ref: '#/components/schemas/UpdateAds_OperationFailure'
    UpdateAds_OperationSuccess:
      type: object
      properties:
        id:
          type: string
          description: ID of the updated ad
    UpdateAds_OperationFailure:
      type: object
      properties:
        error_code:
          type: string
          description: Error code for the failed operation
        error_message:
          type: string
          description: Error message for the failed operation
    UpdateAds_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    GetProducts_Product:
      type: object
      description: Product information for advertising inventory
      properties:
        gtin:
          type: string
          description: Global Trade Item Number
        product_name:
          type: string
          description: Official or commonly recognized name of the product as sold to consumers
        brand_owner_name:
          type: string
          description: Company or legal entity that owns the rights to the brand and product
        brand_name:
          type: string
          description: Marketed or consumer-facing brand under which the product is sold
        main_image_url:
          type: string
          description: Primary image that visually represents the product on Uber Eats
        size:
          type: string
          description: Measurable quantity expressed in standardized units (e.g., "500 mL," "12 oz," "10 count")
    GetProducts_PageToken:
      type: object
      description: Pagination token for retrieving additional results
      properties:
        value:
          type: string
          description: Opaque page token for pagination
    GetProducts_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    CreateReports_ExternalSubmitReportJobRequest:
      type: object
      description: Request configuration for generating an asynchronous report
      required:
        - report_type
        - time_range
        - columns
        - time_unit
        - file_format
      properties:
        report_type:
          type: string
          description: Type of report
        time_range:
          $ref: '#/components/schemas/CreateReports_TimeRange'
        columns:
          type: array
          items:
            type: string
          description: List of dimensions and metrics to include in the report
        time_unit:
          type: string
          enum:
            - DAILY
            - WEEKLY
            - MONTHLY
            - SUMMARY
          description: |
            Time unit for aggregation:
            - DAILY: Day-by-day breakdown
            - WEEKLY: Week-by-week aggregation (start date must be Monday)
            - MONTHLY: Month-by-month aggregation (start date must be first of month)
            - SUMMARY: Total aggregation across date range

            Time Range Configuration:
            - Weekly Reports: start_time must be Monday, end_time must be next Monday
            - Monthly Reports: start_time must be first of month, end_time must be first of next month
            - Daily/Summary Reports: any valid date range

            Examples:
            - Weekly: "2024-01-01T00:00:00Z" to "2024-01-08T00:00:00Z"
            - Monthly: "2024-01-01T00:00:00Z" to "2024-02-01T00:00:00Z"
            - Daily: "2024-01-15T00:00:00Z" to "2024-01-20T00:00:00Z"
        file_format:
          type: string
          description: Output file format (CSV)
        filters:
          type: array
          items:
            $ref: '#/components/schemas/CreateReports_Filter'
          description: Filters to apply to the report
    CreateReports_ExternalSubmitReportJobResponse:
      type: object
      description: Response containing the report identifier for tracking
      properties:
        report_id:
          type: string
          description: Unique report identifier
    CreateReports_TimeRange:
      type: object
      description: Time range specification for report data
      required:
        - start_time
        - end_time
      properties:
        start_time:
          type: string
          format: date-time
          description: Start time (RFC 3339)
        end_time:
          type: string
          format: date-time
          description: End time (RFC 3339)
    CreateReports_Filter:
      type: object
      description: Filter configuration for report data
      required:
        - column
        - operator
        - values
      properties:
        column:
          type: string
          description: Column to filter on
        operator:
          type: string
          description: Filter operator
        values:
          type: array
          items:
            type: string
          description: Filter values
    CreateReports_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    GetReport_ExternalGetReportJobStatusResponse:
      type: object
      description: Response containing report generation status and results
      properties:
        status:
          type: string
          enum:
            - COMPLETED
            - FAILED
            - PROCESSING
          description: Report status
        result:
          $ref: '#/components/schemas/GetReport_ReportResult'
    GetReport_ReportResult:
      description: Report generation result with timing information and outcome
      allOf:
        - type: object
          properties:
            started_at:
              type: string
              format: date-time
              description: When the report started processing (RFC 3339)
            finished_at:
              type: string
              format: date-time
              description: When the report finished processing (RFC 3339)
        - oneOf:
            - type: object
              properties:
                success_result:
                  $ref: '#/components/schemas/GetReport_ReportSuccessResult'
            - type: object
              properties:
                failure_result:
                  $ref: '#/components/schemas/GetReport_ReportFailureResult'
    GetReport_ReportSuccessResult:
      type: object
      description: Successful report generation result with download information
      properties:
        report_url:
          type: string
          description: URL to download the report
        file_size:
          type: string
          format: int64
          description: Size of the report file in bytes
        url_expires_at:
          type: string
          format: date-time
          description: When the download URL expires (RFC 3339)
        report_schema:
          type: array
          items:
            type: string
          description: Schema of the report columns
    GetReport_ReportFailureResult:
      type: object
      description: Failed report generation result with error information
      properties:
        failure_reason:
          type: string
          description: Reason why the report failed
    GetReport_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
    SyncReport_SyncReportRequest:
      type: object
      description: Request configuration for generating a synchronous report
      required:
        - report_type
        - time_range
        - columns
        - time_unit
      properties:
        report_type:
          type: string
          description: Type of report (must support sync reporting)
        time_range:
          $ref: '#/components/schemas/SyncReport_TimeRange'
        columns:
          type: array
          items:
            type: string
          description: List of dimensions and metrics to include in the report
        time_unit:
          type: string
          enum:
            - HOURLY
            - DAILY
          description: |
            Time unit for aggregation:
            - HOURLY: Hour-by-hour breakdown
            - DAILY: Day-by-day breakdown
        filters:
          type: array
          items:
            $ref: '#/components/schemas/SyncReport_Filter'
          description: Filters to apply to the report
    SyncReport_SyncReportResponse:
      type: object
      description: Response containing report data with schema and rows
      properties:
        schema:
          $ref: '#/components/schemas/SyncReport_ReportSchema'
        data:
          $ref: '#/components/schemas/SyncReport_ReportData'
    SyncReport_ReportSchema:
      type: object
      description: Schema describing the structure of report data
      properties:
        columns:
          type: array
          items:
            $ref: '#/components/schemas/SyncReport_ColumnDefinition'
    SyncReport_ColumnDefinition:
      type: object
      description: Definition of a report column
      properties:
        name:
          type: string
          description: Column name
        type:
          type: string
          enum:
            - COLUMN_TYPE_STRING
            - COLUMN_TYPE_INT64
            - COLUMN_TYPE_DOUBLE
            - COLUMN_TYPE_TIMESTAMP
            - COLUMN_TYPE_BOOLEAN
          description: Column data type
    SyncReport_ReportData:
      type: object
      description: Report data containing rows of values
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/SyncReport_ReportRow'
    SyncReport_ReportRow:
      type: object
      description: A single row of report data
      properties:
        values:
          type: array
          items:
            type: string
          description: Row values as strings, ordered according to schema columns
    SyncReport_TimeRange:
      type: object
      description: Time range specification for report data
      required:
        - start_time
        - end_time
      properties:
        start_time:
          type: string
          format: date-time
          description: Start time (RFC 3339)
        end_time:
          type: string
          format: date-time
          description: End time (RFC 3339)
    SyncReport_Filter:
      type: object
      description: Filter configuration for report data
      required:
        - column
        - operator
        - values
      properties:
        column:
          type: string
          description: Column to filter on
        operator:
          type: string
          enum:
            - EQUAL
            - NOT_EQUAL
            - IN
          description: Filter operator
        values:
          type: array
          items:
            type: string
          description: Filter values
    SyncReport_error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
