openapi: 3.0.0
info:
  version: v0
  title: NeonJS
  description: Adomni NEON Public API
  termsOfService: https://www.adomni.com/terms
  contact:
    email: api-team@adomni.com
tags:
  - name: Neon
    description: All non-cors endpoints are tagged neon for generation purposes
  - name: Meta
    description: Information about the Neon api itself
  - name: Player
    description: Endpoints used specifically by the Adomni player
  - name: Content
    description: Endpoints used to upload content or read info about it
  - name: Owner
    description: Endpoints of interest to device owners
  - name: Device
    description: Details about one or multiple devices
  - name: Reporting
    description: Data as it shows up on Adomni reports
  - name: CORS
    description: These endpoints are here to support CORS
  - name: Public
    description: These endpoints can be called without setting the authorization header
  - name: Authentication
    description: These endpoints are used in authentication with the API
  - name: Audience
    description: These endpoints describe audience composition around locations
  - name: Edge
    description: Endpoints used internally by the public website
  - name: Spotlight
    description: Endpoints used by the spotlight product
servers:
  - url: https://neon.adomni.com/v1
paths:
  /:
    get:
      description: Redirects to the /meta/server endpoint
      tags:
        - Neon
        - Meta
        - Public
      responses:
        '301':
          description: Redirects to the /meta/server endpoint
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /.well-known/openid-configuration:
    get:
      description: >
        This is the "well-known" endpoint for use by OpenID Connect clients to
        discover the OpenID Connect provider metadata
      tags:
        - Neon
        - Authentication
      responses:
        '200':
          description: The OpenID Connect provider metadata in JSON format
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OpenIDProviderMetadataResponse'
  /access-tokens:
    post:
      tags:
        - Neon
        - Public
        - Authentication
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessTokenResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessTokenRequest'
        description: Request for the access token
        required: true
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /access-tokens/exchange:
    post:
      tags:
        - Neon
        - Unicorn
        - Authentication
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessTokenResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessTokenAuth0Exchange'
        description: Request to exchange the Auth0 Token for a Neon Token
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /access-tokens/exit-proxy:
    get:
      tags:
        - Neon
        - Authentication
        - Proxy
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessTokenResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /access-tokens/proxy/{userId}:
    get:
      tags:
        - Neon
        - Authentication
        - Proxy
      parameters:
        - name: userId
          in: path
          description: userId of the proxy user
          required: true
          schema:
            type: integer
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessTokenResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Forbidden as user doesn't have permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: userId
          in: path
          description: userId of the proxy user
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Standard CORS header response
  /access-tokens/refresh:
    post:
      tags:
        - Neon
        - Authentication
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessTokenResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessTokenRefreshRequest'
        description: Request to refresh the access token or change active user
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /advertisers:
    get:
      tags:
        - Neon
      description: Get a list of available advertiser names
      security:
        - OAuth2: []
      parameters:
        - name: advertiserAuth0TeamId
          in: query
          description: A team ID to pull advertiser names for.
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdvertiserList'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: advertiserAuth0TeamId
          in: query
          description: A team ID to pull advertiser names for.
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /attributes:
    get:
      description: >
        Return a list of dynamic attributes used in our system (basically
        labels)
      tags:
        - Neon
        - Public
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAttributeList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /attributes/{idOrSlug}:
    get:
      description: |
        Return a list valid values for a particular attribute
      tags:
        - Neon
        - Public
      parameters:
        - name: idOrSlug
          in: path
          description: Id or slug of the attribute you wish values for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAttributeValueList'
        '404':
          description: No attribute by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: idOrSlug
          in: path
          description: Id or slug of the attribute you wish values for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /audience-segments:
    get:
      description: |
        Fetches the full descriptor of all audience segments
      tags:
        - Neon
        - Audience
      parameters:
        - name: audienceProvider
          in: query
          description: The provider to be used as a data source (defaults to local)
          required: false
          schema:
            type: string
            enum:
              - mira
              - local
            x-enum-varnames:
              - Mira
              - Local
        - name: miraType
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/AudienceSegmentMiraType'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AudienceSegmentList'
    options:
      tags:
        - CORS
      parameters:
        - name: audienceProvider
          in: query
          description: The provider to be used as a data source (defaults to local)
          required: false
          schema:
            type: string
            enum:
              - mira
              - local
            x-enum-varnames:
              - Mira
              - Local
        - name: miraType
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/AudienceSegmentMiraType'
      responses:
        '200':
          description: Standard CORS header response
  /audience-segments/{id}:
    get:
      description: |
        Fetches the full descriptor of a single audience segment
      tags:
        - Neon
        - Audience
      parameters:
        - name: id
          in: path
          description: id of the audience segment to fetch
          required: true
          schema:
            type: number
        - name: audienceProvider
          in: query
          description: The provider to be used as a data source (defaults to local)
          required: false
          schema:
            type: string
            enum:
              - mira
              - local
            x-enum-varnames:
              - Mira
              - Local
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AudienceSegment'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: id of the audience segment to fetch
          required: true
          schema:
            type: number
        - name: audienceProvider
          in: query
          description: The provider to be used as a data source (defaults to local)
          required: false
          schema:
            type: string
            enum:
              - mira
              - local
            x-enum-varnames:
              - Mira
              - Local
      responses:
        '200':
          description: Standard CORS header response
  /audiences/impression-distribution:
    post:
      description: >
        Given a set of impressions, distributes them over the demographics of
        the supplied locations
      tags:
        - Neon
        - Audience
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImpressionAudienceRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ImpressionAudienceSummary'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /audiences/score:
    post:
      description: >
        Fetch one or more audiences given a list of location hashes (lat/lng
        bounding boxes possible in v2)
      tags:
        - Neon
        - Audience
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AudienceScoreRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AudienceScoreResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /audiences/summary:
    post:
      description: >
        Returns an object describing the most popular audiences for a given
        device
      tags:
        - Neon
        - Audience
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AudienceSummaryRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AudienceSummaryResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /audiences/{locationHash}/full:
    get:
      description: |
        Returns the complete audience data we have for a location
      tags:
        - Neon
        - Audience
      security:
        - OAuth2: []
      parameters:
        - name: locationHash
          in: path
          description: The location hash for which to pull the data
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FullLocationAudienceDataElementList'
    options:
      tags:
        - CORS
      parameters:
        - name: locationHash
          in: path
          description: The location hash for which to pull the data
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/public/owners:
    post:
      description: Fetch a list of public owner labels by auth0 team id list
      tags:
        - Neon
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicOwnerLabelRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeamPublicList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams:
    get:
      description: |
        Searches Teams and sends a list back
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      parameters:
        - name: auth0UserId
          in: query
          description: Return only teams for the given Auth0 user ID
          schema:
            type: string
        - name: searchText
          in: query
          description: Text search on team name
          required: false
          schema:
            type: string
        - name: accountType
          in: query
          description: >-
            Account type. This can probably be an enum so we can use it both on
            the model and here.
          required: false
          schema:
            $ref: '#/components/schemas/AdomniTeamAccountType'
        - name: creditDecisions
          in: query
          description: A list of one or more Credit Decisions to filter by.
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserCreditDecision'
          style: form
          explode: false
        - name: teamRoles
          in: query
          description: A list of team roles to search
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniTeamRole'
          style: form
          explode: false
        - name: includes
          in: query
          description: A list of optional data to include
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniTeamSearchRequestIncludes'
          style: form
          explode: false
        - name: offset
          in: query
          description: Offset for pagination
          required: false
          schema:
            type: number
        - name: limit
          in: query
          description: Limit for pagination. Pass -1 for all.
          required: false
          schema:
            type: number
        - name: orderBy
          in: query
          required: false
          schema:
            type: string
        - name: sortDirection
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/PaginationSortDirection'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeamList'
    post:
      description: Creates a new Team
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdomniTeamCreateRequest'
      responses:
        '200':
          description: Successfully created a team
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeam'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0UserId
          in: query
          description: Return only teams for the given Auth0 user ID
          schema:
            type: string
        - name: searchText
          in: query
          description: Text search on team name
          required: false
          schema:
            type: string
        - name: accountType
          in: query
          description: >-
            Account type. This can probably be an enum so we can use it both on
            the model and here.
          required: false
          schema:
            $ref: '#/components/schemas/AdomniTeamAccountType'
        - name: teamRole
          in: query
          description: A list of team roles to search
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniTeamRole'
          style: form
          explode: false
        - name: includes
          in: query
          description: A list of optional data to include
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniTeamSearchRequestIncludes'
          style: form
          explode: false
        - name: offset
          in: query
          description: Offset for pagination
          required: false
          schema:
            type: number
        - name: limit
          in: query
          description: Limit for pagination. Pass -1 for all.
          required: false
          schema:
            type: number
        - name: orderBy
          in: query
          required: false
          schema:
            type: string
        - name: sortDirection
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/PaginationSortDirection'
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/auth0-team-id-list:
    post:
      description: Fetch teams by a list of team IDs
      tags:
        - Neon
        - Overseer
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeamList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/domain/lookup:
    post:
      description: >-
        This accepts a 'domain' parameter in the body and will return an Adomni
        Team object if it exists.
      tags:
        - Neon
        - Overseer
        - Unicorn
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainToTeamRequest'
      responses:
        '200':
          description: Successfully fetched team
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeam'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/public:
    get:
      description: |
        Searches Teams and sends a list back a minified list of Teams
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      parameters:
        - name: searchText
          in: query
          description: Text search on team name
          required: false
          schema:
            type: string
        - name: accountType
          in: query
          description: >-
            Account type. This can probably be an enum so we can use it both on
            the model and here.
          required: false
          schema:
            $ref: '#/components/schemas/AdomniTeamAccountType'
        - name: teamRoles
          in: query
          description: A list of team roles to search
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniTeamRole'
          style: form
          explode: false
        - name: offset
          in: query
          description: Offset for pagination
          required: false
          schema:
            type: number
        - name: limit
          in: query
          description: Limit for pagination. Pass -1 for all.
          required: false
          schema:
            type: number
        - name: orderBy
          in: query
          required: false
          schema:
            type: string
        - name: sortDirection
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/PaginationSortDirection'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeamPublicList'
    options:
      tags:
        - CORS
      parameters:
        - name: searchText
          in: query
          description: Text search on team name
          required: false
          schema:
            type: string
        - name: accountType
          in: query
          description: >-
            Account type. This can probably be an enum so we can use it both on
            the model and here.
          required: false
          schema:
            $ref: '#/components/schemas/AdomniTeamAccountType'
        - name: teamRoles
          in: query
          description: A list of team roles to search
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniTeamRole'
          style: form
          explode: false
        - name: offset
          in: query
          description: Offset for pagination
          required: false
          schema:
            type: number
        - name: limit
          in: query
          description: Limit for pagination. Pass -1 for all.
          required: false
          schema:
            type: number
        - name: orderBy
          in: query
          required: false
          schema:
            type: string
        - name: sortDirection
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/PaginationSortDirection'
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/self:
    get:
      description: >-
        This takes the token and returns an AdomniTeam for the current logged in
        team.
      tags:
        - Neon
        - Overseer
        - Unicorn
        - Shoutable
        - Spotlight
      security:
        - OAuth2: []
      responses:
        '200':
          description: Details of the team
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeam'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/supply-source:
    post:
      description: Upserts a supply source for a given team.
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdomniTeamSupplySource'
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeamSupplySource'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/{auth0TeamId}:
    get:
      description: Fetch the details for a given Team
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The ID of the Team
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeam'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    patch:
      description: Updates the information for a given team
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The ID of the Team
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdomniTeam'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeam'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0TeamId
          in: path
          description: The ID of the Team
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/{auth0TeamId}/invitations:
    post:
      description: >-
        This will create obscure keys for a new user to be added to a team and
        send them an email.
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenericStringList'
      responses:
        '200':
          description: Successfully send an email to every email in the list
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeamInviteResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/{auth0TeamId}/invitations/pending:
    get:
      description: This will return a list of pending invitations for a given organization.
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Will respond with an Adomni Team that the user is not apart of
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AdomniTeamInvitationUser'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/{auth0TeamId}/invitations/{invitationId}:
    put:
      description: This will accept and insert a user into a Team via invitation ID.
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
        - name: invitationId
          in: path
          description: The ID of the Team Invitation
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Will respond with an Adomni Team that the user is not apart of
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeam'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    delete:
      description: This will remove a pending user from a team.
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
        - name: invitationId
          in: path
          description: The ID of the Team Invitation
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Will respond with an Adomni Team that the user is not apart of
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AdomniTeamInvitationUser'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
        - name: invitationId
          in: path
          description: The ID of the Team Invitation
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/{auth0TeamId}/supply-source:
    get:
      description: Return a list of supply sources for a given team.
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniTeamSupplySource'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    delete:
      description: Deletes supply sources for a given team.
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
    options:
      tags:
        - CORS
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/{auth0TeamId}/switch:
    get:
      description: >-
        This will pull the acting Team ID from the JWT, validate the new team ID
        in path, return a new JWT
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team the user wants to switch to.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessTokenResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0TeamId
          in: path
          description: The Auth0 ID of the Team the user wants to switch to.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/{auth0TeamId}/user-assignments:
    get:
      description: Get all the user assignments associated with a given team
      tags:
        - Neon
        - Overseer
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdomniUserAssignmentList'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    put:
      description: >-
        Remove all existing user assignments and associate a new set of user
        assignment with a given team.
      tags:
        - Neon
        - Overseer
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdomniUserAssignmentUpdateRequest'
        description: Request to update user assignments
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdomniUserAssignmentList'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0TeamId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/{auth0TeamId}/users:
    get:
      description: This will search all users for a given team
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The ID of the Team
          required: true
          schema:
            type: string
        - name: searchText
          in: query
          required: false
          schema:
            type: string
        - name: userRoles
          in: query
          description: A list of user roles to search
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserRoleAlpha'
          style: form
          explode: false
        - name: accountManagerAuth0UserIds
          in: query
          description: A list of account manager auth0 user ids
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: campaignOpsSpecialistAuth0UserIds
          in: query
          description: A list of campaign ops specialist auth0 user ids
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: salesRepAuth0UserIds
          in: query
          description: A list of sales rep auth0 user ids
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: offset
          in: query
          description: Offset for pagination
          required: false
          schema:
            type: number
        - name: limit
          in: query
          description: Limit for pagination. Pass -1 for all.
          required: false
          schema:
            type: number
      responses:
        '200':
          description: Successfully remove the user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniUserList'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0TeamId
          in: path
          description: The ID of the Team
          required: true
          schema:
            type: string
        - name: searchText
          in: query
          required: false
          schema:
            type: string
        - name: userRoles
          in: query
          description: A list of user roles to search
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserRoleAlpha'
          style: form
          explode: false
        - name: accountManagerAuth0UserIds
          in: query
          description: A list of account manager auth0 user ids
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: campaignOpsSpecialistAuth0UserIds
          in: query
          description: A list of campaign ops specialist auth0 user ids
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: salesRepAuth0UserIds
          in: query
          description: A list of sales rep auth0 user ids
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: offset
          in: query
          description: Offset for pagination
          required: false
          schema:
            type: number
        - name: limit
          in: query
          description: Limit for pagination. Pass -1 for all.
          required: false
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/teams/{auth0TeamId}/{auth0UserId}:
    delete:
      description: This will remove a user from a given team
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0TeamId
          in: path
          description: The ID of the Team
          required: true
          schema:
            type: string
        - name: auth0UserId
          in: path
          description: The Auth ID of the user to be removed from the Team
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully remove the user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniUserList'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0TeamId
          in: path
          required: true
          schema:
            type: string
        - name: auth0UserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/users:
    get:
      description: Search user regardless of team
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0UserId
          in: query
          description: Exact match of user's auth0UserId, or "self" for the current user
          required: false
          schema:
            type: string
        - name: email
          in: query
          description: Exact match of user's email address
          required: false
          schema:
            type: string
        - name: searchText
          in: query
          description: Text search on user name
          required: false
          schema:
            type: string
        - name: userRoles
          in: query
          description: A list of user roles to search. Probably should be an enum.
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserRoleAlpha'
          style: form
          explode: false
        - name: includes
          in: query
          description: A list of optional data to include
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserSearchRequestIncludes'
          style: form
          explode: false
        - name: orderBy
          in: query
          required: false
          schema:
            type: string
        - name: sortDirection
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/PaginationSortDirection'
        - name: offset
          in: query
          description: Offset for pagination
          required: false
          schema:
            type: number
        - name: limit
          in: query
          description: Limit for pagination. Pass -1 for all.
          required: false
          schema:
            type: number
      responses:
        '200':
          description: Details of the new user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniUserList'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    patch:
      description: Create a new user without a team
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdomniUserAndTeamUpsertRequest'
      responses:
        '200':
          description: Details of the new user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniUserAndTeam'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    post:
      description: Create a new user without a team
      tags:
        - Neon
        - Overseer
        - Unicorn
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdomniUserAndTeamUpsertRequest'
      responses:
        '200':
          description: Details of the new user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniUserAndTeam'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0UserId
          in: query
          description: Exact match of user's auth0UserId
          required: false
          schema:
            type: string
        - name: email
          in: query
          description: Exact match of user's email address
          required: false
          schema:
            type: string
        - name: searchText
          in: query
          description: Text search on user name
          required: false
          schema:
            type: string
        - name: userRole
          in: query
          description: A list of user roles to search. Probably should be an enum.
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserRoleAlpha'
          style: form
          explode: false
        - name: includes
          in: query
          description: A list of optional data to include
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserSearchRequestIncludes'
          style: form
          explode: false
        - name: orderBy
          in: query
          required: false
          schema:
            type: string
        - name: sortDirection
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/PaginationSortDirection'
        - name: offset
          in: query
          description: Offset for pagination
          required: false
          schema:
            type: number
        - name: limit
          in: query
          description: Limit for pagination. Pass -1 for all.
          required: false
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/users/client-credentials:
    get:
      description: Returns the list of clients for a given user
      tags:
        - Neon
        - Overseer
        - Unicorn
      parameters:
        - name: auth0UserId
          in: query
          description: The ID of the user to get details for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Details of the user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniUser'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    post:
      description: Create a new set of client credentials for the user
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OIDC: []
      parameters:
        - name: auth0UserId
          in: query
          description: The ID of the user to create the client credentials for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Details of the user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ClientCredentials'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0UserId
          in: query
          description: The ID of the user to create the client credentials for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/users/password/reset:
    post:
      description: >-
        Triggers a Password Reset email to the user if they exist. Created for
        DSP.
      tags:
        - Neon
        - Overseer
        - Unicorn
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestPasswordResetRequestPublic'
      responses:
        '200':
          description: Simple success or failure result
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SimpleResult'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: User Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/users/roles:
    get:
      description: Return a list of user roles.
      tags:
        - Neon
        - Overseer
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AdomniStringIdAndUserRole'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/users/self:
    get:
      description: Returns the details of the authenticated user
      tags:
        - Neon
        - Overseer
        - Unicorn
        - Shoutable
        - Spotlight
      security:
        - OAuth2: []
      parameters:
        - name: includes
          in: query
          description: A list of optional data to include
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserSearchRequestIncludes'
          style: form
          explode: false
      responses:
        '200':
          description: Details of the user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniUser'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: includes
          in: query
          description: A list of optional data to include
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserSearchRequestIncludes'
          style: form
          explode: false
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/users/verify/resend:
    post:
      description: Will resend an email verification from Auth0
      tags:
        - Neon
        - Overseer
        - Unicorn
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResendEmailVerificationEmailRequest'
      responses:
        '200':
          description: Simple success or failure result
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SimpleResult'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: User Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0UserId
          in: path
          description: The ID of the user to get details for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/users/{auth0UserId}:
    get:
      description: Returns the details of a user regardless of team assignment
      tags:
        - Neon
        - Overseer
        - Unicorn
        - Shoutable
        - Spotlight
      security:
        - OAuth2: []
      parameters:
        - name: auth0UserId
          in: path
          description: The ID of the user to get details for
          required: true
          schema:
            type: string
        - name: includes
          in: query
          description: A list of optional data to include
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserSearchRequestIncludes'
          style: form
          explode: false
      responses:
        '200':
          description: Details of the user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniUser'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    patch:
      description: Updates the details of a user regardless of team assignment
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0UserId
          in: path
          description: The ID of the user to get details for
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdomniUser'
      responses:
        '200':
          description: Details of the user
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniUser'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0UserId
          in: path
          description: The ID of the user to get details for
          required: true
          schema:
            type: string
        - name: includes
          in: query
          description: A list of optional data to include
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AdomniUserSearchRequestIncludes'
          style: form
          explode: false
      responses:
        '200':
          description: Standard CORS header response
  /auth-api/users/{auth0UserId}/password/reset:
    post:
      description: Triggers a Password Reset email to the user
      tags:
        - Neon
        - Overseer
        - Unicorn
      security:
        - OAuth2: []
      parameters:
        - name: auth0UserId
          in: path
          description: The ID of the user to get details for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Simple success or failure result
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SimpleResult'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: User Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: auth0UserId
          in: path
          description: The ID of the user to get details for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /authorize:
    get:
      description: |
        This is the "authorize" endpoint for use with OAuth2
      tags:
        - Neon
        - Authentication
      responses:
        '302':
          description: Redirects into the OAuth2 flow
        '400':
          description: Bad request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
  /background:
    post:
      tags:
        - Neon
        - Background
      security:
        - OAuth2: []
      parameters:
        - name: immediate
          in: query
          description: >-
            Will ensure the background process is triggered immediately. This is
            good for manually triggered processors.
          schema:
            type: boolean
        - name: startProcessor
          in: query
          description: >-
            Will enqueue the job and also start processing the queue. This is
            good for larger queues.
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Empty'
        description: Content to echo
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackgroundQueueResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: immediate
          in: query
          schema:
            type: boolean
        - name: startProcessor
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: Standard CORS header response
  /background/meta:
    get:
      tags:
        - Neon
        - Background
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackgroundMetaResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /background/status/{guid}:
    get:
      tags:
        - Neon
        - Background
      security:
        - OAuth2: []
      parameters:
        - name: guid
          in: path
          description: guid of the process to lookup
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackgroundProcessStatus'
        '403':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: No such process
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: guid
          in: path
          description: guid of the process to lookup
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /contact/request:
    post:
      description: >
        Submits a support request. Sends an email to proper people who can
        respond.
      tags:
        - Neon
        - Audience
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ContactRequest'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /content-reviews:
    get:
      tags:
        - Neon
        - Content
      description: Backwards compat until deprecation (2021-06-01)
      responses:
        '200':
          description: Standard CORS header response
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /content/{id}:
    get:
      tags:
        - Neon
        - Content
      description: Backwards compat until deprecation (2021-06-01)
      parameters:
        - name: id
          in: path
          description: ID of the content to request
          required: true
          schema:
            type: integer
      responses:
        '301':
          description: Success
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: ID of the content to request
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Standard CORS header response
  /core-based-statistical-area:
    get:
      tags:
        - Neon
      description: Get a list of available CBSA
      security:
        - OAuth2: []
      parameters:
        - name: search
          in: query
          description: A string passed to filter the CBSA search results
          schema:
            type: string
        - name: limit
          in: query
          description: >-
            A number to limit the search results by. Mainly will be used by
            front end to help performance.
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CoreBasedStatisticalArea'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: search
          in: query
          description: A string apssed to filter the CBSA search results
          schema:
            type: string
        - name: limit
          in: query
          description: >-
            A number to limit the search results by. Mainly will be used by
            front end to help performance.
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /core-based-statistical-area/{cid}:
    get:
      tags:
        - Neon
      description: Get a specific CBSA record.
      security:
        - OAuth2: []
      parameters:
        - name: cid
          in: path
          required: true
          description: >-
            A CBSA ID to pull a record from the core_based_statistical_areas
            table.
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CoreBasedStatisticalArea'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: cid
          in: path
          required: true
          description: >-
            A CBSA ID to pull a record from the core_based_statistical_areas
            table.
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /daemons:
    get:
      tags:
        - Neon
        - Daemon
      security:
        - OAuth2: []
      description: Fetch all daemon keys for the specified user
      parameters:
        - name: userId
          in: query
          description: Id of the user owning the process (defaults to self)
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DaemonProcessStateList'
        '401':
          description: Unauthorized
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /daemons/public/{publicToken}:
    get:
      tags:
        - Neon
        - Daemon
      description: >-
        Fetches the current status of a daemon (async) process using a public
        token.
      parameters:
        - name: publicToken
          in: path
          description: Public Token of the daemon process to query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DaemonProcessState'
        '401':
          description: Unauthorized
    options:
      tags:
        - CORS
      parameters:
        - name: publicToken
          in: path
          description: Public Token of the daemon process to query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /daemons/{key}:
    get:
      tags:
        - Neon
        - Daemon
      description: Fetches the current status of a daemon (async) process.
      parameters:
        - name: key
          in: path
          description: Key of the daemon process to query
          required: true
          schema:
            type: string
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DaemonProcessState'
        '401':
          description: Unauthorized
    options:
      tags:
        - CORS
      parameters:
        - name: key
          in: path
          description: Key of the daemon process to query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/device:
    post:
      tags:
        - Neon
        - Owner
        - Device
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceApiDeviceUpsertRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceApiDeviceUpsertResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/device-cluster/{deviceClusterId}/weather:
    get:
      description: Fetch a device cluster's cached weather
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: deviceClusterId
          in: path
          description: The desired device cluster's ID
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceClusterWeatherResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
  /device-api/device-clusters:
    post:
      description: Fetch device clusters
      tags:
        - Neon
      security:
        - OAuth2: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceClustersRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceClustersResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
  /device-api/device-tags:
    get:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: category
          in: query
          description: category of tag to retrieve
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceTagList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/device/{deviceId}:
    patch:
      tags:
        - Neon
        - Owner
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: deviceId
          in: path
          required: true
          schema:
            type: number
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceApiDeviceUpsertRequest'
      responses:
        '200':
          description: Successs
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceApiDeviceUpsertResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: deviceId
          in: path
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/device-external-keys:
    post:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceExternalKeyLookupRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceExternalKeyLookupResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/filler-eligible-devices:
    get:
      description: Returns a list of devices that support filler content
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: page
          in: query
          description: The 1-indexed page number of results
          required: false
          schema:
            type: integer
            minimum: 1
        - name: pageSize
          in: query
          description: The number of results per page
          required: false
          schema:
            type: integer
            minimum: 1
        - name: sortBy
          in: query
          description: The column to sort results by
          required: false
          schema:
            type: string
            enum:
              - id
              - ownerLabel
              - name
            x-enum-varnames:
              - Id
              - OwnerLabel
              - Name
        - name: sortDirection
          in: query
          description: The direction to sort by
          required: false
          schema:
            $ref: '#/components/schemas/PaginationSortDirection'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FillerEligibleDeviceList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/imports:
    get:
      description: Returns a list of device import files
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: searchText
          in: query
          description: Search text to filter device import list by
          required: false
          schema:
            type: string
        - name: includes
          in: query
          description: Provides the ability to include ancillary data
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/DeviceImportListRequestIncludes'
          style: form
          explode: false
        - name: offset
          in: query
          description: Offset for pagination
          required: false
          schema:
            type: integer
            minimum: 1
        - name: limit
          in: query
          description: The number of results per page
          required: false
          schema:
            type: integer
            minimum: 1
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceImportList'
    post:
      tags:
        - Neon
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceImportQueueRequest'
        description: Request to create a device pairing key
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceImport'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/imports/{deviceImportId}:
    post:
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: deviceImportId
          in: path
          description: The Device Import to requeue
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SimpleResult'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Device Import Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: deviceImportId
          in: path
          description: The Device Import to requeue
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/last-contact:
    post:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceLatestContactRecordRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceLatestContactRecordResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/owner-ids:
    get:
      tags:
        - Neon
        - Owner
        - Device
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/GenericStringList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/pricing/supply/{id}:
    get:
      tags:
        - Neon
        - Owner
        - Device
      description: Fetch the pricing and supply for a given device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          description: ID of the device for which to fetch pricing and supply
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DevicePricingAndSupplySummary'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: ID of the device for which to fetch pricing
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/search:
    post:
      tags:
        - Neon
        - Owner
        - Device
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceDetailsBySavedSearchRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceDetailViewList'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/sizes/widths-heights:
    get:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: nextTokenString
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceScreenSizesResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Success
  /device-api/devices/sizes/widths-heights/all:
    get:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: nextTokenString
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceScreenSizesResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Success
  /device-api/devices/supply-prediction:
    post:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceApiSupplyPredictionRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceApiSupplyPredictionResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/{id}/errors:
    get:
      description: |
        List of recent errors for the provided device
      tags:
        - Neon
        - Device
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: number
      security:
        - OAuth2: []
      responses:
        '200':
          description: Successfully read the device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceErrorRecordList'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized to access specific device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Device not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/devices/{id}/omni:
    get:
      description: |
        Device omni view for the device.
      tags:
        - Neon
        - Device
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
        - name: excludes
          in: query
          description: Comma-delimited list of extra fields to include in the response
          required: false
          schema:
            $ref: '#/components/schemas/DeviceOmniViewExcludes'
      security:
        - OAuth2: []
      responses:
        '200':
          description: Successfully read the device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceOmniView'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized to access specific device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Device not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/flex-search:
    post:
      tags:
        - Neon
        - Owner
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: label
          in: query
          required: false
          description: >-
            This is purely for the front end organization of requests. Not meant
            to be used internally by Neon.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceApiFlexSearchRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceApiFlexSearchResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: label
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/flex-search/device-ids:
    post:
      tags:
        - Neon
        - Owner
        - Device
      parameters:
        - name: label
          in: query
          required: false
          description: >-
            This is purely for the front end organization of requests. Not meant
            to be used internally by Neon.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceApiFlexSearchRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceApiFlexSearchResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: label
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/flex-search/index/device-id-range:
    post:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceApiFlexPumpSearchRequest'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SimpleResult'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/flex-search/mvt:
    get:
      tags:
        - Neon
      parameters:
        - name: x
          in: query
          required: true
          schema:
            type: number
        - name: 'y'
          in: query
          required: true
          schema:
            type: number
        - name: z
          in: query
          required: true
          schema:
            type: number
        - name: appliedAdvertiserAuth0TeamId
          in: query
          required: true
          schema:
            type: string
        - name: savedSearchId
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: x
          in: query
          required: true
          schema:
            type: number
        - name: 'y'
          in: query
          required: true
          schema:
            type: number
        - name: z
          in: query
          required: true
          schema:
            type: number
        - name: appliedAdvertiserAuth0TeamId
          in: query
          required: true
          schema:
            type: string
        - name: savedSearchId
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/flex-search/mvt-cache:
    get:
      tags:
        - Neon
      parameters:
        - name: x
          in: query
          required: true
          schema:
            type: number
        - name: 'y'
          in: query
          required: true
          schema:
            type: number
        - name: z
          in: query
          required: true
          schema:
            type: number
        - name: cacheKey
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: x
          in: query
          required: true
          schema:
            type: number
        - name: 'y'
          in: query
          required: true
          schema:
            type: number
        - name: z
          in: query
          required: true
          schema:
            type: number
        - name: cacheKey
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/flex-search/{deviceId}/public:
    get:
      tags:
        - Neon
        - Owner
        - Device
      parameters:
        - name: deviceId
          in: path
          required: true
          schema:
            type: number
        - name: contextSearchId
          in: query
          required: false
          description: >-
            If set, the device will be searched in the context of the provided
            search id (combined with user id)
          schema:
            type: string
        - name: contextUserId
          in: query
          required: false
          description: >-
            If set, the device will be searched in the context of the provided
            user id (combined with search id)
          schema:
            type: string
        - name: contextAuth0TeamId
          in: query
          required: false
          description: >-
            If set, the device will be searched in the context of the provided
            team id (combined with search id)
          schema:
            type: string
        - name: label
          in: query
          required: false
          description: >-
            This is purely for the front end organization of requests. Not meant
            to be used internally by Neon.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceApiFlexDevice'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: deviceId
          in: path
          required: true
          schema:
            type: number
        - name: contextSearchId
          in: query
          required: false
          schema:
            type: string
        - name: contextUserId
          in: query
          required: false
          schema:
            type: string
        - name: contextAuth0TeamId
          in: query
          required: false
          schema:
            type: string
        - name: label
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/locations/cities:
    get:
      description: |
        Fetches cities
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Pipe delimited list of cities to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter cities by
          schema:
            type: string
        - name: nextTokenString
          in: query
          description: A pagination token
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the cities
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationCitiesResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/locations/counties:
    get:
      description: |
        Fetches all county locations
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Comma delimited list of location IDs to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter counties names by
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the counties
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationCountiesResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/locations/countries:
    get:
      description: |
        Fetches all country locations
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Comma delimited list of location IDs to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter location country names by
          schema:
            type: string
        - name: minimumDevices
          in: query
          description: >-
            A non-negative number to specify the lowest number of devices for
            resulting countries
          schema:
            type: number
      responses:
        '200':
          description: Successfully read the location countries
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationCountriesResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/locations/dmas:
    get:
      description: |
        Fetches DMAs
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Comma delimited list of DMAs to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter DMAs by
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the DMAs
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationDmasResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/locations/pois/brands:
    get:
      tags:
        - Neon
        - Background
      security:
        - OAuth2: []
      parameters:
        - name: search
          in: query
          description: Search text. This can be either brand id or brand name
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: Number of maximum brands to return.
          required: false
          schema:
            type: number
            default: 50
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceApiLocationPoiBrandList'
        '403':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: search
          in: query
          description: Search text. This can be either brand id or brand name
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: Number of maximum brands to return.
          required: false
          schema:
            type: number
            default: 50
      responses:
        '200':
          description: Standard CORS header response
  /device-api/locations/pois/categories:
    get:
      tags:
        - Neon
        - Background
      security:
        - OAuth2: []
      parameters:
        - name: search
          in: query
          description: Search text. This can be either NAICS code or category name
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: Number of maximum categories to return.
          required: false
          schema:
            type: number
            default: 50
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceApiLocationPoiCategoryList'
        '403':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: search
          in: query
          description: Search text. This can be either NACIS code or category name
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: Number of maximum categories to return.
          required: false
          schema:
            type: number
            default: 50
      responses:
        '200':
          description: Standard CORS header response
  /device-api/locations/pois/search:
    get:
      tags:
        - Neon
        - Background
      security:
        - OAuth2: []
      parameters:
        - name: states
          in: query
          description: list of state abbreviations, separated by comma
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: cbsa
          in: query
          description: list of cbsa codes, separated by comma
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: false
        - name: categoryKeys
          in: query
          description: >-
            list of location poi category codes (for the specific provider),
            separated by comma
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: brandKeys
          in: query
          description: >-
            list of location poi category brand keys (for the specific
            provider), separated by comma
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: search
          in: query
          description: search string
          required: false
          schema:
            type: string
        - name: offset
          in: query
          description: This is used to determine the page number of pagination
          required: false
          schema:
            type: number
        - name: limit
          in: query
          description: This determines the page size of pagination
          required: false
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceApiLocationPoiList'
        '403':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: No such POI
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: states
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: cbsa
          in: query
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: false
        - name: naics
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: brands
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: search
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /device-api/locations/postal-codes:
    get:
      description: |
        Fetches zip codes
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Comma delimited list of zips to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter zips by
          schema:
            type: string
        - name: nextTokenString
          in: query
          description: A pagination token
          schema:
            type: string
        - name: countryId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the zips
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationPostalCodesResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/locations/states:
    get:
      description: |
        Fetches all state locations
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Comma delimited list of location IDs to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter location state names by
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the location states
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationStatesResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/player-software:
    get:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: availabilityStates
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/DevicePlayerSoftwareAvailabilityState'
          style: form
          explode: false
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DevicePlayerSoftwareList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/venue-types:
    get:
      description: |
        Fetches all venue types
      tags:
        - Neon
        - VenueType
      parameters:
        - name: showDisabled
          in: query
          required: false
          schema:
            type: boolean
        - name: includeAlternate
          in: query
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successfully read the venue types
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceVenueTypeList'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /device-api/venue-types/{id}:
    get:
      description: |
        Fetches a venue type by id
      tags:
        - Neon
        - Device
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Successfully read the venue type
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceVenueType'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Venue type not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    patch:
      description: |
        Updates an existing venue type
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: number
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceVenueTypeUpsertRequest'
        description: Request to update a venue type
        required: true
      responses:
        '200':
          description: Venue type successfully updated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceVenueType'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Venue type not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    delete:
      description: |
        Deletes an existing venue type
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: number
      responses:
        '204':
          description: Venue type successfully deleted
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Venue type not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /devices:
    get:
      description: |
        Allows a list of device to be viewed by their owner
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: nextToken
          in: query
          description: >-
            The pagination token. This overrides all other pagination
            parameters.
          schema:
            type: string
        - name: hideNetworkDevices
          in: query
          description: Determines whether to hide top-level networks or not.
          schema:
            type: boolean
        - name: page
          in: query
          description: >-
            Represents the current page for pagination purposes. Backwards
            compatibility for edge endpoints
          schema:
            type: number
        - name: pageSize
          in: query
          description: >-
            Represents the page size for pagination purposes. Backwards
            compatibility for edge endpoints
          schema:
            type: number
        - name: continuationToken
          in: query
          description: >-
            Holds a base64 token representing pagination. Backwards
            compatibility for edge endpoints
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the list of devices
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EdgeDeviceListResponse'
        '400':
          description: No devices exist for this user, for this page
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized to access
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: No devices exist for this user, for this page
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    post:
      description: |
        Creates a new device under this owner account
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EdgeDeviceUpsertRequest'
        description: Request to create device
        required: true
      responses:
        '201':
          description: Successfully created the device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EdgeDevice'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /devices/integration-key/{key}:
    get:
      description: >
        Allows a device to be viewed by integration key. Must be an owner or
        global user.
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: key
          in: path
          required: true
          description: The integration key to look up
          schema:
            type: string
        - name: ownerId
          in: query
          required: false
          description: >-
            The owner of the device to view. Required if being called by a
            global user.
          schema:
            type: number
      responses:
        '200':
          description: Successfully read the device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EdgeDevice'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized to access specific device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Device not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: key
          in: path
          required: true
          description: The integration key to look up
          schema:
            type: string
        - name: ownerId
          in: query
          required: false
          description: >-
            The owner of the device to view. Required if being called by a
            global user.
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /devices/pricing/real-time/{id}:
    get:
      tags:
        - Neon
        - Owner
        - Device
      description: Fetch the pricing for a given device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          description: ID of the device for which to fetch pricing
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DaysDeviceOpenRtbBidHistory'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: ID of the device for which to fetch pricing
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /devices/pricing/supply/{id}:
    get:
      tags:
        - Neon
        - Owner
        - Device
      description: Fetch the pricing and supply for a given device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          description: ID of the device for which to fetch pricing and supply
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DevicePricingAndSupplySummary'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: ID of the device for which to fetch pricing
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /devices/sizes/widths-heights:
    get:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: nextTokenString
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceScreenSizesResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Success
  /devices/sizes/widths-heights/all:
    get:
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: nextTokenString
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceScreenSizesResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Success
  /devices/{id}:
    get:
      description: |
        Allows a device to be viewed by its owner
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EdgeDevice'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized to access specific device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Device not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    patch:
      description: |
        Allows an existing device to be updated by its owner
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EdgeDeviceUpsertRequest'
        description: Request to update a device
        required: true
      responses:
        '200':
          description: Device successfully updated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EdgeDevice'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized to access specific device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Device not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    delete:
      description: |
        Allows an existing device to be deleted by its owner
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '204':
          description: Device successfully deleted
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /devices/{id}/make-live:
    post:
      description: |
        TBD
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '201':
          description: Success
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /devices/{id}/public:
    get:
      description: >
        Allows a device to be viewed by its id (primarily for pin info on the
        map)
      tags:
        - Neon
        - Spotlight
        - Device
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
        - name: contextSearchId
          in: query
          required: false
          description: >-
            If set, the device will be searched in the context of the provided
            search id (combined with user id)
          schema:
            type: string
        - name: contextUserId
          in: query
          required: false
          description: >-
            If set, the device will be searched in the context of the provided
            user id (combined with search id)
          schema:
            type: string
        - name: contextAuth0TeamId
          in: query
          required: false
          description: >-
            If set, the device will be searched in the context of the provided
            team id (combined with search id)
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EdgeDevice'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized to access specific device
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Device not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /execution-api/aggregated-bid-data:
    post:
      description: |
        Fetches aggregated bid data
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AggregatedBidDataRequest'
        description: Request to pull aggregated play data
        required: true
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AggregatedBidDataResponse'
  /execution-api/aggregated-play-data:
    post:
      description: |
        Fetches APD data
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AggregatedPlayDataRequest'
        description: Request to pull aggregated play data
        required: true
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AggregatedPlayDataResponse'
  /execution-api/aggregated-play-data/estimated-non-programmatic-direct-buy-plays:
    post:
      description: >
        Saves estimated non-programmatic direct buy plays for nonprog
        campaigns.  Errors for other types of data
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/AggregatedPlayDataEstimatedNonProgrammaticDirectBuyPlaysCreationRequest
        required: true
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SimpleResult'
    delete:
      description: >-
        deletes estimated non-programmatic direct buy plays for a given
        campaign, useful for regenerating
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/AggregatedPlayDataEstimatedNonProgrammaticDirectBuyPlaysDeletionRequest
        required: true
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SimpleResult'
  /execution-api/campaign-recent-plays:
    get:
      description: |
        Get campaign recent plays
      tags:
        - Neon
      parameters:
        - name: campaignId
          in: query
          description: The Id of the campaign for the recent plays
          required: true
          schema:
            type: number
        - name: limit
          in: query
          description: number of recent plays return
          required: false
          schema:
            type: number
            default: 10
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlayRecordSearchResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: campaignId
          in: query
          description: The Id of the campaign for the recent plays
          required: true
          schema:
            type: number
        - name: limit
          in: query
          description: number of recent plays return
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /execution-api/device-queue-tags:
    post:
      description: |
        Fetches device queue tags
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecutionApiDeviceQueueTagSearchRequest'
        description: Request to pull device queue tags
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ExecutionApiDeviceQueueTagSearchResponse'
  /execution-api/device-queue-tags/{deviceId}/{purchaseType}:
    get:
      description: |
        Fetches device queue tags
      tags:
        - Neon
        - Global
      parameters:
        - name: deviceId
          in: path
          required: true
          schema:
            type: number
        - name: purchaseType
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/PurchaseType'
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecutionApiDeviceQueueTagSearchRequest'
        description: Request to pull device queue tags
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ExecutionApiDeviceQueueTagSearchResponse'
  /execution-api/open-rtb-transaction-records/{deviceId}:
    get:
      description: |
        Fetches Open RTB requests for a given device
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      parameters:
        - name: deviceId
          in: path
          required: true
          description: The Device ID requests are being fetched for
          schema:
            type: number
        - name: limit
          in: query
          description: The number of requests being requested
          schema:
            type: number
        - name: oldestFirst
          in: query
          description: True for the oldest X requests, False for the most recent X requests
          schema:
            type: boolean
        - name: nextToken
          in: query
          description: If supplied, continue on this cursor
          required: false
          schema:
            type: string
        - name: startInclusiveEpochMS
          in: query
          required: false
          description: Limit results to records received at or after this timestamp
          schema:
            type: number
        - name: endExclusiveEpochMS
          in: query
          required: false
          description: Limit results to records received before this timestamp
          schema:
            type: number
        - name: bidAttemptsOnly
          in: query
          description: >-
            If true, filter to return only requests for which we did bid, or
            intended to bid
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: >-
                  #/components/schemas/OpenRtbCompositeTransactionRecordSearchResponse
    options:
      tags:
        - CORS
      parameters:
        - name: deviceId
          in: path
          required: true
          description: The Device ID requests are being fetched for
          schema:
            type: number
        - name: limit
          in: query
          description: The number of requests being requested
          schema:
            type: number
        - name: oldestFirst
          in: query
          description: True for the oldest X requests, False for the most recent X requests
          schema:
            type: boolean
        - name: nextToken
          in: query
          description: If supplied, continue on this cursor
          required: false
          schema:
            type: string
        - name: startInclusiveEpochMS
          in: query
          required: false
          description: Limit results to records received at or after this timestamp
          schema:
            type: number
        - name: endExclusiveEpochMS
          in: query
          required: false
          description: Limit results to records received before this timestamp
          schema:
            type: number
        - name: bidAttemptsOnly
          in: query
          description: >-
            If true, filter to return only requests for which we did bid, or
            intended to bid
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Standard CORS header response
  /execution-api/play-records/delete:
    post:
      description: |
        Removes play records
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecutionApiPlayRecordDeleteRequest'
        description: Request to insert play data
        required: true
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SimpleResult'
  /execution-api/play-records/insert:
    post:
      description: |
        Creates play records
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecutionApiPlayRecordInsertRequest'
        description: Request to insert play data
        required: true
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PlayRecordSearchResponse'
  /execution-api/play-records/search:
    post:
      description: |
        Searches play records
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlayRecordSearchRequest'
        description: Request to pull aggregated play data
        required: true
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PlayRecordSearchResponse'
  /execution-api/play-requests/device-preview/{deviceId}:
    get:
      description: |
        Fetches upcoming play requests for a given device
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      parameters:
        - name: deviceId
          in: path
          required: true
          description: TBD
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/QueuePlayerResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: deviceId
          in: path
          required: true
          description: TBD
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /execution-api/play-requests/purchase/{purchaseId}:
    get:
      description: |
        Fetches queue player entries by purchase id
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      parameters:
        - name: purchaseId
          in: path
          required: true
          description: TBD
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: Limits the number of entries returned
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/QueuePlayerResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: purchaseId
          in: path
          required: true
          description: TBD
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: Limits the number of results returned
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /execution-api/play-requests/purchase/{purchaseId}/keys:
    get:
      description: |
        Fetches queue player entry keys by purchase id
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      parameters:
        - name: purchaseId
          in: path
          required: true
          description: TBD
          schema:
            type: string
        - name: pageSize
          in: query
          required: false
          description: Sets the maximum number of items to include per-response
          schema:
            type: number
        - name: startEpochMS
          in: query
          required: false
          description: >-
            Limits the return items to ones scheduled to play on or after the
            provided timestamp
          schema:
            type: number
        - name: endEpochMS
          in: query
          required: false
          description: >-
            Limits the queue player entries to ones scheduled to play starting
            before the provided timestamp
          schema:
            type: number
        - name: nextToken
          in: query
          required: false
          description: >-
            Include this parameter returned in a previous response to fetch the
            next page of items
          schema:
            type: string
          allowEmptyValue: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/QueuePlayerKeysResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: purchaseId
          in: path
          required: true
          description: TBD
          schema:
            type: string
        - name: pageSize
          in: query
          required: false
          description: Sets the maximum number of items to include per-response
          schema:
            type: number
        - name: startEpochMS
          in: query
          required: false
          description: >-
            Limits the return items to ones scheduled to play on or after the
            provided timestamp
          schema:
            type: number
        - name: endEpochMS
          in: query
          required: false
          description: >-
            Limits the queue player entries to ones scheduled to play starting
            before the provided timestamp
          schema:
            type: number
        - name: nextToken
          in: query
          required: false
          description: >-
            Include this parameter returned in a previous response to fetch the
            next page of items
          schema:
            type: string
          allowEmptyValue: true
      responses:
        '200':
          description: Standard CORS header response
  /execution-api/play-requests/purge:
    post:
      description: |
        Purges play requests
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueuePlayerPurgeRequest'
        description: Request to purge queue player entries
        required: true
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/QueuePlayerPurgeResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /execution-api/play-requests/{tagId}:
    get:
      description: |
        Fetches current play requests
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      parameters:
        - name: tagId
          in: path
          required: true
          description: TBD
          schema:
            type: string
        - name: includeLockedRequests
          in: query
          required: false
          description: If true, currently locked requests are included
          schema:
            type: boolean
            default: false
        - name: includeInactiveRequests
          in: query
          required: false
          description: >-
            If true, also include play requests that are not yet eligible to be
            played
          schema:
            type: boolean
            default: false
        - name: startEpochMS
          in: query
          required: false
          description: If including inactive requests, specifies the start timestamp
          schema:
            type: number
        - name: endEpochMS
          in: query
          required: false
          description: If including inactive requests, specifies the end timestamp
          schema:
            type: number
        - name: deviceId
          in: query
          required: false
          description: If set, filters any networks to the specific device id
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/QueuePlayerResponse'
    post:
      description: |
        Adds play requests to a tag
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      parameters:
        - name: tagId
          in: path
          required: true
          description: TBD
          schema:
            type: string
        - name: serverType
          in: query
          required: false
          description: One of prod / dev
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueuePlayerRequest'
        description: Request to add queue player entries
        required: true
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/QueuePlayerResponse'
    delete:
      description: |
        Delete play request records
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      parameters:
        - name: tagId
          in: path
          required: true
          description: TBD
          schema:
            type: string
        - name: startEpochMS
          in: query
          required: false
          description: TBD
          schema:
            type: number
        - name: endEpochMS
          in: query
          required: false
          description: TBD
          schema:
            type: number
      responses:
        '204':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/QueuePlayerResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: tagId
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /execution-api/vast-request-records:
    post:
      description: |
        Fetches vast request data
      tags:
        - Neon
        - Global
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceVastRequestRecordSearchRequest'
        description: Request to pull aggregated play data
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceVastRequestRecordList'
  /integration/admobilize/webhook:
    get:
      tags:
        - Neon
        - Admobilize
        - Integration
        - Webhook
      responses:
        '200':
          description: Success
  /integration/auth0/webhook:
    post:
      tags:
        - Neon
        - Auth0
        - Integration
        - Webhook
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SimpleResult'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /integration/broadsign/reach/bid-request:
    post:
      tags:
        - Neon
        - Integration
        - Broadsign
        - Reach
        - Public
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenRtb25BidResponse'
        '204':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Empty'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenRtb25BidRequest'
        description: The broadsign reach request for bid
        required: true
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /integration/broadsign/reach/notification/{notificationType}:
    get:
      tags:
        - Neon
        - Integration
        - Broadsign
        - Reach
        - Public
      parameters:
        - name: notificationType
          in: path
          description: win or loss
          required: true
          schema:
            type: string
            enum:
              - Win
              - Loss
      responses:
        '200':
          description: Success
    post:
      tags:
        - Neon
        - Broadsign
        - Reach
        - Public
      parameters:
        - name: notificationType
          in: path
          description: win or loss
          required: true
          schema:
            type: string
            enum:
              - Win
              - Loss
      responses:
        '200':
          description: Success
    options:
      tags:
        - CORS
      parameters:
        - name: notificationType
          in: path
          description: win or loss
          required: true
          schema:
            type: string
            enum:
              - Win
              - Loss
      responses:
        '200':
          description: Standard CORS header response
  /integration/mira/audience-files:
    get:
      tags:
        - Neon
        - Mira
        - Integration
      description: List audience files available from mira
      security:
        - OAuth2: []
      parameters:
        - name: filter
          in: query
          description: If included, only filenames matching the filter are returned
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FileDownloadList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /integration/vast/bad-requests:
    get:
      description: >
        For admin and debugging purposes, returns a list of the most recent VAST
        requests that did not find a match to any devices
      tags:
        - Neon
        - Integration
        - VAST
      security:
        - OAuth2: []
      parameters:
        - name: startEpochMS
          in: query
          required: false
          description: Epoch MS to start the search (default to 1 hour ago)
          schema:
            type: number
        - name: endEpochMS
          in: query
          required: false
          description: Epoch MS to start the search (default to now)
          schema:
            type: number
        - name: serverType
          in: query
          required: false
          description: Which serverType to fetch (default prod)
          schema:
            $ref: '#/components/schemas/ServerType'
        - name: keyFilter
          in: query
          required: false
          description: If set, only values having this key will be returned
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceVastRequestRecordList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Success
  /integration/vast/error-codes:
    get:
      description: |
        List all vast error codes defined by the IAB
      tags:
        - Neon
        - Integration
        - VAST
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/VastErrorDescriptorList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Success
  /integration/vast/error-codes/{code}:
    get:
      description: |
        List a specific vast error code
      tags:
        - Neon
        - Integration
        - VAST
      parameters:
        - name: code
          in: path
          required: true
          description: The code to look up
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/VastErrorDescriptor'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: code
          in: path
          required: true
          description: The code to look up
          schema:
            type: number
      responses:
        '200':
          description: Success
  /integration/vast/prefab/{templateId}/{fillerToken}:
    get:
      description: >
        This endpoint is used for when a VAST response is shared with a OpenRTB
        system to allow regeneration of a given VAST call over multiple requests
      tags:
        - Neon
        - Integration
        - VAST
        - Public
      parameters:
        - name: templateId
          in: path
          description: Id of the VAST template to use
          required: true
          schema:
            type: string
        - name: fillerToken
          in: path
          description: >-
            Tokenized version of the filler content to use in the VAST template
            render
          required: true
          schema:
            type: string
        - name: cached
          in: query
          description: >-
            If set to true, Adomni will use the token as a key to pull from
            cache.
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Success
    options:
      tags:
        - CORS
      parameters:
        - name: templateId
          in: path
          description: Id of the VAST template to use
          required: true
          schema:
            type: string
        - name: fillerToken
          in: path
          description: >-
            Tokenized version of the filler content to use in the VAST template
            render
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /integration/vast/{vastSpec}/event:
    get:
      description: >
        This is the experimental implementation of the IAB VAST interface
        version 3.0.  Given a key and event, record the event.
      tags:
        - Neon
        - Integration
        - VAST
        - Public
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: e
          in: query
          description: The event to be recorded
          required: true
          schema:
            type: string
        - name: p
          in: query
          description: Payload to record (encoded)
          required: true
          schema:
            type: string
        - name: t
          in: query
          description: Timestamp (in epoch MS) to use instead of received time
          required: false
          schema:
            type: number
        - name: lat
          in: query
          description: >-
            If provided, the latitude to use for the recorded play (lat at end
            of the play)
          required: false
          schema:
            type: number
        - name: lng
          in: query
          description: >-
            If provided, the longitude to use for the recorded play (lng at end
            of the play)
          required: false
          schema:
            type: number
        - name: startLat
          in: query
          description: If provided, the latitude when then play started
          required: false
          schema:
            type: number
        - name: startLng
          in: query
          description: If provided, the longitude when then play started
          required: false
          schema:
            type: number
        - name: async
          in: query
          description: >-
            If set to true, the play is immediately stored and applied
            asynchronously (for fast throughput)
          required: false
          schema:
            type: boolean
        - name: ign
          in: query
          description: >-
            If set to true, this request is auto-ignored and dropped (used when
            duplicates are flagged client side)
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Success
    post:
      description: >
        This is the experimental implementation of the IAB VAST interface
        version 3.0.  Given a key and event, record the event.
      tags:
        - Neon
        - Integration
        - VAST
        - Public
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: e
          in: query
          description: The event to be recorded
          required: true
          schema:
            type: string
        - name: p
          in: query
          description: Payload to record (encoded)
          required: true
          schema:
            type: string
        - name: t
          in: query
          description: Timestamp (in epoch MS) to use instead of received time
          required: false
          schema:
            type: number
        - name: lat
          in: query
          description: If provided, the latitude to use for the recorded play
          required: false
          schema:
            type: number
        - name: lng
          in: query
          description: If provided, the longitude to use for the recorded play
          required: false
          schema:
            type: number
        - name: startLat
          in: query
          description: If provided, the latitude when then play started
          required: false
          schema:
            type: number
        - name: startLng
          in: query
          description: If provided, the longitude when then play started
          required: false
          schema:
            type: number
        - name: async
          in: query
          description: >-
            If set to true, the play is immediately stored and applied
            asynchronously (for fast throughput)
          required: false
          schema:
            type: boolean
        - name: ign
          in: query
          description: >-
            If set to true, this request is auto-ignored and dropped (used when
            duplicates are flagged client side)
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Success
    options:
      tags:
        - CORS
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: e
          in: query
          description: The event to be recorded
          required: true
          schema:
            type: string
        - name: p
          in: query
          description: Payload to record (encoded)
          required: true
          schema:
            type: string
        - name: t
          in: query
          description: Timestamp (in epoch MS) to use instead of received time
          required: false
          schema:
            type: number
        - name: lat
          in: query
          description: If provided, the latitude to use for the recorded play
          required: false
          schema:
            type: number
        - name: lng
          in: query
          description: If provided, the longitude to use for the recorded play
          required: false
          schema:
            type: number
        - name: startLat
          in: query
          description: If provided, the latitude when then play started
          required: false
          schema:
            type: number
        - name: startLng
          in: query
          description: If provided, the longitude when then play started
          required: false
          schema:
            type: number
        - name: ign
          in: query
          description: >-
            If set to true, this request is auto-ignored and dropped (used when
            duplicates are flagged client side)
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Standard CORS header response
  /integration/vast/{vastSpec}/{keyType}/{key}:
    get:
      description: >
        This is the implementation of the IAB VAST interface versions 2.0 amd
        3.0.  Given a key, fetch an ad to be played
      tags:
        - Neon
        - Integration
        - VAST
        - Public
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: keyType
          in: path
          description: Type of key provided in the url.  Currently either device or owner
          required: true
          schema:
            type: string
            enum:
              - device
              - owner
            x-enum-varnames:
              - Device
              - Owner
        - name: key
          in: path
          description: Key of the device to for which to request a VAST play
          required: true
          schema:
            type: string
        - name: notifyOnly
          in: query
          description: >-
            If set to true, Adomni will register the device as alive for
            monitoring but always return a skip
          required: false
          schema:
            type: boolean
        - name: variant
          in: query
          description: If set, use this variant of the generation template
          required: false
          schema:
            type: string
            enum:
              - cdata
              - default
            x-enum-varnames:
              - Cdata
              - Default
            default: default
        - name: integrationKeys
          in: query
          description: >-
            A comma-separated list of customer-specific device ids, used if the
            key type is owner
          required: false
          schema:
            type: string
        - name: integrationKeysParamName
          in: query
          description: >-
            Name of the query parameter that will contain the integration key
            (used for integrations where this cannot be changed to
            'integrationKeys')
          required: false
          schema:
            type: string
        - name: externalPlayerIds
          in: query
          description: Deprecated 2019-05-08, use integrationKeys
          required: false
          schema:
            type: string
        - name: integrationNetworkParentKey
          in: query
          description: >-
            A customer-specific network key, used if the keytype is owner (only
            used during dynamic creation of devices)
          required: false
          schema:
            type: string
        - name: externalNetworkParentId
          in: query
          description: Deprecated 2019-05-08, use externalNetworkParentKey
          required: false
          schema:
            type: string
        - name: externalPlayerIdsParamName
          in: query
          description: Deprecated 2019-05-08, use integrationKeysParamName
          required: false
          schema:
            type: string
        - name: integrationNetworkParentKeyParamName
          in: query
          description: >-
            Name of the query parameter that will contain the external network
            key (used for integrations where this cannot be changed to
            'integrationNetworkParentKey')
          required: false
          schema:
            type: string
        - name: externalNetworkParentIdParamName
          in: query
          description: Deprecated 2019-05-08, use externalNetworkParentKeyParamName
          required: false
          schema:
            type: string
        - name: unitIdCSV
          in: query
          description: Deprecated 2019-03-08, use integrationKeys
          required: false
          schema:
            type: string
        - name: lat
          in: query
          description: >-
            If set, the current latitude of the player (decimal format, not HMS)
            for geofencing
          required: false
          schema:
            type: number
        - name: lng
          in: query
          description: >-
            If set, the current longitude of the player (decimal format, not
            HMS) for geofencing
          required: false
          schema:
            type: number
        - name: stripFractionalDuration
          in: query
          description: If set, any duration is rounded down to the whole second value
          required: false
          schema:
            type: boolean
            default: false
        - name: includeSkipAttribute
          in: query
          description: If set, any an attribute will be added marking skips
          required: false
          schema:
            type: boolean
            default: false
        - name: filters
          in: query
          description: >
            A comma-delimited list of strings that, if set, will cause the ad to
            not include content of the specified category or categories (current
            options are noAlcohol and noCannabis)
          required: false
          schema:
            type: string
            pattern: ^(?:noAlcohol|noCannabis)(?:,(?:noAlcohol|noCannabis))*$
      responses:
        '200':
          description: Success
    post:
      description: >
        This is the experimental implementation of the IAB VAST interface
        version 3.0.  Given a key, fetch an ad to be played
      tags:
        - Neon
        - Integration
        - VAST
        - Public
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: keyType
          in: path
          description: Type of key provided in the url.  Currently either device or owner
          required: true
          schema:
            type: string
            enum:
              - device
              - owner
            x-enum-varnames:
              - Device
              - Owner
        - name: key
          in: path
          description: Key of the device to for which to request a VAST play
          required: true
          schema:
            type: string
        - name: notifyOnly
          in: query
          description: >-
            If set to true, Adomni will register the device as alive for
            monitoring but always return a skip
          required: false
          schema:
            type: boolean
        - name: variant
          in: query
          description: If set, use this variant of the generation template
          required: false
          schema:
            type: string
            enum:
              - cdata
              - default
            x-enum-varnames:
              - Cdata
              - Default
            default: default
        - name: externalPlayerIds
          in: query
          description: >-
            A comma-separated list of customer-specific device ids, used if the
            key type is owner
          required: false
          schema:
            type: string
        - name: externalNetworkParentId
          in: query
          description: >-
            A customer-specific network id, used if the keytype is owner (only
            used during dynamic creation of devices)
          required: false
          schema:
            type: string
        - name: externalPlayerIdsParamName
          in: query
          description: >-
            Name of the query parameter that will contain the external player id
            (used for integrations where this cannot be changed to
            'externalPlayerIds')
          required: false
          schema:
            type: string
        - name: externalNetworkParentIdParamName
          in: query
          description: >-
            Name of the query parameter that will contain the external player id
            (used for integrations where this cannot be changed to
            'externalNetworkParentId')
          required: false
          schema:
            type: string
        - name: unitIdCSV
          in: query
          description: Deprecated - here for backwards compatibility
          required: false
          schema:
            type: string
        - name: lat
          in: query
          description: >-
            If set, the current latitude of the player (decimal format, not HMS)
            for geofencing
          required: false
          schema:
            type: number
        - name: lng
          in: query
          description: >-
            If set, the current longitude of the player (decimal format, not
            HMS) for geofencing
          required: false
          schema:
            type: number
        - name: stripFractionalDuration
          in: query
          description: If set, any duration is rounded down to the whole second value
          required: false
          schema:
            type: boolean
            default: false
        - name: includeSkipAttribute
          in: query
          description: If set, any an attribute will be added marking skips
          required: false
          schema:
            type: boolean
            default: false
        - name: filters
          in: query
          description: >
            A comma-delimited list of strings that, if set, will cause the ad to
            not include content of the specified category or categories (current
            options are noAlcohol and noCannabis)
          required: false
          schema:
            type: string
            pattern: ^(?:noAlcohol|noCannabis)(?:,(?:noAlcohol|noCannabis))*$
      responses:
        '200':
          description: Success
    options:
      tags:
        - CORS
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: keyType
          in: path
          description: Type of key provided in the url.  Currently either device or owner
          required: true
          schema:
            type: string
        - name: key
          in: path
          description: Key of the device to for which to request a VAST play
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /integration/vast/{vastSpec}/{keyType}/{key}/prefetch:
    get:
      description: >
        Returns a string list of all the urls that might be returned by the VAST
        call at the current time. Note that the filters param won't be used with
        this endpoint, so it's not defined here.
      tags:
        - Neon
        - Integration
        - VAST
        - Public
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: keyType
          in: path
          description: Type of key provided in the url.  Currently either device or owner
          required: true
          schema:
            type: string
            enum:
              - device
              - owner
            x-enum-varnames:
              - Device
              - Owner
        - name: key
          in: path
          description: Key of the device to for which to request a VAST play
          required: true
          schema:
            type: string
        - name: externalPlayerIds
          in: query
          description: >-
            A comma-separated list of customer-specific device ids, used if the
            key type is owner
          required: false
          schema:
            type: string
        - name: externalNetworkParentId
          in: query
          description: >-
            A customer-specific network id, used if the keytype is owner (only
            used during dynamic creation of devices)
          required: false
          schema:
            type: string
        - name: externalPlayerIdsParamName
          in: query
          description: >-
            Name of the query parameter that will contain the external player id
            (used for integrations where this cannot be changed to
            'externalPlayerIds')
          required: false
          schema:
            type: string
        - name: externalNetworkParentIdParamName
          in: query
          description: >-
            Name of the query parameter that will contain the external player id
            (used for integrations where this cannot be changed to
            'externalNetworkParentId')
          required: false
          schema:
            type: string
        - name: unitIdCSV
          in: query
          description: Deprecated - here for backwards compatibility
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
    options:
      tags:
        - CORS
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: keyType
          in: path
          description: Type of key provided in the url.  Currently either device or owner
          required: true
          schema:
            type: string
        - name: key
          in: path
          description: Key of the device to for which to request a VAST play
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /integration/vast/{vastSpec}/{keyType}/{key}/prefetch/full:
    get:
      description: >
        Returns a string list of all the urls that might be returned by the VAST
        call at the current time
      tags:
        - Neon
        - Integration
        - VAST
        - Public
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: keyType
          in: path
          description: Type of key provided in the url.  Currently either device or owner
          required: true
          schema:
            type: string
            enum:
              - device
              - owner
            x-enum-varnames:
              - Device
              - Owner
        - name: key
          in: path
          description: Key of the device to for which to request a VAST play
          required: true
          schema:
            type: string
        - name: integrationKeys
          in: query
          description: >-
            A comma-separated list of customer-specific device ids, used if the
            key type is owner
          required: false
          schema:
            type: string
        - name: integrationKeysParamName
          in: query
          description: >-
            Name of the query parameter that will contain the integration key
            (used for integrations where this cannot be changed to
            'integrationKeys')
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AdomniContent'
    options:
      tags:
        - CORS
      parameters:
        - name: vastSpec
          in: path
          description: Version of the vast specification to use
          required: true
          schema:
            type: string
            enum:
              - v2_0
              - v3_0
            x-enum-varnames:
              - V2_0
              - V3_0
        - name: keyType
          in: path
          description: Type of key provided in the url.  Currently either device or owner
          required: true
          schema:
            type: string
        - name: key
          in: path
          description: Key of the device to for which to request a VAST play
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /integration/{providerSlug}/bid-request:
    post:
      tags:
        - Neon
        - Integration
        - Public
      parameters:
        - name: providerSlug
          in: path
          description: name of the provider sending the request
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Empty'
        '204':
          description: No Bid as per spec
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Empty'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenRtb25BidRequest'
        description: The hivestack request for bid
        required: true
    options:
      tags:
        - CORS
      parameters:
        - name: providerSlug
          in: path
          description: name of the provider sending the request
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /integration/{providerSlug}/notification/{notificationType}:
    get:
      tags:
        - Neon
        - Integration
        - Public
      parameters:
        - name: providerSlug
          in: path
          description: name of the provider sending the request
          required: true
          schema:
            type: string
        - name: notificationType
          in: path
          description: win or loss
          required: true
          schema:
            type: string
            enum:
              - Win
              - Loss
      responses:
        '200':
          description: Success
    post:
      tags:
        - Neon
        - Public
      parameters:
        - name: providerSlug
          in: path
          description: name of the provider sending the request
          required: true
          schema:
            type: string
        - name: notificationType
          in: path
          description: win or loss
          required: true
          schema:
            type: string
            enum:
              - Win
              - Loss
      responses:
        '200':
          description: Success
    options:
      tags:
        - CORS
      parameters:
        - name: providerSlug
          in: path
          description: name of the provider sending the request
          required: true
          schema:
            type: string
        - name: notificationType
          in: path
          description: win or loss
          required: true
          schema:
            type: string
            enum:
              - Win
              - Loss
      responses:
        '200':
          description: Standard CORS header response
  /internal-api/feature-flags:
    get:
      description: Fetch an object containing feature flags for local, dev, and prod
      tags:
        - Neon
        - Overseer
        - Unicorn
        - Shoutable
        - Spotlight
      parameters:
        - name: application
          in: query
          description: The application the feature flags are to be used in.
          required: true
          schema:
            $ref: '#/components/schemas/FeatureFlagApplication'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FeatureFlagResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    post:
      description: Call to update a feature flag.
      tags:
        - Neon
        - Overseer
        - Unicorn
        - Shoutable
        - Spotlight
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FeatureFlagsEdit'
        description: New feature flag body.
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FeatureFlagResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /locations/cities:
    get:
      description: |
        Deprecated - use /device-api/locations/...
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Pipe delimited list of cities to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter cities by
          schema:
            type: string
        - name: nextTokenString
          in: query
          description: A pagination token
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the cities
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationCitiesResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /locations/counties:
    get:
      description: |
        Deprecated - use /device-api/locations/...
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Comma delimited list of location IDs to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter counties names by
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the counties
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationCountiesResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /locations/countries:
    get:
      description: |
        Deprecated - use /device-api/locations/...
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Comma delimited list of location IDs to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter location country names by
          schema:
            type: string
        - name: minimumDevices
          in: query
          description: >-
            A non-negative number to specify the lowest number of devices for
            resulting countries
          schema:
            type: number
      responses:
        '200':
          description: Successfully read the location countries
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationCountriesResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /locations/dmas:
    get:
      description: |
        Deprecated - use /device-api/locations/...
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Comma delimited list of DMAs to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter DMAs by
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the DMAs
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationDmasResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /locations/states:
    get:
      description: |
        Deprecated - use /device-api/locations/...
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: excludes
          in: query
          description: Comma delimited list of location IDs to exclude
          schema:
            type: string
        - name: search
          in: query
          description: A string to filter location state names by
          schema:
            type: string
      responses:
        '200':
          description: Successfully read the location states
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LocationStatesResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /map-api/mapbox/tilesets:
    get:
      description: Fetch a list of available mapbox tilesets
      tags:
        - Neon
        - Overseer
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/MapboxTilesetList'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /meta/open-api-doc:
    get:
      description: >
        Returns the Open API 3.0 document describing this API.  Useful for
        auto-code generation
      tags:
        - Neon
        - Meta
        - Public
      responses:
        '200':
          description: Success
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /meta/server:
    get:
      description: >
        Returns information about the current build and time.  Can be used to
        test error-handling code by passing a specific http error code in the
        error query parameter.  Can also be used to process specific named tests
        by passing those names to the test parameter.
      tags:
        - Neon
        - Meta
        - Public
      parameters:
        - name: error
          in: query
          description: >-
            If set, throw a specific error for testing (valid are
            500,400,403,404)
          required: false
          schema:
            type: number
        - name: test
          in: query
          description: Run a specific named test (currently none are publicly available)
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CommonMetaResponse'
        '400':
          description: Simulated bad request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Simulated unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Simulated not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Simulated internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /oauth/callback:
    get:
      description: |
        Handles a callback from an OAuth2 provider as part of the OAuth2 flow
      tags:
        - Neon
        - Authentication
      responses:
        '302':
          description: |
            Redirects back to the client with the requested token
        '400':
          description: Bad request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    post:
      description: |
        Handles a callback from an OAuth2 provider as part of the OAuth2 flow
      tags:
        - Neon
        - Authentication
      responses:
        '302':
          description: |
            Redirects back to the client with the requested token
        '400':
          description: Bad request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
  /oauth/token:
    post:
      description: |
        Handles an OAuth2-based request for a token
      tags:
        - Neon
        - Authentication
      responses:
        '302':
          description: |
            Redirects back to the client with the requested token
        '400':
          description: Bad request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
  /player/play-record-bridge:
    post:
      tags:
        - Neon
        - Integration
        - Public
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlayRecordBridgeRequest'
        description: Request to post play records
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleResult'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /points-of-interest-list:
    post:
      description: Add POIs to internal system to be processed via geocoding.
      tags:
        - Neon
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PointsOfInterestCreateRequest'
        description: Send
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PointsOfInterestCreateResponse'
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /points-of-interest-list/by-search:
    post:
      description: Fetches a POI List given a device search
      tags:
        - Neon
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedSearchDevicesReportParameters'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdomniGeoLocationList'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /points-of-interest-list/device-id-mapping:
    post:
      description: Converts a POI List into a device ID list as a background process
      tags:
        - Neon
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/CreateDeviceIdMapFromPoiListBackgroundRequest
        description: Send
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                type: string
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /points-of-interest-list/duplicate/{pointsOfInterestListId}:
    post:
      tags:
        - Neon
        - Content
      security:
        - OAuth2: []
      description: Create a duplicate list for a provided list by ID
      parameters:
        - name: pointsOfInterestListId
          in: path
          description: ID of the POI List that should be duplicated
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PointsOfInterestListDuplicateRequest'
        description: Request for a content upload url
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PointsOfInterestListEntry'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: pointsOfInterestListId
          in: path
          description: ID of the POI List that should be duplicated
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /points-of-interest-list/update-radius:
    post:
      tags:
        - Neon
        - Content
      security:
        - OAuth2: []
      description: Fetch a presigned location for which to upload POI csv file
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PointsOfInterestUpdateRadiusRequest'
        description: Request for a content upload url
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PointsOfInterestEntry'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /points-of-interest-list/upload-target:
    post:
      tags:
        - Neon
        - Content
      security:
        - OAuth2: []
      description: Fetch a presigned location for which to upload POI csv file
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PointsOfInterestListUploadRequest'
        description: Request for a content upload url
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ContentUploadTargetResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /points-of-interest-list/{pointsOfInterestListId}:
    get:
      description: Retrieve POI List details by ID.
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: pointsOfInterestListId
          in: path
          description: The ID of the POI list you wish to receive information for.
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PointsOfInterestListEntry'
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: pointsOfInterestListId
          in: path
          description: The ID of the POI list you wish to receive information for.
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /points-of-interest-list/{pointsOfInterestListId}/status:
    get:
      description: Gets the status of a POI List that is processing.
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: pointsOfInterestListId
          in: path
          description: The ID of the POI list you wish to receive information for.
          required: true
          schema:
            type: number
        - name: include
          in: query
          description: >-
            CSV string of options to include (or not) in the response. For now
            only option is 'Meta, DownloadLink'.
          style: form
          explode: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PointsOfInterestIncludesEnum'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PointsOfInterestGetResponse'
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: pointsOfInterestListId
          in: path
          description: The ID of the POI list you wish to receive information for.
          required: true
          schema:
            type: number
        - name: include
          in: query
          description: >-
            CSV string of options to include (or not) in the response. For now
            only option is 'Meta, DownloadLink'.
          style: form
          explode: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PointsOfInterestIncludesEnum'
      responses:
        '200':
          description: Standard CORS header response
  /points-of-interest-list/{processId}/device-id-mapping/status:
    get:
      description: >-
        Gets the status of the background process that converts a POI list to a
        Device ID List Finder
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: processId
          in: path
          description: Process ID of the background process to check
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackgroundProcessStatus'
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: processId
          in: path
          description: Process ID of the background process to check
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /pricing-api/currencies:
    post:
      tags:
        - Neon
        - Edge
        - Pricing
        - Public
      description: >-
        Returns information on our currency conversions for the given curreny
        code list
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CurrencyConversionResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CurrencyConversionRequest'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /pricing-api/deals:
    get:
      tags:
        - Neon
        - Owner
        - Pricing
      security:
        - OAuth2: []
      parameters:
        - name: dealIds
          in: query
          required: true
          schema:
            type: array
            items:
              type: number
          style: form
          explode: false
        - name: includes
          in: query
          description: CSV of extra items to include in the bundle
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricingDealBundleList'
    post:
      tags:
        - Neon
        - Owner
        - Pricing
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PricingDeal'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricingDealBundle'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /pricing-api/deals/search:
    post:
      tags:
        - Neon
        - Owner
        - Pricing
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PricingDealSearchRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricingDealSearchResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /pricing-api/deals/{id}:
    get:
      tags:
        - Neon
        - Owner
        - Pricing
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          description: Id of the pmp deal you want
          required: true
          schema:
            type: string
        - name: includes
          in: query
          description: CSV of extra items to include in the bundle
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricingDealBundle'
    delete:
      tags:
        - Neon
        - Owner
        - Pricing
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          description: Id of the pmp deal you want to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleResult'
    post:
      tags:
        - Neon
        - Owner
        - Pricing
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          description: Id of the pmp deal you want
          required: true
          schema:
            type: string
        - name: includes
          in: query
          description: CSV of extra items to include in the bundle
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PricingDeal'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricingDealBundle'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: Id of the pmp deal you want
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /pricing-api/deals/{id}/device-summary:
    get:
      tags:
        - Neon
        - Owner
        - Pricing
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          description: Id of the deal for which you want devices
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VenueTypeMetricsEntryList'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: Id of the pmp deal you want
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /pricing-api/device/{id}/real-time:
    get:
      tags:
        - Neon
        - Owner
        - Device
      description: Fetch the pricing for a given device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          description: ID of the device for which to fetch pricing
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DaysDeviceOpenRtbBidHistory'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: ID of the device for which to fetch pricing
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /reports:
    get:
      tags:
        - Neon
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ReportServiceMeta'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    post:
      tags:
        - Neon
        - Owner
        - Reporting
      description: >-
        Starts running a report (asynchronously) matching the data in the post
        body
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartReportRequest'
        required: true
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DaemonProcessState'
        '401':
          description: Unauthorized
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /reports/device-owner-revenue:
    post:
      description: Fetch the device owner revenue report.
      tags:
        - Neon
        - Reporting
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceOwnersRevenueReportRequest'
        description: >-
          Request object with support for format and date range options to fetch
          report data.
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EnterprisePerformanceReport'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /reports/devices:
    get:
      description: List devices (omniviews) for the supplied userId
      tags:
        - Neon
        - Owner
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: userIds
          in: query
          description: >-
            A CSV of owner ids you wish devices for - if not provided, all
            visible devices for the logged in user are used
          required: false
          schema:
            type: string
        - name: nextToken
          in: query
          description: If supplied, continue on this cursor
          required: false
          schema:
            type: string
        - name: pageSize
          in: query
          description: The number of results per page
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 1000
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceThinViewList'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /reports/enterprise-performance:
    post:
      description: Fetch the enterprise performance report for the given set of purchases.
      tags:
        - Neon
        - Reporting
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnterprisePerformanceReportParameters'
        description: >-
          Request object with support for format and date range options to fetch
          report data.
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EnterprisePerformanceReport'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /reports/enterprise-performance/breakdown:
    post:
      description: >-
        Fetch the enterprise performance break down for the given set of
        purchases.
      tags:
        - Neon
        - Reporting
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnterprisePerformanceReportParameters'
        description: >-
          Request object with support for format and date range options to fetch
          report data.
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EnterprisePerformanceReport'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /reports/{guid}:
    get:
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: guid
          in: path
          description: Guid of the report to pull status for
          required: true
          schema:
            type: string
        - name: redirectOnComplete
          in: query
          description: If true, a 301 to the completed report is sent instead
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DaemonProcessState'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: guid
          in: path
          description: Guid of the report to pull status for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /searches:
    get:
      description: Returns a list of the logged in users saved searches
      tags:
        - Neon
        - Search
      security:
        - OAuth2: []
      parameters:
        - name: userId
          in: query
          description: >-
            The id of the user you wish searches for - if not provided, the
            logged in user is used
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: >-
            The id of the team you wish searches for - if not provided, the
            logged in team is used
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchResponseMetaList'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    post:
      tags:
        - Neon
        - Search
      security:
        - OAuth2: []
      parameters:
        - name: userId
          in: query
          description: >-
            The id of the user you wish to own this search - if not provided,
            the logged in user is used
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: >-
            The id of the team you wish searches for - if not provided, the
            logged in team is used
          required: true
          schema:
            type: string
        - name: deviceLimit
          in: query
          description: >-
            The maximum number of devices to return in the deviceResult array
            (defaults to 5k)
          required: false
          schema:
            type: number
            default: 5000
        - name: viewport
          in: query
          description: >-
            If set, returned value will be prefiltered to the viewport (4 lat
            lng pairs)
          required: false
          schema:
            type: string
        - name: grouping
          in: query
          description: If set, groups results to the specified level
          required: false
          schema:
            $ref: '#/components/schemas/SavedSearchGroupings'
        - name: includes
          in: query
          description: Comma-delimited list of extra fields to include in the response
          required: false
          schema:
            $ref: '#/components/schemas/SavedSearchIncludes'
        - name: definitionOnly
          in: query
          description: >-
            If true, returns only the definition without executing the search
            itself
          required: false
          schema:
            type: boolean
            default: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedSearchRequest'
        description: Request to create a device pairing key
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /searches/{id}:
    get:
      tags:
        - Neon
        - Search
      parameters:
        - name: userId
          in: query
          description: >-
            The id of the user you wish searches for - if not provided, the
            logged in user is used
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
        - name: deviceLimit
          in: query
          description: >-
            The maximum number of devices to return in the deviceResult array
            (defaults to 5k)
          required: false
          schema:
            type: number
            default: 5000
        - name: viewport
          in: query
          description: >-
            If set, returned value will be prefiltered to the viewport (4 lat
            lng pairs)
          required: false
          schema:
            type: string
        - name: format
          in: query
          description: If set, the returned device results can be JSON or GeoJSON
          required: false
          schema:
            $ref: '#/components/schemas/SavedSearchFormat'
        - name: grouping
          in: query
          description: If set, groups results to the specified level
          required: false
          schema:
            $ref: '#/components/schemas/SavedSearchGroupings'
        - name: includes
          in: query
          description: Comma-delimited list of extra fields to include in the response
          required: false
          schema:
            $ref: '#/components/schemas/SavedSearchIncludes'
        - name: definitionOnly
          in: query
          description: >-
            If true, returns only the definition without executing the search
            itself
          required: false
          schema:
            type: boolean
            default: false
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    patch:
      tags:
        - Neon
        - Search
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
        - name: deviceLimit
          in: query
          description: >-
            The maximum number of devices to return in the deviceResult array
            (defaults to 5k)
          required: false
          schema:
            type: number
            default: 5000
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
        - name: viewport
          in: query
          description: >-
            If set, returned value will be prefiltered to the viewport (4 lat
            lng pairs)
          required: false
          schema:
            type: string
        - name: format
          in: query
          description: If set, the returned device results can be JSON or GeoJSON
          required: false
          schema:
            $ref: '#/components/schemas/SavedSearchFormat'
        - name: grouping
          in: query
          description: If set, groups results to the specified level
          required: false
          schema:
            $ref: '#/components/schemas/SavedSearchGroupings'
        - name: includes
          in: query
          description: Comma-delimited list of extra fields to include in the response
          required: false
          schema:
            $ref: '#/components/schemas/SavedSearchIncludes'
        - name: definitionOnly
          in: query
          description: >-
            If true, returns only the definition without executing the search
            itself
          required: false
          schema:
            type: boolean
            default: false
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedSearchRequest'
        description: Request to create a device pairing key
        required: true
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /searches/{id}/definition:
    get:
      description: Fetches the saved search definition for Global Users ONLY.
      tags:
        - Neon
        - Search
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchRequest'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /searches/{id}/definition/{auth0TeamId}:
    get:
      description: Fetches the saved search definition for Global Users ONLY.
      tags:
        - Neon
        - Search
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
        - name: auth0TeamId
          in: path
          description: The team id who owns the saved search
          required: true
          schema:
            type: string
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchRequest'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
        - name: auth0TeamId
          in: path
          description: The team id who owns the saved search
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /searches/{id}/duplicate:
    post:
      description: |
        Duplicate the specified saved search and return the new search ID
      tags:
        - Neon
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedSearchDuplicateRequest'
        required: true
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchDuplicateResponse'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /searches/{id}/media-format-summary:
    get:
      description: |
        For the provided search, generate a summary of the required content
      tags:
        - Neon
        - Search
      parameters:
        - name: userId
          in: query
          description: >-
            The id of the user you wish searches for - if not provided, the
            logged in user is used
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: >-
            The id of the team you wish searches for - if not provided, the
            logged in team is used
          required: false
          schema:
            type: string
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
        - name: includes
          in: query
          description: CSV of optional items to modify what is included in the response
          required: false
          style: form
          explode: false
          schema:
            $ref: '#/components/schemas/SavedSearchMediaFormatSummaryRequestIncludes'
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchMediaFormatSummary'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    post:
      description: |
        For the provided search, generate a summary of the required content
      tags:
        - Neon
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedSearchMediaFormatSummaryRequest'
        required: true
      security:
        - OAuth2: []
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchMediaFormatSummary'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          description: Id of this saved search
          required: true
          schema:
            type: string
        - name: auth0TeamId
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /searches/{searchId}/geojson:
    get:
      tags:
        - Neon
        - Search
      parameters:
        - name: searchId
          in: path
          description: Search ID
          required: true
          schema:
            type: number
        - name: userId
          in: query
          description: User ID that the search belongs to
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
        - name: deviceLimit
          in: query
          description: >-
            The maximum number of devices to return in the deviceResult array
            (defaults to 5k)
          required: false
          schema:
            type: number
            default: 5000
        - name: viewport
          in: query
          description: >-
            If set, returned value will be prefiltered to the viewport (4 lat
            lng pairs)
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchGeoJsonData'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: searchId
          in: path
          description: Search ID
          required: true
          schema:
            type: number
        - name: userId
          in: query
          description: User ID that the search belongs to
          required: true
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
        - name: deviceLimit
          in: query
          description: >-
            The maximum number of devices to return in the deviceResult array
            (defaults to 5k)
          required: false
          schema:
            type: number
            default: 5000
        - name: viewport
          in: query
          description: >-
            If set, returned value will be prefiltered to the viewport (4 lat
            lng pairs)
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /searches/{searchId}/lookup-data:
    get:
      tags:
        - Neon
        - Search
      parameters:
        - name: searchId
          in: path
          description: Search ID
          required: true
          schema:
            type: number
        - name: userId
          in: query
          description: User ID that the search belongs to
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchLookupData'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: searchId
          in: path
          description: Search ID
          required: true
          schema:
            type: number
        - name: userId
          in: query
          description: User ID that the search belongs to
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /searches/{searchId}/metrics/geofences:
    get:
      tags:
        - Neon
        - Search
      parameters:
        - name: searchId
          in: path
          description: Search ID
          required: true
          schema:
            type: number
        - name: userId
          in: query
          description: User ID that the search belongs to
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchGeofenceBreakdownResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: searchId
          in: path
          description: Search ID
          required: true
          schema:
            type: number
        - name: userId
          in: query
          description: User ID that the search belongs to
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /searches/{searchId}/metrics/{metricBreakdownType}:
    get:
      tags:
        - Neon
        - Search
      parameters:
        - name: searchId
          in: path
          description: Search ID
          required: true
          schema:
            type: number
        - name: metricBreakdownType
          in: path
          description: Type of metric data wanting to be pulled
          required: true
          schema:
            $ref: '#/components/schemas/MetricBreakdownType'
        - name: userId
          in: query
          description: User ID that the search belongs to
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SavedSearchBreakdownResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: searchId
          in: path
          description: Search ID
          required: true
          schema:
            type: number
        - name: metricBreakdownType
          in: path
          description: Type of metric data wanting to be pulled
          required: true
          schema:
            $ref: '#/components/schemas/MetricBreakdownType'
        - name: userId
          in: query
          description: User ID that the search belongs to
          required: false
          schema:
            type: number
        - name: auth0TeamId
          in: query
          description: Team ID that the search belongs to
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /tags:
    get:
      description: Returns a complete list of tags.
      tags:
        - Neon
        - Public
      security:
        - OAuth2: []
      parameters:
        - name: includeAll
          in: query
          description: >-
            If true then it will include ALL tags from system. By default, it
            returns tags the belongs to the currently logged in user.
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tag'
    post:
      description: Create a tag with given values.
      tags:
        - Neon
      security:
        - OAuth2: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Tag'
        description: Values to create new tag
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
    options:
      tags:
        - CORS
      parameters:
        - name: includeAll
          in: query
          description: >-
            If true then it will include ALL tags from system. By default, it
            returns tags the belongs to the currently logged in user.
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Standard CORS header response
  /tags/assignments/{model}:
    get:
      description: Returns list of tags assigned to specified models.
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: model
          in: path
          description: >-
            String representation of model. One of enterprise-campaigns, orders,
            users, devices.
          required: true
          schema:
            type: string
        - name: modelIds
          in: query
          description: IDs number of the models looking up tags for.
          required: true
          style: form
          explode: false
          schema:
            type: array
            items:
              type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TagMapping'
  /tags/assignments/{model}/{modelId}:
    get:
      description: Returns list of tags assigned to specified model.
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: model
          in: path
          description: >-
            String representation of model. One of enterprise-campaigns, orders,
            users, devices.
          required: true
          schema:
            type: string
        - name: modelId
          in: path
          description: ID number of the model looking up tags for.
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tag'
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    delete:
      description: Deletes all tag assignments for a given model
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: model
          in: path
          description: >-
            String representation of model. One of enterprise-campaigns, orders,
            users, devices.
          required: true
          schema:
            type: string
        - name: modelId
          in: path
          description: ID number of the model looking up tags for.
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Success
        '404':
          description: Could not find that model
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: model
          in: path
          description: >-
            String representation of model. One of enterprise-campaigns, orders,
            users, devices.
          required: true
          schema:
            type: string
        - name: modelId
          in: path
          description: ID number of the model looking up tags for.
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Standard CORS header response
  /tags/{tagId}:
    get:
      description: Return a single tag's values.
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: tagId
          in: path
          description: Id or slug of the tag you are looking up
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    delete:
      description: Delete a tag specified by given ID.
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: tagId
          in: path
          description: Id or slug of the tag you are wanting to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    patch:
      description: Update the values of a tag by given ID.
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: tagId
          in: path
          description: Id or slug of the tag you are wanting to update
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Tag'
        description: Send new tag values
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: tagId
          in: path
          description: Id or slug of the tag you are looking up
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /tags/{tagId}/assignment:
    post:
      description: Added a tag assignment to the specified model.
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: tagId
          in: path
          description: Id or slug of the tag you are looking up
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagAssignment'
        description: Send new tag assignment value
        required: true
      responses:
        '200':
          description: Success
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    delete:
      description: Removes tag from a specified model.
      tags:
        - Neon
      security:
        - OAuth2: []
      parameters:
        - name: tagId
          in: path
          description: Id or slug of the tag you are looking up
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        '404':
          description: No tag by that id
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: tagId
          in: path
          description: Id or slug of the tag you are looking up
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
  /taxonomy/iab-content/{version}:
    get:
      description: |
        Fetches the iab content taxonomy entries for the specified version
      tags:
        - Neon
        - Taxonomy
        - Public
      parameters:
        - name: filter
          in: query
          description: If set, only return entries that match the filter
          required: false
          schema:
            type: string
        - name: version
          in: path
          description: Which version to use (OpenRtb25 or V2)
          required: true
          schema:
            $ref: '#/components/schemas/IabContentVersion'
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IabTaxonomyList'
    options:
      tags:
        - CORS
      parameters:
        - name: filter
          in: query
          description: If set, only return entries that match the filter
          required: false
          schema:
            type: string
        - name: version
          in: path
          description: Which version to use (OpenRtb25 or V2)
          required: true
          schema:
            $ref: '#/components/schemas/IabContentVersion'
      responses:
        '200':
          description: Standard CORS header response
  /users/logout:
    get:
      description: >
        This is a dummy route added to make Nuxt's required logout route call
        happy.
      tags:
        - Neon
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleResult'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /venue-types:
    get:
      description: |
        Fetches all venue types
      tags:
        - Neon
        - VenueType
      responses:
        '200':
          description: Successfully read the venue types
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeviceVenueType'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      responses:
        '200':
          description: Standard CORS header response
  /venue-types/{id}:
    get:
      description: |
        Fetches a venue type by id
      tags:
        - Neon
        - Device
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Successfully read the venue type
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceVenueType'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Venue type not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    patch:
      description: |
        Updates an existing venue type
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: number
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceVenueTypeUpsertRequest'
        description: Request to update a venue type
        required: true
      responses:
        '200':
          description: Venue type successfully updated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeviceVenueType'
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Venue type not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    delete:
      description: |
        Deletes an existing venue type
      tags:
        - Neon
        - Device
      security:
        - OAuth2: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: number
      responses:
        '204':
          description: Venue type successfully deleted
        '400':
          description: Bad request. Missing/invalid parameters.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Generally unauthorized or not authenticated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Venue type not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Unexpected internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
    options:
      tags:
        - CORS
      parameters:
        - name: id
          in: path
          required: true
          description: TBD
          schema:
            type: string
      responses:
        '200':
          description: Standard CORS header response
x-amazon-apigateway-binary-media-types:
  - '*/*'
x-amazon-apigateway-gateway-responses:
  UNAUTHORIZED:
    statusCode: 401
    responseParameters:
      gatewayresponse.header.Access-Control-Allow-Origin: '''*'''
    responseTemplates:
      application/json: '{"errors":["Unauthorized"], "httpStatusCode": 401}'
  MISSING_AUTHENTICATION_TOKEN:
    statusCode: 404
    responseParameters:
      gatewayresponse.header.Access-Control-Allow-Origin: '''*'''
    responseTemplates:
      application/json: '{"errors":["No such endpoint"], "httpStatusCode": 404}'
  INTEGRATION_TIMEOUT:
    statusCode: 504
    responseParameters:
      gatewayresponse.header.Access-Control-Allow-Origin: '''*'''
    responseTemplates:
      application/json: '{"errors":["Timeout"], "httpStatusCode": 504}'
  DEFAULT_5XX:
    statusCode: 500
    responseParameters:
      gatewayresponse.header.Access-Control-Allow-Origin: '''*'''
    responseTemplates:
      application/json: '{"errors":["Internal Server Error"], "httpStatusCode": 500}'
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: /authorize
          tokenUrl: /oauth/token
          scopes: {}
  schemas:
    AbstractBreakdownResponse:
      type: object
      title: Abstract Breakdown Response
      properties:
        sourceUpdatedEpochMS:
          type: number
        metricType:
          $ref: '#/components/schemas/MetricBreakdownType'
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/MetricBreakdownEntry'
    AbstractGeofenceBreakdownResponse:
      type: object
      title: Abstracted Geofence Breakdown Response
      properties:
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/GeoFenceVenueTypeBreakdown'
    AccessTokenAuth0Exchange:
      type: object
      title: Access Token Auth0 Exchange
      properties:
        accessToken:
          type: string
    AccessTokenRefreshRequest:
      type: object
      title: Access Token Refresh Request
      properties:
        newActingUserId:
          type: string
          description: New id to make active
        expirationSeconds:
          type: number
          minimum: 10
          maximum: 28800
          default: 28800
    AccessTokenRequest:
      type: object
      title: Access Token Request
      required:
        - email
        - password
      properties:
        email:
          type: string
          description: Email address of the account to authenticate
          format: email
          minLength: 7
        password:
          type: string
          description: Password of the account to authenticate
          minLength: 6
        scope:
          type: string
          enum:
            - INFERRED
            - OWNER
            - ADVERTISER
            - GLOBAL
            - SHOUTABLE
            - OVERSEER
          x-enum-varnames:
            - Inferred
            - Owner
            - Advertiser
            - Global
            - Shoutable
            - Overseer
          description: |
            What style of account to authenticate:
             * `INFERRED` - Default to whatever form (owner or advertiser) was last used on the website
             * `OWNER` - A device owner account
             * `ADVERTISER` - A advertising account
             * `GLOBAL` - Used by Adomni customer service
             * `SHOUTABLE` - Used by Shoutable Admin. Users MUST have the `ShoutableAdmin` role to login
             * `OVERSEER` - Used by Overseer. Users MUST have the `OverseerUser` role to login
          default: INFERRED
        expirationSeconds:
          type: number
          minimum: 10
          maximum: 28800
          default: 28800
    AccessTokenResponse:
      type: object
      title: Access Token Response
      required:
        - token
        - expires
      properties:
        token:
          type: string
          description: A JWT access token for the Neon API
        expires:
          type: number
          format: int64
          description: The time this token will expire, expressed in epoch ms
    AdomniAccountingInvoiceCadence:
      type: string
      title: Accounting Invoice Cadence Options
      enum:
        - Monthly
        - InFullPriorToLaunch
        - InFullAfterCampaignEnds
    AdomniAccountingInvoiceSpendHandling:
      type: string
      title: Accounting Invoice Spend Handling Options
      enum:
        - Standard
        - SnapSpendToBudget
        - SnapSpendToBudgetCpmAware
    AdomniAccountingInvoiceSplit:
      type: string
      title: Accounting Invoice Split Options
      enum:
        - NoSplit
        - ByBrand
        - ByCampaign
        - ByCampaignGroup
    AdomniAccountingPaymentTerms:
      type: string
      title: Accounting Payment Terms Options
      enum:
        - OnePercent10Net30
        - TwoPercent10Net30
        - Consignment
        - DueOnReceipt
        - DueOnThe10th
        - DueOnThe1st
        - EOM
        - Net10
        - Net13
        - Net15
        - Net150
        - Net20
        - Net25
        - Net26
        - Net27
        - Net30
        - Net31
        - Net45
        - Net6
        - Net60
        - Net7
        - Net90
    AdomniAccountingSettings:
      type: object
      title: Adomni Accounting Settings
      description: >-
        These settings are generalized so we can use them for both Users and
        Teams if/when necessary
      properties:
        auth0Id:
          type: string
        billingTeamAuth0Id:
          type: string
        billingTeam:
          $ref: '#/components/schemas/AdomniTeam'
        invoiceCadence:
          $ref: '#/components/schemas/AdomniAccountingInvoiceCadence'
        invoiceSplit:
          $ref: '#/components/schemas/AdomniAccountingInvoiceSplit'
        invoiceSpendHandling:
          $ref: '#/components/schemas/AdomniAccountingInvoiceSpendHandling'
        paymentTerms:
          $ref: '#/components/schemas/AdomniAccountingPaymentTerms'
    AdomniContent:
      type: object
      title: Adomni Content
      description: Describes a piece of Adomni Content
      properties:
        id:
          type: string
          description: ID
        name:
          type: string
          description: Common file name
        key:
          type: string
          description: Public unique identifier
        state:
          $ref: '#/components/schemas/ContentState'
          description: State of the content's upload
        ext:
          type: string
          description: File extension (Deprecated, use mediaFormat field)
        width:
          type: number
          description: Width in pixels (Deprecated, use mediaFormat field)
        height:
          type: number
          description: Height in pixels (Deprecated, use mediaFormat field)
        date:
          type: string
          description: Date the content was created (Pacific)
        url:
          type: string
          description: URL for the content
        previewUrl:
          type: string
          description: URL for preview image
        iabIds:
          description: IAB content code(s) - Open RTB2.5 spec
          type: array
          items:
            type: string
        fileSize:
          type: number
          description: File size in bytes, if available
        durationSeconds:
          type: number
          description: >-
            Duration in seconds, if available (Deprecated, use mediaFormat
            field)
        externalKey:
          type: string
        processingType:
          type: string
        ownerAuth0TeamId:
          type: string
          description: Auth0 Team ID of the media owner's Team.
        derivedFromId:
          type: number
          description: If set, the content ID that this content was derived from
        mediaFormat:
          $ref: '#/components/schemas/MediaFormat'
    AdomniGeoLocation:
      type: object
      title: Adomni GeoLocation
      description: A lat/lng pair with an optional label
      required:
        - lat
        - lng
      properties:
        lat:
          type: number
        lng:
          type: number
        precision:
          type: number
          description: >-
            If provided, the precision of the GPS signal.  Set to -1 to indicate
            a purposely anonymized record
        label:
          type: string
        name:
          type: string
    AdomniGeoLocationList:
      type: object
      title: A list of AdomniGeoLocation
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/AdomniGeoLocation'
    AdomniStringIdAndUserRole:
      type: object
      title: String Id And User Role
      properties:
        id:
          type: string
        role:
          $ref: '#/components/schemas/AdomniUserRoleAlpha'
    AdomniTeam:
      type: object
      title: Adomni User Thin
      description: >-
        A thinner version of user details object (which is stored in the JWT
        token)
      properties:
        auth0Id:
          type: string
        defaultAuth0UserId:
          type: string
        key:
          type: string
        auth0Name:
          type: string
        displayName:
          type: string
        legalBusinessName:
          type: string
        accountType:
          $ref: '#/components/schemas/AdomniTeamAccountType'
        createdEpochMs:
          type: number
        teamSettings:
          $ref: '#/components/schemas/AdomniTeamSettings'
        accountingSettings:
          $ref: '#/components/schemas/AdomniAccountingSettings'
        metrics:
          $ref: '#/components/schemas/AdomniTeamMetrics'
        defaultDeviceTags:
          type: array
          items:
            $ref: '#/components/schemas/BoardTag'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/AdomniTeamRole'
        defaultSupplySourcePartner:
          $ref: '#/components/schemas/AdomniTeamSupplySource'
    AdomniTeamAccountType:
      type: string
      title: Adomni Team Account Types
      enum:
        - Owner
        - Advertiser
    AdomniTeamCreateRequest:
      type: object
      title: Adomni Team Create Request
      description: Minimum fields required to create a Team
      properties:
        displayName:
          type: string
        legalBusinessName:
          type: string
        accountType:
          $ref: '#/components/schemas/AdomniTeamAccountType'
    AdomniTeamInventoryAutomation:
      type: string
      enum:
        - MoveHealthyToAvailable
        - MoveUnhealthy30DaysToUnlisted
        - MoveUnhealthy90DaysToUnlisted
        - MoveUnhealthy120DaysToUnlisted
        - AssignDealsUsingBidRequests
    AdomniTeamInvitationDetails:
      type: object
      title: Adomni Team Invitation Details
      properties:
        invitationId:
          type: string
        teamId:
          type: string
    AdomniTeamInvitationUser:
      type: object
      title: Adomni Team Invitation User
      properties:
        invitationId:
          type: string
        opaqueKey:
          type: string
        email:
          type: string
        auth0TeamId:
          type: string
        createdAt:
          type: string
        expires:
          type: string
        inviterName:
          type: string
    AdomniTeamInviteResponse:
      type: object
      title: Adomni Team Invite Response
      description: Basic response for successfully sending team invite email
      properties:
        result:
          type: boolean
    AdomniTeamList:
      type: object
      title: Adomni Teams List
      description: A list of Adomni Teams
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/AdomniTeam'
        pagination:
          $ref: '#/components/schemas/PaginationObjectWithTotal'
    AdomniTeamMetrics:
      type: object
      title: Adomni Team Metrics
      description: Stores metrics for a given team
      properties:
        auth0TeamId:
          type: string
        deviceCount:
          type: number
        campaignCount:
          type: number
    AdomniTeamPublic:
      type: object
      title: Adomni Team Public
      description: Used to display a list of Teams and have their associated IDs
      properties:
        auth0Id:
          type: string
        displayName:
          type: string
    AdomniTeamPublicList:
      type: object
      title: Adomni Team Public List
      properties:
        pagination:
          $ref: '#/components/schemas/PaginationObjectWithTotal'
        results:
          type: array
          items:
            $ref: '#/components/schemas/AdomniTeamPublic'
    AdomniTeamRole:
      type: string
      title: Team roles available
      enum:
        - Agency
        - BuyerMaySetCustomMargin
        - ManagedServiceClient
        - PMPBuyingEligible
        - ChannelPartner
    AdomniTeamSearchRequestIncludes:
      type: string
      title: Team Search Includes
      enum:
        - Metrics
        - DefaultDeviceTags
        - BillingTeamDetails
    AdomniTeamSettings:
      type: object
      title: Adomni Team Settings
      properties:
        id:
          type: number
          description: This is purely for DB management, not for external use
        auth0Id:
          type: string
        creditDecisionAmountUSD:
          type: number
        creditDecision:
          $ref: '#/components/schemas/AdomniUserCreditDecision'
        defaultAdomniCommissionPercent:
          type: number
        defaultBuyerMarkupMarginPercent:
          type: number
        defaultOpenRtbAdDomainOverride:
          type: string
        defaultDealHandling:
          type: string
          enum:
            - Standard
            - RestrictSearchToDevices
        defaultPmpDealIds:
          description: >-
            PMP deals that are automatically assigned to newly created campaigns
            for this user
          type: array
          items:
            type: number
        defaultCurrency:
          type: string
        defaultExcludedInventoryTags:
          type: array
          items:
            $ref: '#/components/schemas/BoardTag'
        defaultChannelPartnerAuth0Id:
          type: string
        companyLogoId:
          type: number
        companyLogoOpaqueKey:
          type: string
        defaultBuyerMarkupMarginViewPreference:
          $ref: >-
            #/components/schemas/EnterpriseCampaignBuyerMarkupMarginViewPreference
        emailWeeklyDayOfWeek:
          type: number
        defaultIabCategories:
          type: array
          items:
            type: string
        planningPreferences:
          type: string
        popPreferences:
          type: string
        reportingPreferences:
          type: string
        notes:
          type: string
        autoReleaseContent:
          type: boolean
        inventoryAutomations:
          type: array
          items:
            $ref: '#/components/schemas/AdomniTeamInventoryAutomation'
        whiteLabelMode:
          $ref: '#/components/schemas/AdomniTeamWhiteLabelMode'
        whiteLabelSubdomain:
          type: string
    AdomniTeamSupplySource:
      type: object
      title: Adomni Team Supply Source
      required:
        - groupId
        - auth0TeamId
        - playerSoftwareId
        - isDefault
      properties:
        groupId:
          type: string
        auth0TeamId:
          type: string
        playerSoftwareId:
          type: number
        isDefault:
          type: boolean
        externalKey:
          type: string
        externalMediaOwnerName:
          type: string
    AdomniTeamWhiteLabelMode:
      type: string
      title: Adomni Team White Label Mode
      enum:
        - Disabled
        - Enabled
    AdomniTimedGeoLocation:
      type: object
      title: Adomni GeoLocation
      required:
        - lat
        - lng
      allOf:
        - $ref: '#/components/schemas/AdomniGeoLocation'
        - type: object
          properties:
            timestamp:
              type: number
              description: The time the sample was taken, in epoch MS
    AdomniUser:
      type: object
      title: Adomni User Thin
      description: >-
        A thinner version of user details object (which is stored in the JWT
        token)
      properties:
        auth0UserId:
          type: string
        adomniId:
          type: number
        email:
          type: string
          format: email
        emailKey:
          type: string
        emailVerificationStatus:
          $ref: '#/components/schemas/AdomniUserEmailVerificationStatus'
        firstName:
          type: string
        lastName:
          type: string
        company:
          type: string
        phone:
          type: string
        createdEpochMs:
          type: number
        updatedEpochMs:
          type: number
        userSettings:
          $ref: '#/components/schemas/AdomniUserSettingsAlpha'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/AdomniStringIdAndUserRole'
        auth0TeamIds:
          type: array
          items:
            type: string
        teams:
          type: array
          items:
            $ref: '#/components/schemas/AdomniTeam'
        identityProviderId:
          type: number
          description: >
            The ID of the primary identity provider to which a user is
            associated, or unset if the user is associated with the platform
            default identity provider
        immutableProperties:
          type: array
          description: Properties that are not allowed to be updated manually
          items:
            type: string
    AdomniUserAndTeam:
      type: object
      title: Adomni User And Team
      properties:
        user:
          $ref: '#/components/schemas/AdomniUser'
        adomniTeam:
          $ref: '#/components/schemas/AdomniTeam'
    AdomniUserAndTeamSignUpFields:
      type: object
      title: Adomni User and Team Sign Up Fields
      properties:
        agree:
          type: boolean
        linkKey:
          type: string
          description: A key representing the environment to send correspondence to
        password:
          type: string
        password2:
          type: string
    AdomniUserAndTeamUpsertRequest:
      type: object
      title: Adomni User Details Upsert Request
      properties:
        signUpFields:
          $ref: '#/components/schemas/AdomniUserAndTeamSignUpFields'
        teamInvitationDetails:
          $ref: '#/components/schemas/AdomniTeamInvitationDetails'
        user:
          $ref: '#/components/schemas/AdomniUser'
        adomniTeam:
          $ref: '#/components/schemas/AdomniTeam'
    AdomniUserAssignment:
      type: object
      title: Adomni User Assignments for a given Team
      allOf:
        - $ref: '#/components/schemas/AdomniUserAssignmentBase'
        - type: object
          properties:
            assignedUser:
              $ref: '#/components/schemas/AdomniUser'
    AdomniUserAssignmentBase:
      type: object
      title: Adomni User Assignments for a given Team
      properties:
        assignedAuth0UserId:
          type: string
        role:
          $ref: '#/components/schemas/AdomniUserRoleAlpha'
        commissionPct:
          type: number
    AdomniUserAssignmentList:
      type: object
      title: Adomni User Assignments for a given User
      properties:
        assignments:
          type: array
          items:
            $ref: '#/components/schemas/AdomniUserAssignment'
    AdomniUserAssignmentUpdateRequest:
      type: object
      title: Request to update all user assignments
      properties:
        assignments:
          type: array
          items:
            $ref: '#/components/schemas/AdomniUserAssignmentBase'
    AdomniUserCreditDecision:
      type: string
      enum:
        - CreditApproved
        - CreditHold
        - Declined
        - Pending
        - PrepaymentCollected
    AdomniUserEmailVerificationStatus:
      type: string
      title: Adomni Email Address Verification Status
      enum:
        - Verified
        - NotVerified
        - NotApplicable
    AdomniUserList:
      type: object
      title: Adomni Users List
      description: A list of Adomni Users
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/AdomniUser'
        pagination:
          $ref: '#/components/schemas/PaginationObjectWithTotal'
    AdomniUserPublic:
      type: object
      title: Adomni User Public
      description: A public version of a user with limited information
      properties:
        id:
          type: number
        label:
          type: string
    AdomniUserRoleAlpha:
      type: string
      title: User roles available
      enum:
        - AccountManager
        - CampaignOpsSpecialist
        - Developer
        - DspAdmin
        - OverseerUser
        - SalesRep
        - ShoutableAdmin
    AdomniUserSearchRequestIncludes:
      type: string
      title: User Search Includes
      enum:
        - EmailVerificationStatus
        - IdentityProviderId
        - ImmutableProperties
        - Teams
    AdomniUserSettingsAlpha:
      type: object
      title: Adomni User Thin
      description: >-
        A thinner version of user details object (which is stored in the JWT
        token)
      properties:
        city:
          type: string
        region:
          type: string
        countryId:
          type: number
        presaleInventoryEnabledByDefault:
          type: boolean
        nonprogrammaticInventoryEnabledByDefault:
          type: boolean
        contactEmail:
          type: string
        emailReports:
          type: array
          items:
            $ref: '#/components/schemas/UserEmailReports'
        additionalEmails:
          type: array
          items:
            type: string
        ownerKey:
          type: string
    Advertiser:
      type: object
      title: Advertiser
      properties:
        name:
          type: string
    AdvertiserList:
      type: object
      title: Advertiser List
      properties:
        advertisers:
          type: array
          items:
            $ref: '#/components/schemas/Advertiser'
    AggregatedBidDataEntry:
      type: object
      title: Aggregated Play Data Entry
      description: Represents a single row in the aggregated play data table
      properties:
        id:
          type: number
        createdEpochMS:
          type: number
        updatedEpochMS:
          type: number
        dateUtc:
          type: string
        dateHourUtc:
          type: string
        purchaseId:
          type: number
        purchaseIdType:
          type: string
        contentId:
          type: number
        deviceId:
          type: number
        bidPlayCount:
          type: number
        bidTotalCostUsd:
          type: number
        bidTotalValueUsd:
          type: number
        lossPlayCount:
          type: number
        lossTotalCostUsd:
          type: number
        lossTotalValueUsd:
          type: number
        lossTotalDelayMs:
          type: number
        winPlayCount:
          type: number
        winTotalCostUsd:
          type: number
        winTotalValueUsd:
          type: number
        winTotalDelayMs:
          type: number
    AggregatedBidDataRequest:
      type: object
      properties:
        startDateHourUtcInclusive:
          type: string
        endDateHourUtcExclusive:
          type: string
        purchaseEntity:
          $ref: '#/components/schemas/PurchaseEntity'
    AggregatedBidDataResponse:
      type: object
      properties:
        request:
          $ref: '#/components/schemas/AggregatedBidDataRequest'
        results:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedBidDataEntry'
    AggregatedPlayDataAggregateFields:
      type: string
      enum:
        - countPurchaseIdUniqueFaces
        - countUniqueDevices
        - countDevices
        - avgCostCpmUsd
        - avgValueCpmUsd
        - sumCostCents
        - sumCostSrcCurrency
        - sumDeviceFaceCount
        - sumImpressions
        - sumPlayCount
        - sumValueCents
        - sumCostSrcCurrencyToDate
        - sumCostCentsToDate
        - sumImpressionsToDate
        - sumPlayCountToDate
        - sumValueCentsToDate
        - minDateLocal
        - minDateHourLocal
        - maxDateLocal
        - maxDateHourLocal
        - minAggregatedPlayDataUpdatedEpochMS
        - maxAggregatedPlayDataUpdatedEpochMS
      x-enum-varnames:
        - CountPurchaseIdUniqueFaces
        - CountUniqueDevices
        - CountDevices
        - AvgCostCpmUsd
        - AvgValueCpmUsd
        - SumCostCents
        - SumCostSrcCurrency
        - SumDeviceFaceCount
        - SumImpressions
        - SumPlayCount
        - SumValueCents
        - SumCostSrcCurrencyToDate
        - SumCostCentsToDate
        - SumImpressionsToDate
        - SumPlayCountToDate
        - SumValueCentsToDate
        - MinDateLocal
        - MinDateHourLocal
        - MaxDateLocal
        - MaxDateHourLocal
        - MinAggregatedPlayDataUpdatedEpochMS
        - MaxAggregatedPlayDataUpdatedEpochMS
    AggregatedPlayDataDataSource:
      type: string
      enum:
        - RealPlays
        - EstimatedNonProgrammaticDirectBuyPlays
    AggregatedPlayDataEntry:
      type: object
      title: Aggregated Play Data Entry
      description: Represents a single row in the aggregated play data table
      properties:
        id:
          type: number
        createdEpochMS:
          type: number
        updatedEpochMS:
          type: number
        playCount:
          type: number
        srcCurrencyCode:
          type: string
        totalCostSrcCurrency:
          type: number
        totalCostUsd:
          type: number
        totalValueUsd:
          type: number
        totalImpressions:
          type: number
        dateUtc:
          type: string
        dateHourUtc:
          type: string
        purchaseId:
          type: number
        purchaseIdType:
          type: string
        contentId:
          type: number
        deviceId:
          type: number
        networkId:
          type: number
        dataSource:
          $ref: '#/components/schemas/AggregatedPlayDataDataSource'
    AggregatedPlayDataEstimatedNonProgrammaticDirectBuyPlaysCreationRequest:
      type: object
      properties:
        apdData:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedPlayDataEntry'
    AggregatedPlayDataEstimatedNonProgrammaticDirectBuyPlaysDeletionRequest:
      type: object
      properties:
        campaignId:
          type: number
    AggregatedPlayDataFetchFields:
      type: string
      enum:
        - advertiserId
        - advertiserLabel
        - apdId
        - apdCostCents
        - apdImpressions
        - apdPlayCount
        - apdValueCents
        - apdSrcCurrencyCode
        - apdCostSrcCurrency
        - campaignClientName
        - campaignScheduleGuid
        - campaignIsBonus
        - campaignIsNonBillable
        - contentId
        - dateHourLocal
        - dateHourUtc
        - dateLocal
        - dateUtc
        - deviceCbsaCode
        - deviceCbsaTitle
        - deviceCity
        - deviceCounty
        - deviceCountry
        - deviceDmaCode
        - deviceDmaName
        - deviceExternalId
        - deviceFaceCount
        - deviceFacingDirection
        - deviceId
        - deviceIntegrationKey
        - deviceLat
        - deviceLng
        - deviceLocationHash
        - deviceName
        - deviceNetworkId
        - deviceOwnerId
        - deviceOwnerLabel
        - devicePayeeId
        - devicePayeeLabel
        - deviceState
        - deviceVenueTypeId
        - deviceVenueTypeName
        - deviceZip
        - externalPurchaseName
        - externalPurchaseOrderId
        - purchaseId
        - purchaseType
      x-enum-varnames:
        - AdvertiserId
        - AdvertiserLabel
        - ApdId
        - ApdCostCents
        - ApdImpressions
        - ApdPlayCount
        - ApdValueCents
        - ApdSrcCurrencyCode
        - ApdCostSrcCurrency
        - CampaignClientName
        - CampaignScheduleGuid
        - CampaignIsBonus
        - CampaignIsNonBillable
        - ContentId
        - DateHourLocal
        - DateHourUtc
        - DateLocal
        - DateUtc
        - DeviceCbsaCode
        - DeviceCbsaTitle
        - DeviceCity
        - DeviceCounty
        - DeviceCountry
        - DeviceDmaCode
        - DeviceDmaName
        - DeviceExternalId
        - DeviceFaceCount
        - DeviceFacingDirection
        - DeviceId
        - DeviceIntegrationKey
        - DeviceLat
        - DeviceLng
        - DeviceLocationHash
        - DeviceName
        - DeviceNetworkId
        - DeviceOwnerId
        - DeviceOwnerLabel
        - DevicePayeeId
        - DevicePayeeLabel
        - DeviceState
        - DeviceVenueTypeId
        - DeviceVenueTypeName
        - DeviceZip
        - ExternalPurchaseName
        - ExternalPurchaseOrderId
        - PurchaseId
        - PurchaseType
    AggregatedPlayDataFilterNew:
      title: Aggregated Play Data Filter New
      type: object
      description: Filter set against rows in the aggregated play data table
      properties:
        appliedTimeZoneName:
          type: string
          default: Etc/UTC
        startDateHourLocalInclusive:
          type: string
        endDateHourLocalExclusive:
          type: string
        deviceOwnerAuth0TeamIdList:
          type: array
          items:
            type: string
        deviceOwnerAuth0TeamIdExclusionList:
          type: array
          items:
            type: string
        deviceIdList:
          type: array
          items:
            type: number
        contentIdList:
          type: array
          items:
            type: number
        deviceIdExclusionList:
          type: array
          items:
            type: number
        advertiserAuth0TeamIdList:
          type: array
          items:
            type: string
        advertiserAuth0TeamIdExclusionList:
          type: array
          items:
            type: string
        purchaseEntities:
          type: array
          items:
            $ref: '#/components/schemas/PurchaseEntity'
        scheduleGuidList:
          type: array
          items:
            type: string
        aggregatedPlayDataDataSource:
          $ref: '#/components/schemas/AggregatedPlayDataDataSource'
    AggregatedPlayDataGroupFields:
      type: string
      enum:
        - allData
        - campaignAdvertiserAuth0TeamId
        - contentId
        - dateHourLocal
        - dateLocal
        - deviceId
        - deviceOwnerId
        - deviceVenueTypeId
        - purchaseId
        - deviceDmaCode
        - deviceCbsaCode
        - deviceState
      x-enum-varnames:
        - AllData
        - CampaignAdvertiserAuth0TeamId
        - ContentId
        - DateHourLocal
        - DateLocal
        - DeviceId
        - DeviceOwnerId
        - DeviceVenueTypeId
        - PurchaseId
        - DeviceDmaCode
        - DeviceCbsaCode
        - DeviceState
    AggregatedPlayDataRequest:
      title: Aggregated Play Data Request
      type: object
      description: Request to return rows matching
      properties:
        appliedTimeZoneName:
          type: string
          default: etc/UTC
          description: >-
            The timezone used in all responses (as well as filters) - leave
            blank for UTC
        filter:
          $ref: '#/components/schemas/AggregatedPlayDataFilterNew'
          description: Filters rows down to just those matching
        include:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedPlayDataFetchFields'
          description: >-
            Which fields should be returned in the result.  Group fields and
            aggregated fields set separately
        aggregateFields:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedPlayDataAggregateFields'
          description: >-
            Data calculated in aggregate based on the grouping (requires a
            grouping to be set)
        grouping:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedPlayDataGroupFields'
          description: Fields by which the data is grouped for calculating aggregate fields
        options:
          $ref: '#/components/schemas/AggregatedPlayDataRequestOptions'
    AggregatedPlayDataRequestOptions:
      title: Aggregated Play Data Request Options
      type: object
      description: Meta-options for how you'd like the query to execute
      properties:
        timeoutMS:
          type: number
    AggregatedPlayDataResponse:
      title: Aggregated Play Data Response
      type: object
      description: Response to the apd request
      properties:
        request:
          $ref: '#/components/schemas/AggregatedPlayDataRequest'
        results:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedPlayDataResponseEntry'
    AggregatedPlayDataResponseEntry:
      title: Aggregated Play Data Response Entry
      type: object
      description: Single row in the response
      properties:
        advertiserId:
          type: number
        advertiserLabel:
          type: string
        apdId:
          type: number
        apdCostCents:
          type: number
        apdImpressions:
          type: number
        apdPlayCount:
          type: number
        apdValueCents:
          type: number
        apdSrcCurrencyCode:
          type: string
        apdCostSrcCurrency:
          type: number
        appliedTimeZoneName:
          type: string
        campaignClientName:
          type: string
        campaignScheduleGuid:
          type: string
        campaignIsBonus:
          type: number
        campaignIsNonBillable:
          type: number
        contentId:
          type: number
        dateHourLocal:
          type: string
        dateHourUtc:
          type: string
        dateLocal:
          type: string
        dateUtc:
          type: string
        deviceCbsaCode:
          type: number
        deviceCbsaTitle:
          type: string
        deviceCity:
          type: string
        deviceCounty:
          type: string
        deviceCountry:
          type: string
        deviceDmaCode:
          type: number
        deviceDmaName:
          type: string
        deviceExternalId:
          type: number
        deviceFaceCount:
          type: number
        deviceFacingDirection:
          type: string
        deviceId:
          type: number
        deviceIntegrationKey:
          type: string
        deviceLat:
          type: number
        deviceLng:
          type: number
        deviceLocationHash:
          type: string
        deviceName:
          type: string
        deviceNetworkId:
          type: number
        deviceOwnerId:
          type: string
        deviceOwnerLabel:
          type: string
        devicePayeeId:
          type: string
        devicePayeeLabel:
          type: string
        deviceState:
          type: string
        deviceVenueTypeId:
          type: number
        deviceVenueTypeName:
          type: string
        deviceZip:
          type: string
        externalPurchaseName:
          type: string
        externalPurchaseOrderId:
          type: string
        purchaseId:
          type: number
        purchaseType:
          type: string
        avgCostCpmUsd:
          type: number
        avgValueCpmUsd:
          type: number
        countPurchaseIdUniqueFaces:
          type: number
        countUniqueDevices:
          type: number
        countDevices:
          type: number
        sumDeviceFaceCount:
          type: number
        sumCostSrcCurrency:
          type: number
        sumCostCents:
          type: number
        sumValueCents:
          type: number
        sumImpressions:
          type: number
        sumPlayCountToDate:
          type: number
        sumCostSrcCurrencyToDate:
          type: number
        sumCostCentsToDate:
          type: number
        sumValueCentsToDate:
          type: number
        sumImpressionsToDate:
          type: number
        sumPlayCount:
          type: number
        minDateHourLocal:
          type: string
        minDateLocal:
          type: string
        maxDateHourLocal:
          type: string
        maxDateLocal:
          type: string
        minAggregatedPlayDataUpdatedEpochMS:
          type: number
        maxAggregatedPlayDataUpdatedEpochMS:
          type: number
        campaignAdvertiserAuth0TeamIdGroup:
          type: string
        contentIdGroup:
          type: number
        dateHourLocalGroup:
          type: string
        dateLocalGroup:
          type: string
        deviceIdGroup:
          type: number
        deviceOwnerIdGroup:
          type: string
        deviceVenueTypeIdGroup:
          type: number
        deviceCbsaCodeGroup:
          type: number
        deviceDmaCodeGroup:
          type: number
        deviceStateGroup:
          type: string
        purchaseIdGroup:
          type: number
    ApiErrorResponse:
      type: object
      title: API Error Response
      required:
        - errors
        - httpStatusCode
      properties:
        errors:
          type: array
          items:
            type: string
          description: List of the errors that occurred
        httpStatusCode:
          type: number
          description: Http status code of this error
        detailCode:
          type: number
          description: Adomni detail status code for this error
    AudienceScore:
      type: object
      title: Audience Score
      description: >-
        For a given location, the composite adomni score along with the
        audiences that went into it
      properties:
        key:
          type: string
        algorithm:
          $ref: '#/components/schemas/AudienceScoreAlgorithm'
        adomniScore:
          type: number
        dmaIndex:
          type: number
    AudienceScoreAlgorithm:
      type: string
      enum:
        - Initial
        - InitialDma
        - RawDma
        - RawNational
        - Caw20190509
      default: Initial
    AudienceScoreRequest:
      type: object
      title: Audience Score Request
      description: Parameters to build an audience score
      properties:
        locationHashes:
          type: array
          items:
            type: string
        audienceSegmentIds:
          type: array
          items:
            type: number
        groupings:
          type: array
          items:
            $ref: '#/components/schemas/NamedLocationHashSet'
        algorithm:
          $ref: '#/components/schemas/AudienceScoreAlgorithm'
    AudienceScoreResponse:
      type: object
      title: Audience Score Response
      description: Response the request for audience scores
      properties:
        request:
          $ref: '#/components/schemas/AudienceScoreRequest'
        missingLocationHashes:
          type: array
          items:
            type: string
        locations:
          type: array
          items:
            $ref: '#/components/schemas/AudienceScore'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/AudienceScore'
    AudienceSegment:
      type: object
      title: AudienceSegment
      description: Describes a particular audience segment
      properties:
        id:
          type: number
        label:
          type: string
        category:
          type: string
        group:
          type: string
        usedInTopAudiences:
          type: boolean
        usedInSummary:
          type: boolean
        ignored:
          type: boolean
        sortOrder:
          type: number
        placeIqId:
          type: string
        miraGuid:
          type: string
        miraType:
          $ref: '#/components/schemas/AudienceSegmentMiraType'
    AudienceSegmentList:
      type: object
      title: Audience Segment List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/AudienceSegment'
        nextToken:
          type: string
    AudienceSegmentMiraType:
      type: string
      enum:
        - FirstParty
        - Standard
    AudienceSummary:
      type: object
      title: Audience Summary
      description: Summary of a given set of audiences
      properties:
        locationHashes:
          type: array
          items:
            type: string
        missingLocationHashes:
          type: array
          items:
            type: string
        demographics:
          type: array
          items:
            $ref: '#/components/schemas/Demographics'
        topBehavioralAudienceSegments:
          type: array
          items:
            $ref: '#/components/schemas/AudienceSegment'
    AudienceSummaryRequest:
      type: object
      title: Audience Summary Request
      description: Parameters to build an audience summary
      properties:
        locationHashes:
          type: array
          items:
            type: string
        algorithm:
          $ref: '#/components/schemas/AudienceScoreAlgorithm'
    AudienceSummaryResponse:
      type: object
      title: Audience Summary Response
      description: Response to an Audience Summary Request
      properties:
        request:
          $ref: '#/components/schemas/AudienceSummaryRequest'
        summary:
          $ref: '#/components/schemas/AudienceSummary'
    BackgroundMetaResponse:
      type: object
      title: Background Meta Response
      description: If
      properties:
        validTypes:
          type: array
          items:
            type: string
        currentQueueLength:
          type: number
    BackgroundProcessRequest:
      type: object
      title: Background Process Request
      description: Current state of a background transaction
      properties:
        guid:
          type: string
        createdEpochMS:
          type: number
        type:
          type: string
        data:
          type: object
    BackgroundProcessStatus:
      type: object
      title: Background Process Status
      description: Current state of a background process
      properties:
        request:
          $ref: '#/components/schemas/BackgroundProcessRequest'
        running:
          type: boolean
        runtimeMS:
          type: number
        result:
          type: object
        error:
          type: object
    BackgroundQueueResponse:
      type: object
      title: Background Queue Response
      description: >-
        When any of the background endpoints are hit, this is what will be
        returned
      required:
        - resultId
        - success
      properties:
        processHandling:
          type: string
          enum:
            - Queued
            - Immediate
        success:
          type: boolean
        resultId:
          type: string
    BoardTag:
      type: object
      title: BoardTag
      description: >-
        Tag assigned to devices, used to note properties about those devices. 
        No relation to \#/Tag
      required:
        - id
        - name
      properties:
        id:
          type: number
        name:
          type: string
          description: human-readable string representation
        category:
          type: string
        shortName:
          type: string
    BuildInfo:
      type: object
      title: Build Info
      properties:
        buildVersion:
          type: string
        buildHash:
          type: string
        buildTag:
          type: string
        buildBranch:
          type: string
        buildTime:
          type: string
    ClientCredentials:
      type: object
      properties:
        client_id:
          type: string
        client_secret:
          type: string
    CommonMetaResponse:
      type: object
      title: Common Meta Response
      properties:
        apiName:
          type: string
        config:
          type: array
          items:
            $ref: '#/components/schemas/SimpleKeyValuePair'
        serverTimePacific:
          type: string
        serverCreatedTimePacific:
          type: string
        database:
          type: string
        dbTunneling:
          type: boolean
        encryptionKeyName:
          type: string
        status:
          type: string
        requestId:
          type: string
        remainMS:
          type: number
        buildInfo:
          $ref: '#/components/schemas/BuildInfo'
        lambdaName:
          type: string
        sourceRequest:
          type: object
        testResults:
          type: object
    ContactRequest:
      type: object
      title: Contact Request
      description: Represents a contact request entry as well as a request
      properties:
        id:
          type: number
        auth0TeamId:
          type: string
        type:
          type: string
        name:
          type: string
        phone:
          type: string
        email:
          type: string
        message:
          type: string
        date:
          type: string
    ContentApprovalSystem:
      type: string
      enum:
        - AdomniByOwner
        - AdomniByAdomni
        - BroadsignReach
        - Hivestack
        - Apparatix
        - Viooh
        - Vistar
        - PlaceExchange
        - AdomniContentSyncTestSystem
    ContentAspectRatioBounds:
      type: object
      description: Defines a range of aspect ratios expressed as floats.
      properties:
        start:
          type: number
          description: The starting aspect ratio as a float.
        end:
          type: number
          description: The ending aspect ratio as a float.
    ContentConversionOptions:
      type: object
      properties:
        allowedExtensionInSeconds:
          type: number
          description: >-
            The number of seconds that a video may be extended by holding the
            final frame.
        allowedTruncationInSeconds:
          type: number
          description: >-
            The number of seconds that are allowed to be trimmed from the end of
            a video.
        allowedEnlargement:
          type: number
          description: >-
            The amount of enlargment allowed.  This is expressed as a float and
            is determined by the source media's area (wxh) compared to the
            destination.
        allowedReduction:
          type: number
          description: >-
            The amount of reduction allowed.  This is expressed as a float and
            is determined by the source media's area (wxh) compared to the
            destination.
        dimensionMappings:
          type: array
          description: >-
            Essentially a set of buckets that determine ranges of aspect ratios
            that are considered to be equal.
          items:
            $ref: '#/components/schemas/ContentDimensionMapping'
    ContentDimensionMapping:
      type: object
      description: Describes a "master size" for a range of aspect ratios.
      properties:
        widthPx:
          type: number
          description: The width in pixels of this master size.
        heightPx:
          type: number
          description: The height in pixels of this master size.
        aspectRatioBounds:
          description: >-
            The range of aspect ratios that should be mapped to this master
            size.
          $ref: '#/components/schemas/ContentAspectRatioBounds'
    ContentExtendedConversionOptions:
      type: object
      description: >-
        Provides an extended set of options to restrict allowed automatic media
        conversion.
      allOf:
        - $ref: '#/components/schemas/ContentConversionOptions'
        - type: object
          properties:
            durationToleranceMs:
              type: number
              description: >-
                A millisecond tolerance when comparing a source and destination
                video durations for equality.
            transformType:
              $ref: '#/components/schemas/ContentTransformType'
              description: >-
                Allowable forms of letterboxing when source and destination are
                determined to be of different aspect ratios.
            mediaTypeConversion:
              $ref: '#/components/schemas/ContentMediaTypeConversion'
              description: >-
                The types of conversions allowed when the source and destination
                are not of the same media type (image vs video, for example),
    ContentMediaTypeConversion:
      type: string
      enum:
        - All
        - None
        - ImageToVideo
        - VideoToImage
      description: >
        Describes conversions when source and destination are not of the same
        type. All -All conversions are allowed. None - No type conversions are
        allowed. ImageToVideo - Images may be converted to video. VideoToImage -
        Video may be converted to a still image.
    ContentSize:
      type: object
      title: Content Size
      properties:
        heightPx:
          type: number
        widthPx:
          type: number
    ContentSizeList:
      type: object
      title: Generic String List
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ContentSize'
    ContentState:
      type: string
      enum:
        - Processing
        - Complete
        - Error
    ContentTransformType:
      type: string
      enum:
        - LetterboxShort
        - LetterboxLong
        - None
      description: >
        Describes a transform used when a source and destination do not have the
        same aspect ratio. LetterboxShort- A transform that adds black bars to
        the short side of media. LetterboxLong - A transform that adds black
        bars to the long side of media. None - No transform
    ContentUploadTargetResponse:
      type: object
      title: Content Upload Target Response
      required:
        - id
        - link
        - expiresEpochMS
      properties:
        id:
          type: string
          description: Identifier for this target (internal use only)
        link:
          type: string
          description: URL to which the content should be POSTed
        expiresEpochMS:
          type: number
          description: EpochMS at which the contained link will expire
    CoreBasedCountyType:
      title: Core Based County Type
      type: string
      enum:
        - Central
        - Outlying
    CoreBasedStatisticalArea:
      type: object
      title: Core Based Statistical Area
      properties:
        cbsaCode:
          type: number
        csaCode:
          type: number
        cbsaTitle:
          type: string
        statisticalAreaType:
          $ref: '#/components/schemas/CoreBasedStatisticalAreaType'
        csaTitle:
          type: string
        usStateLabel:
          type: string
        fipsStateCode:
          type: number
    CoreBasedStatisticalAreaType:
      title: Core Based Statistical Area Type
      type: string
      enum:
        - Micropolitan
        - Metropolitan
    CreateDeviceIdMapFromPoiListBackgroundRequest:
      type: object
      title: Fields required to convert a POI list into a device ID map
      properties:
        poiListId:
          type: number
        savedSearchRequest:
          $ref: '#/components/schemas/SavedSearchRequest'
    CurrencyConversion:
      type: object
      title: Currency Conversion
      properties:
        dateUtc:
          type: string
        currencyCode:
          type: string
        ratePerUsd:
          type: number
    CurrencyConversionRequest:
      title: Currency conversions response wrapper
      type: object
      properties:
        currencyCodes:
          type: array
          items:
            type: string
    CurrencyConversionResponse:
      title: Currency conversions response wrapper
      type: object
      properties:
        currencies:
          type: array
          items:
            $ref: '#/components/schemas/CurrencyConversion'
    DaemonProcessState:
      type: object
      title: Daemon Process State
      required:
        - id
        - startedEpochMS
      properties:
        id:
          type: string
        title:
          type: string
        lastUpdatedEpochMS:
          type: number
        lastUpdatedMessage:
          type: string
        startedEpochMS:
          type: number
        completedEpochMS:
          type: number
        meta:
          type: object
        error:
          type: string
        link:
          type: string
        contentType:
          type: string
    DaemonProcessStateList:
      type: object
      title: Daemon Process State List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DaemonProcessState'
        nextToken:
          type: string
    DateHourFilter:
      title: Date Hour Filter
      type: object
      properties:
        before:
          type: string
        after:
          type: string
    DaysDeviceOpenRtbBidHistory:
      type: object
      title: Device Open Rtb Bid History
      description: One days entries of bid history
      properties:
        deviceId:
          type: number
        dateUtc:
          type: string
        entries:
          type: array
          items:
            $ref: '#/components/schemas/DeviceOpenRtbBidHistory'
    DemographicEntry:
      type: object
      title: Demographic Entry
      description: An entry in a particular demographic set (e.g, men)
      properties:
        segment:
          $ref: '#/components/schemas/AudienceSegment'
        percent:
          type: number
    Demographics:
      type: object
      title: Demographics
      description: A set of demographics (e.g., sex or age)
      properties:
        group:
          type: string
        composition:
          type: array
          items:
            $ref: '#/components/schemas/DemographicEntry'
    DesignatedMarketArea:
      type: object
      title: Designated Market Area
      properties:
        id:
          type: number
        code:
          type: number
        name:
          type: string
        homes:
          type: number
        percent:
          type: number
        rank:
          type: number
        lat:
          type: number
        lng:
          type: number
    DeviceAdvertisingInfo:
      type: object
      title: Device Advertising Info
      description: >-
        Information exposed to advertisers about this device - will be expanded
        over time.
      properties:
        id:
          type: number
          description: Adomnis id for this device
        name:
          type: string
          description: Name of the device
        dwellTime:
          type: number
          description: >-
            The default length of content on this device (and unit of content
            charge) in seconds
        heightPx:
          type: number
          description: The accepted height for content, in pixels
        widthPx:
          type: number
          description: The accepted width for content, in pixels
        screenCount:
          type: number
          description: The number of screens driven by this device
        acceptedContentTypes:
          type: array
          items:
            type: string
        supportsAudio:
          type: boolean
        venueTypeId:
          type: number
          description: Id of the venue type this device is
        venueTypeName:
          type: string
          description: Human-readable description of the venue type this device is
        networkLevel:
          type: string
          enum:
            - Network
            - Physical
          description: >-
            Whether this device is a physical device or virtual (network level)
            device
    DeviceApiDeviceDescriptor:
      description: >-
        A basic descriptor of a device that can be used to create a new device
        or modify an existing device
      allOf:
        - $ref: '#/components/schemas/DeviceApiMinimalDeviceDescriptor'
        - type: object
          properties:
            address:
              $ref: '#/components/schemas/DeviceApiFlexAddress'
            audio:
              $ref: '#/components/schemas/DeviceApiFlexAudio'
              description: Metadata about the devices audio support, if any
            estimatedDailyAdPlays:
              type: number
            estimatedDailyOperatingHours:
              description: >-
                Number of hours, on average, this device is running (used for
                estimating schedules)
              type: number
              minimum: 0
              maximum: 24
            exposureAreaHash:
              type: string
              description: >-
                A non-unique hash of the devices location used to calculate
                exposure area, eg for PlaceIQ
            faceCount:
              type: number
            facingDirectionLabel:
              type: string
            mediaFormats:
              type: array
              items:
                $ref: '#/components/schemas/DeviceApiFlexDeviceMediaFormat'
            deviceLabel:
              type: string
            impressionSourcing:
              $ref: '#/components/schemas/DeviceApiFlexImpressionSourcing'
            payee:
              $ref: '#/components/schemas/DeviceApiFlexOwnerData'
            physicalDimensions:
              $ref: '#/components/schemas/DeviceApiFlexPhysicalDimensions'
            purchaseMethod:
              $ref: '#/components/schemas/DevicePurchaseMethod'
            streamingType:
              $ref: '#/components/schemas/StreamingType'
            thumbnail:
              $ref: '#/components/schemas/DeviceApiFlexContent'
            timeZoneIanaName:
              type: string
              description: Iana name of the time zone in which this device is located
            venueType:
              $ref: '#/components/schemas/DeviceApiFlexIdAndLabel'
            venueLocationType:
              $ref: '#/components/schemas/DeviceApiFlexVenueLocationType'
            operatingHourRestrictions:
              type: array
              items:
                $ref: '#/components/schemas/DeviceApiFlexOperatingHourRestriction'
            spotlightValueCentsPerSlot:
              type: number
            deviceTags:
              type: array
              items:
                $ref: '#/components/schemas/BoardTag'
            tags:
              type: array
              items:
                $ref: '#/components/schemas/DeviceApiFlexDeviceType'
    DeviceApiDeviceUpsertRequest:
      type: object
      title: Device Api Device Upsert Request
      description: >
        Provides a means of create and/or updating Device data in the system.
        This data will then feed the Flex Search Pump.
      properties:
        deviceDescriptor:
          $ref: '#/components/schemas/DeviceApiDeviceDescriptor'
        bypassDeviceIndex:
          type: boolean
    DeviceApiDeviceUpsertResponse:
      type: object
      title: Device Api Device Upsert Response
      description: >
        Provides a means of create and/or updating Device data in the system.
        This data will then feed the Flex Search Pump.
      properties:
        success:
          type: boolean
        deviceId:
          type: number
    DeviceApiFlexAddress:
      type: object
      properties:
        city:
          description: City containing this device
          type: string
        country:
          description: Id of the country containing this device in the Adomni system
          $ref: '#/components/schemas/DeviceApiFlexIdAndLabel'
        county:
          $ref: '#/components/schemas/DeviceApiFlexIdAndLabel'
        googlePlaces:
          type: string
        googleStreetViewUrl:
          type: string
        streetAddressLine1:
          type: string
        streetAddressLine2:
          type: string
        usState:
          $ref: '#/components/schemas/DeviceApiFlexIdAndLabel'
        zipCode:
          type: string
          description: >-
            Zip code containing the device - string since it may have +4 or be
            non-US
        updateEpochMs:
          type: number
          description: >-
            Timestamp for when address was last updated. Set to null when
            lat/lon is updated.
    DeviceApiFlexAudio:
      type: object
      properties:
        mode:
          type: string
          enum:
            - NotSupported
            - Standard
    DeviceApiFlexContent:
      type: object
      properties:
        id:
          type: number
        url:
          type: string
        previewUrl:
          type: string
    DeviceApiFlexDealEntry:
      type: object
      properties:
        dealId:
          type: number
        costCpmUsd:
          type: number
        valueCpmUsd:
          type: number
          description: >-
            The CPM for this deal, after the appropriate Adomni margin is
            applied
    DeviceApiFlexDevice:
      allOf:
        - $ref: '#/components/schemas/DeviceApiDeviceDescriptor'
        - type: object
          properties:
            aspectRatio:
              type: number
              minimum: 0
              description: Ratio of a devices width to its height (w/h)
            auxLocations:
              description: List of other labelled lat/lng pairs relevant to this device
              type: array
              items:
                $ref: '#/components/schemas/DeviceAuxLocation'
            cbsa:
              description: Census Core Based Statistical Area
              $ref: '#/components/schemas/DeviceApiFlexStringIdAndLabel'
            defaultQueueTag:
              type: string
              description: >-
                The tag of the default queue that should be checked for the
                device's play requests
            deviceCluster:
              $ref: '#/components/schemas/DeviceApiFlexDeviceCluster'
            dma:
              $ref: '#/components/schemas/DeviceApiFlexIdAndLabel'
            estimatedImpressionsPerDay:
              description: >-
                Number of impressions, on average, this device is recieves per
                day
              type: number
              minimum: 0
            lastRequestEpochMs:
              type: number
            lastPlayEpochMs:
              type: number
            availableDealIds:
              type: array
              items:
                type: number
            selectedDeal:
              $ref: '#/components/schemas/DeviceApiFlexDealEntry'
            supplyPrediction:
              $ref: '#/components/schemas/DeviceApiFlexDeviceSupplyPrediction'
            updatedEpochMs:
              description: Refers to the time the search index was updated
              type: number
              minimum: 0
            createdEpochMs:
              description: Refers to the time the device was created
              type: number
              minimum: 0
            spotlightSettings:
              $ref: '#/components/schemas/DeviceApiFlexDeviceSpotlightSettings'
            spotlightDeviceGroupId:
              type: number
            recentBidData:
              $ref: '#/components/schemas/DeviceApiFlexDeviceRecentBidData'
    DeviceApiFlexDeviceCluster:
      type: object
      properties:
        deviceClusterId:
          type: number
        center:
          $ref: '#/components/schemas/AdomniGeoLocation'
    DeviceApiFlexDeviceField:
      type: string
      title: Device Api Flex Search response
      enum:
        - AspectRatio
        - AddressCity
        - AddressCountryId
        - AddressCountryLabel
        - AddressCountyId
        - AddressCountyLabel
        - AddressGoogleStreetViewUrl
        - AddressGooglePlaces
        - AddressStreetAddressLine1
        - AddressStreetAddressLine2
        - AddressUsStateId
        - AddressUsStateLabel
        - AddressZipCode
        - AudioMode
        - AuxLocationsLocationType
        - AuxLocationsLat
        - AuxLocationsLon
        - AvailabilityState
        - AverageWinDelayHours
        - CbsaId
        - CbsaLabel
        - DefaultAdDurationSeconds
        - DefaultQueueTag
        - DeviceClusterId
        - DeviceClusterCenter
        - DeviceId
        - DmaId
        - DmaLabel
        - EstimatedDailyAdPlays
        - EstimatedDailyOperatingHours
        - EstimatedImpressionsPerAdPlay
        - ExposureAreaHash
        - FaceCount
        - FacingDirectionLabel
        - HeightPx
        - WidthPx
        - ImpressionSourceId
        - ImpressionSourceTypeId
        - LastRequestEpochMs
        - LastPlayEpochMs
        - Geolocation
        - MediaFormatsFormatId
        - MediaFormatsHeightPx
        - MediaFormatsWidthPx
        - MediaFormatsContentType
        - MediaFormatsDurationSeconds
        - DeviceLabel
        - IntegrationsContentApprovalSystem
        - IntegrationsIntegrationKey
        - IntegrationsSecondaryId
        - IntegrationsIntegrationKeyStatus
        - IntegrationsPlayerSoftwareId
        - IntegrationsPlayerSoftwareLabel
        - IntegrationsPlayerSoftwareGloballyUniqueExternalKey
        - IntegrationsPlayerSoftwareContentApprovalSystem
        - IntegrationsPlayerSoftwareIntegrationType
        - NetworkId
        - NetworkLabel
        - OpaqueKey
        - OwnerAuth0TeamId
        - OwnerOpaqueKey
        - OwnerLabel
        - PayeeAuth0TeamId
        - PayeeOpaqueKey
        - PayeeLabel
        - PhysicalDimensionsDiagonal
        - PhysicalDimensionsHeight
        - PhysicalDimensionsUnits
        - PhysicalDimensionsWidth
        - PurchaseMethod
        - AvailableDealIds
        - SelectedDealId
        - SelectedDealCostCpmUsd
        - StreamingType
        - SupplyPredictionLastHourUpdatedEpochMs
        - SupplyPredictionLastHourSampleCount
        - SupplyPredictionLastHourAverageImpressions
        - SupplyPredictionLastHourAverageCostCpmCents
        - ThumbnailId
        - ThumbnailUrl
        - ThumbnailPreviewUrl
        - TimeZoneIanaName
        - UpdatedEpochMs
        - CreatedEpochMs
        - VenueTypeId
        - VenueTypeLabel
        - OperatingHourRestrictionsDayOfWeek
        - OperatingHourRestrictionsStartHourInclusive
        - OperatingHourRestrictionsStartMinuteInclusive
        - OperatingHourRestrictionsEndHourHourExclusive
        - OperatingHourRestrictionsEndHourMinuteExclusive
        - VenueLocationType
        - Tags
        - SpotlightDeviceGroupId
        - SpotlightValueCentsPerSlot
        - SpotlightSettingsBestViewingLocation
        - SpotlightSettingsMockupBackgroundContentId
        - SpotlightSettingsMockupBackgroundUrl
        - SpotlightSettingsMockupImageLeftPx
        - SpotlightSettingsMockupImageTopPx
        - SpotlightSettingsMockupImageWidthPx
        - SpotlightSettingsLabel
        - SpotlightSettingsOrderCutOffOverrideMs
        - SpotlightSettingsTargetPlays
        - SpotlightSettingsTargetPlaysBonus
        - SpotlightSettingsViewingLocation
    DeviceApiFlexDeviceMediaFormat:
      type: object
      title: Media Format
      description: Described a particular format that content is, or that a device can plan
      properties:
        heightPx:
          type: number
        widthPx:
          type: number
        contentType:
          description: The MimeType of the format, eg image/png, text/html, etc
          type: string
    DeviceApiFlexDeviceRecentBidData:
      type: object
      description: Contains all relevant recent bid data for a device
      properties:
        averageWinDelayHours:
          type: number
          description: The average time between a bid being placed and a win being recorded
        mostRecentWinningAggregatedBidDataEntry:
          description: >-
            The most recent aggregated bid data entry for this device that
            included at least one winning bid
          $ref: '#/components/schemas/AggregatedBidDataEntry'
    DeviceApiFlexDeviceSpotlightSettings:
      type: object
      properties:
        bestViewingLocation:
          $ref: >-
            #/components/schemas/DeviceApiFlexSpotlightSettingsBestViewingLocation
        label:
          type: string
        mockup:
          $ref: '#/components/schemas/DeviceApiFlexSpotlightSettingsMockup'
        orderCutoffOverrideMs:
          type: number
        targetPlays:
          type: number
        targetPlaysBonus:
          type: number
        viewingLocation:
          $ref: '#/components/schemas/DeviceApiFlexSpotlightSettingsViewingLocation'
    DeviceApiFlexDeviceSupplyPrediction:
      type: object
      title: Media Format
      description: Described a particular format that content is, or that a device can plan
      properties:
        lastHour:
          $ref: '#/components/schemas/DeviceApiFlexDeviceSupplyPredictionStats'
    DeviceApiFlexDeviceSupplyPredictionStats:
      type: object
      title: Media Format
      description: Described a particular format that content is, or that a device can plan
      properties:
        updatedEpochMs:
          type: number
        sampleCount:
          type: number
        averageImpressions:
          type: number
        averageCostCpmCents:
          type: number
    DeviceApiFlexDeviceType:
      type: string
      enum:
        - SpotlightTarget
    DeviceApiFlexIdAndLabel:
      type: object
      properties:
        id:
          type: number
        auth0TeamId:
          type: string
        label:
          type: string
    DeviceApiFlexImpressionSourcing:
      type: object
      properties:
        impressionSourceId:
          type: number
        impressionSourceTypeId:
          type: number
    DeviceApiFlexLatLon:
      type: object
      properties:
        lat:
          type: number
        lon:
          type: number
    DeviceApiFlexOperatingHourRestriction:
      type: object
      title: Device Api Flex Operating Hours Range
      properties:
        dayOfWeek:
          type: number
        startHourInclusive:
          type: number
        startMinuteInclusive:
          type: number
        endHourExclusive:
          type: number
        endMinuteExclusive:
          type: number
    DeviceApiFlexOwnerData:
      type: object
      properties:
        auth0TeamId:
          type: string
        opaqueKey:
          type: string
        label:
          type: string
    DeviceApiFlexPhysicalDimensions:
      type: object
      properties:
        diagonal:
          type: number
        height:
          type: number
        units:
          $ref: '#/components/schemas/DevicePhysicalSizeUnits'
        width:
          type: number
    DeviceApiFlexPlayerAndIntegration:
      type: object
      properties:
        contentApprovalSystem:
          description: System used to approve content for this device
          $ref: '#/components/schemas/ContentApprovalSystem'
        integrationKey:
          type: string
        secondaryId:
          type: string
          description: >-
            Internal id of this device in the owners system - string since
            Adomni does not have control
        integrationKeyStatus:
          type: string
          enum:
            - NotApplicable
            - Valid
            - Invalid
        playerSoftware:
          $ref: '#/components/schemas/DeviceApiFlexPlayerSoftware'
    DeviceApiFlexPlayerSoftware:
      type: object
      properties:
        id:
          type: number
        label:
          type: string
        integrationType:
          type: string
          enum:
            - Vast
            - OpenRtb
        contentApprovalSystem:
          type: string
    DeviceApiFlexPumpSearchRequest:
      type: object
      title: Device Api Flex Search Request to trigger the pump
      properties:
        deviceUpdatedAfterEpochMs:
          type: number
        deviceRangeIdStartInclusive:
          type: number
        deviceRangeIdEndExclusive:
          type: number
        deviceIds:
          type: array
          items:
            type: number
    DeviceApiFlexSearchAggregation:
      title: Device Api Flex Search aggs
      type: object
      properties:
        type:
          $ref: '#/components/schemas/DeviceApiFlexSearchAggregationType'
        label:
          type: string
        groupBy:
          $ref: '#/components/schemas/DeviceApiFlexSearchAggregationGroupBy'
    DeviceApiFlexSearchAggregationGroupBy:
      title: Device Api Flex Search aggs
      type: object
      properties:
        pageSize:
          type: number
        fields:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiFlexDeviceField'
        topValues:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiFlexSearchAggregationTopValue'
    DeviceApiFlexSearchAggregationTopValue:
      title: Device Api Flex Search aggs
      type: object
      properties:
        size:
          type: number
        field:
          $ref: '#/components/schemas/DeviceApiFlexDeviceField'
    DeviceApiFlexSearchAggregationType:
      title: Device Api Flex Search aggs
      type: string
      enum:
        - Checksum
        - GlobalMetrics
        - LocationBoundingBox
        - UniqueAssignedTags
    DeviceApiFlexSearchExecutionStrategy:
      type: string
      enum:
        - Paged
        - SlicedScroll
        - Scroll
        - Test
    DeviceApiFlexSearchMetaIncludes:
      type: string
      enum:
        - DebugQuery
        - DebugTimings
        - Request
    DeviceApiFlexSearchRequest:
      type: object
      title: Device Api Flex Search Request
      description: >
        Requests device details by saved search. We need to be careful to limit
        the number of devices returned or it'll return the whole database. Note
        for now this is the same as DeviceDetailsBySavedSearchRequest, but
        making a separate object so it can vary in the meantime if we need it to
        before the DeviceDetailsBySavedSearchRequest object is removed.
      properties:
        search:
          $ref: '#/components/schemas/SavedSearchRequest'
        storedSearch:
          $ref: '#/components/schemas/DeviceApiFlexSearchRequestStoredSearch'
        projection:
          $ref: '#/components/schemas/DeviceApiFlexSearchRequestProjection'
        pagination:
          $ref: '#/components/schemas/DeviceApiFlexSearchRequestPagination'
        aggregations:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiFlexSearchAggregation'
        settings:
          $ref: '#/components/schemas/DeviceApiFlexSearchRequestSettings'
        sort:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiFlexSearchRequestSort'
        mvt:
          $ref: '#/components/schemas/DeviceApiFlexSearchRequestMvt'
    DeviceApiFlexSearchRequestMvt:
      type: object
      title: Device Api Flex Search Request search access object.
      properties:
        x:
          type: number
        'y':
          type: number
        z:
          type: number
        geometry:
          type: string
        renderMethod:
          type: string
    DeviceApiFlexSearchRequestPagination:
      type: object
      title: Device Api Flex Search Request pagination object
      properties:
        from:
          type: number
        searchAfter:
          type: array
          items: {}
    DeviceApiFlexSearchRequestProjection:
      type: object
      title: Device Api Flex Search Request field projection object
      properties:
        includeFields:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiFlexDeviceField'
        excludeFields:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiFlexDeviceField'
    DeviceApiFlexSearchRequestSettings:
      type: object
      title: Device Api Flex Search Request field projection object
      properties:
        index:
          type: string
        pageSize:
          type: number
        trackTotalHits:
          type: boolean
        metaIncludes:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiFlexSearchMetaIncludes'
        executionStrategy:
          $ref: '#/components/schemas/DeviceApiFlexSearchExecutionStrategy'
        includeUniqueThumbnailUrls:
          type: boolean
    DeviceApiFlexSearchRequestSort:
      type: object
      title: Device Api Flex Search Request pagination object
      properties:
        field:
          $ref: '#/components/schemas/DeviceApiFlexDeviceField'
        direction:
          $ref: '#/components/schemas/PaginationSortDirection'
    DeviceApiFlexSearchRequestStoredSearch:
      type: object
      title: Device Api Flex Search Request search access object.
      properties:
        requestingAuth0TeamId:
          type: string
        searchId:
          type: string
    DeviceApiFlexSearchResponse:
      type: object
      title: Device Api Flex Search response
      properties:
        success:
          type: boolean
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiFlexDevice'
        aggregations:
          $ref: '#/components/schemas/DeviceApiFlexSearchResponseAggregations'
        pagination:
          $ref: '#/components/schemas/DeviceApiFlexSearchResponsePagination'
        meta:
          $ref: '#/components/schemas/DeviceApiFlexSearchResponseMeta'
    DeviceApiFlexSearchResponseAggregations:
      type: object
      title: Device Api Flex Search response
      properties:
        labeledResults:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: >-
                #/components/schemas/DeviceApiFlexSearchResponseLabeledAggregation
    DeviceApiFlexSearchResponseLabeledAggregation:
      type: object
      title: Device Api Flex Search response
      properties:
        label:
          type: string
        key:
          type: string
        topValues:
          type: array
          items:
            type: object
    DeviceApiFlexSearchResponseMeta:
      type: object
      title: Device Api Flex Search response meta
      properties:
        query:
          type: object
        index:
          type: string
        savedSearchId:
          type: number
        adomniCommissionPercent:
          type: number
        queryBuildStartEpochMs:
          type: number
        preferredSupplyOwners:
          type: array
          items:
            type: number
        preferredSupplyOwnerAuth0TeamIds:
          type: array
          items:
            type: string
        request:
          $ref: '#/components/schemas/DeviceApiFlexSearchRequest'
    DeviceApiFlexSearchResponsePagination:
      type: object
      title: Device Api Flex Search response pagination
      properties:
        totalHits:
          type: number
        totalHitsRelation:
          $ref: '#/components/schemas/DeviceApiFlexSearchResponsePaginationRelation'
    DeviceApiFlexSearchResponsePaginationRelation:
      type: string
      enum:
        - Eq
        - Gte
    DeviceApiFlexSpotlightSettingsBestViewingLocation:
      type: object
      properties:
        lat:
          type: number
        lng:
          type: number
    DeviceApiFlexSpotlightSettingsMockup:
      type: object
      properties:
        backgroundContentId:
          type: number
        backgroundUrl:
          type: string
        imageLeftPx:
          type: number
        imageTopPx:
          type: number
        imageWidthPx:
          type: number
    DeviceApiFlexSpotlightSettingsViewingLocation:
      type: string
      enum:
        - Scattered
        - SameLocation
    DeviceApiFlexStringIdAndLabel:
      type: object
      properties:
        id:
          type: string
        label:
          type: string
    DeviceApiFlexVenueLocationType:
      type: string
      enum:
        - Indoor
        - Outdoor
    DeviceApiLocationPoi:
      type: object
      title: A point of interest
      properties:
        poiId:
          type: number
        poiLabel:
          type: string
        streetAddress:
          $ref: '#/components/schemas/StreetAddressWithLatLng'
        cbsa:
          $ref: '#/components/schemas/CoreBasedStatisticalArea'
        brandIds:
          type: array
          items:
            type: string
        brands:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiLocationPoiBrand'
        category:
          $ref: '#/components/schemas/DeviceApiLocationPoiCategory'
        source:
          $ref: '#/components/schemas/DeviceApiLocationPoiSource'
        sourceKey:
          type: string
        thirdPartyMeta:
          $ref: '#/components/schemas/DeviceApiLocationPoiThirdPartyMeta'
    DeviceApiLocationPoiBrand:
      type: object
      title: A brand by which points of interest can be grouped
      properties:
        brandId:
          type: number
        brandLabel:
          type: string
        source:
          $ref: '#/components/schemas/DeviceApiLocationPoiSource'
        sourceKey:
          type: string
    DeviceApiLocationPoiBrandList:
      type: object
      title: A list of POI brands
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiLocationPoiBrand'
    DeviceApiLocationPoiCategory:
      type: object
      title: A category by which points of interest can be grouped
      properties:
        categoryId:
          type: number
        categoryLabel:
          type: string
        source:
          $ref: '#/components/schemas/DeviceApiLocationPoiSource'
        sourceKey:
          type: string
    DeviceApiLocationPoiCategoryList:
      type: object
      title: A list of POI categories
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiLocationPoiCategory'
    DeviceApiLocationPoiList:
      type: object
      title: A list of points of interest
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiLocationPoi'
        pagination:
          $ref: '#/components/schemas/PaginationObjectWithTotal'
    DeviceApiLocationPoiSafeGraphMeta:
      type: object
      title: Meta data specific to SafeGraph
      properties:
        categoryTags:
          type: array
          items:
            type: string
        openedOn:
          type: string
        closedOn:
          type: string
    DeviceApiLocationPoiSource:
      type: string
      enum:
        - SafeGraph
    DeviceApiLocationPoiThirdPartyMeta:
      type: object
      title: >-
        Allows for a specific third party provider to attach meta data specific
        to their data set. Add additional providers as properties referencing
        the provider's meta data object.
      properties:
        safeGraph:
          $ref: '#/components/schemas/DeviceApiLocationPoiSafeGraphMeta'
    DeviceApiMinimalDeviceDescriptor:
      type: object
      description: >-
        Minial device fields, the ones cached so that the OpenRTB and Vast
        services can work while reading as little as possible
      required:
        - deviceId
      properties:
        deviceId:
          type: number
        opaqueKey:
          type: string
        ownerAuth0TeamId:
          type: string
        owner:
          $ref: '#/components/schemas/DeviceApiFlexOwnerData'
        network:
          $ref: '#/components/schemas/DeviceApiFlexIdAndLabel'
        heightPx:
          type: number
        geolocation:
          $ref: '#/components/schemas/DeviceApiFlexLatLon'
        availabilityState:
          description: Current level of availablily for purchase
          $ref: '#/components/schemas/DeviceAvailabilityState'
        widthPx:
          type: number
        integrations:
          description: >-
            There must be at least 1 of these - a pair of player software and
            integration key
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiFlexPlayerAndIntegration'
        defaultAdDurationSeconds:
          type: number
        estimatedImpressionsPerAdPlay:
          description: >-
            Number of impressions, on average, this device is recieves per play
            (used for estimating schedules)
          type: number
          minimum: 0
    DeviceApiSupplyPredictionDeviceSourceData:
      type: object
      title: Device Api Supply Prediction Device Source Data
      properties:
        deviceId:
          type: number
        nowEpochMS:
          type: number
        dailyAdPlays:
          type: number
        adomniCommission:
          type: number
        viewsPerPlay:
          type: number
        pricePerAd:
          type: number
        cpm:
          type: number
        costPerAd:
          type: number
        costCpm:
          type: number
        lastHourDataExists:
          type: boolean
        lastHourUpdatedEpochMs:
          type: number
        lastHourSampleCount:
          type: number
        lastHourAverageImpressions:
          type: number
        lastHourCpmCostCents:
          type: number
    DeviceApiSupplyPredictionRequest:
      type: object
      title: Device Api Supply Prediction Request
      required:
        - search
      properties:
        search:
          $ref: '#/components/schemas/SavedSearchRequest'
    DeviceApiSupplyPredictionResponse:
      type: object
      title: Device Api Supply Prediction Response
      properties:
        request:
          $ref: '#/components/schemas/DeviceApiSupplyPredictionRequest'
        entries:
          type: array
          items:
            $ref: '#/components/schemas/DeviceApiSupplyPredictionDeviceSourceData'
    DeviceAuxLocation:
      type: object
      properties:
        deviceId:
          type: number
        locationType:
          $ref: '#/components/schemas/DeviceAuxLocationType'
        lat:
          type: number
        lng:
          type: number
    DeviceAuxLocationType:
      type: string
      enum:
        - BestViewing
    DeviceAvailabilityState:
      type: string
      title: Describes the availability of a given device
      enum:
        - Test
        - Unlisted
        - Presale
        - Available
        - Deleted
    DeviceCluster:
      type: object
      title: A device cluster
      properties:
        deviceClusterId:
          type: number
        center:
          $ref: '#/components/schemas/AdomniGeoLocation'
    DeviceClusterWeatherCache:
      type: object
      title: An hour of cached weather for a device cluster
      properties:
        deviceClusterId:
          type: number
        dateHourUtc:
          type: string
        temperature:
          type: number
        precipitationType:
          type: string
        highPollenCount:
          type: boolean
        highUvIndex:
          type: boolean
    DeviceClusterWeatherResponse:
      type: object
      title: Response to a request for a device cluster's cached weather
      properties:
        hours:
          type: array
          items:
            $ref: '#/components/schemas/DeviceClusterWeatherCache'
    DeviceClustersRequest:
      type: object
      title: Filtration parameters for device clusters - at least one is required.
      properties:
        deviceClusterIds:
          type: array
          items:
            type: number
        deviceIds:
          type: array
          items:
            type: number
    DeviceClustersResponse:
      type: object
      title: Response to a device clusters request
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/DeviceCluster'
    DeviceCreateAndUpdateTimeParams:
      type: object
      title: Device Create And Update Time Params
      properties:
        createdEpochMs:
          $ref: '#/components/schemas/NumberRange'
        updatedEpochMs:
          $ref: '#/components/schemas/NumberRange'
    DeviceDetailView:
      type: object
      title: Device Detail View
      description: >-
        TODO-JF-figure out which properties can/should be moved over from
        DeviceThinView to DeviceDetailView
      required:
        - live
      allOf:
        - $ref: '#/components/schemas/DeviceThinView'
        - type: object
          properties:
            selectedDealId:
              type: number
            cpmUsd:
              type: number
            venueTypeId:
              type: number
            venueTypeName:
              type: string
            ownerLabel:
              type: string
            invalidIntegrationKey:
              type: boolean
            lastHeartbeatEpochMS:
              type: number
              description: The last heartbeat this device sent to Adomni
            availabilityState:
              $ref: '#/components/schemas/DeviceAvailabilityState'
    DeviceDetailViewList:
      type: object
      title: Device Detail View List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceDetailView'
        pagination:
          $ref: '#/components/schemas/PaginationObjectWithTotal'
    DeviceDetailsBySavedSearchRequest:
      type: object
      title: Device Details by Saved Search Request
      description: >-
        Requests device details by saved search. We need to be careful to limit
        the number of devices returned or it'll return the whole database.
      properties:
        search:
          $ref: '#/components/schemas/SavedSearchRequest'
        pagination:
          $ref: '#/components/schemas/PaginationObjectWithTotal'
    DeviceErrorRecord:
      type: object
      title: Device DeviceErrorRecord
      description: Error record for a device
      properties:
        serverDeviceId:
          type: string
        serverType:
          type: string
        recordedMinuteUtc:
          type: string
        recordedMinuteUtcSpreadIndex:
          type: string
        deviceId:
          type: number
          description: The id of the device to which this record pertains
        recordedEpochMS:
          type: number
          description: Time the error was recorded
        errorType:
          type: string
          enum:
            - Vast
        notes:
          type: string
          description: Text of the error
        vastErrorDetails:
          $ref: '#/components/schemas/DeviceErrorRecordVastDetails'
        ext:
          type: object
          description: Any associated debugging data
    DeviceErrorRecordList:
      type: object
      title: Device Error Record List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceErrorRecord'
        pagination:
          $ref: '#/components/schemas/PaginationObject'
    DeviceErrorRecordVastDetails:
      type: object
      title: Device Error Record Vast Details
      properties:
        code:
          type: number
        message:
          type: string
    DeviceExecuteMode:
      type: string
      enum:
        - DEFAULT
      x-enum-varnames:
        - Default
      description: The mode this device currently executes in
    DeviceExternalKeyLookupRequest:
      type: object
      properties:
        deviceIds:
          type: array
          items:
            type: number
    DeviceExternalKeyLookupResponse:
      type: object
      properties:
        providers:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
    DeviceFilter:
      type: object
      title: Device Filter
      properties:
        filterType:
          $ref: '#/components/schemas/DeviceFilterTypes'
        direction:
          $ref: '#/components/schemas/DeviceFilterDirection'
        customerLabel:
          type: string
        aspectRatioList:
          $ref: '#/components/schemas/GenericStringList'
        ownerAuth0TeamIdList:
          $ref: '#/components/schemas/GenericStringList'
        deviceIdList:
          $ref: '#/components/schemas/GenericNumberList'
        contentSizeList:
          $ref: '#/components/schemas/ContentSizeList'
        contentTypeRegexList:
          $ref: '#/components/schemas/GenericStringList'
        cpmCentsMinMax:
          $ref: '#/components/schemas/NumberMinMax'
        audienceScoreMinMax:
          $ref: '#/components/schemas/NumberMinMax'
        venueTypeIdList:
          $ref: '#/components/schemas/GenericNumberList'
        mediaTypeIdList:
          $ref: '#/components/schemas/GenericNumberList'
        remoteAccessStatusList:
          $ref: '#/components/schemas/GenericStringList'
        playerSoftwareIdList:
          $ref: '#/components/schemas/GenericNumberList'
        minutesSinceLastContactMinMax:
          $ref: '#/components/schemas/NumberMinMax'
        namePatternList:
          $ref: '#/components/schemas/GenericStringList'
        playerVersionList:
          $ref: '#/components/schemas/GenericStringList'
        excludeMinimumSpend:
          type: boolean
          default: false
        supportSmartSearch:
          type: string
        estimatedImpressionsPerAdPlayMinMax:
          $ref: '#/components/schemas/NumberMinMax'
        deviceIdRange:
          $ref: '#/components/schemas/NumberRange'
        deviceCreateAndUpdateTime:
          $ref: '#/components/schemas/DeviceCreateAndUpdateTimeParams'
        deviceTagList:
          $ref: '#/components/schemas/DeviceTagList'
        lastRequestTimeMinMax:
          $ref: '#/components/schemas/NumberMinMax'
        spotlightDeviceGroupIdList:
          $ref: '#/components/schemas/GenericNumberList'
        deviceScreenOrientations:
          type: array
          items:
            $ref: '#/components/schemas/DeviceScreenOrientation'
    DeviceFilterDirection:
      type: string
      title: Device Filter Direction
      enum:
        - OnlyThese
        - ExcludeThese
    DeviceFilterTypes:
      type: string
      title: Device Filter Types
      enum:
        - AspectRatioList
        - AudienceScoreMinMax
        - ContentSizeList
        - ContentTypeList
        - CpmCentsMinMax
        - DeviceCreateAndUpdateTime
        - DeviceIdList
        - DeviceIdRange
        - DeviceScreenOrientation
        - DeviceTagList
        - EstimatedImpressionsPerAdPlayMinMax
        - ExcludeMinimumSpend
        - LastRequestTimeMinMax
        - MediaTypeIdList
        - MinutesSinceLastContactMinMax
        - NamePatternList
        - OwnerAuth0TeamIdList
        - PlayerSoftwareIdList
        - PlayerVersionList
        - RemoteAccessStatusList
        - SpotlightDeviceGroupIdList
        - SupportSmartSearch
        - VenueTypeIdList
    DeviceFinder:
      type: object
      title: Device Finder
      properties:
        finderType:
          $ref: '#/components/schemas/DeviceFinderTypes'
        customerLabel:
          type: string
        deviceIdList:
          $ref: '#/components/schemas/GenericNumberList'
        ownerAuth0TeamIdList:
          $ref: '#/components/schemas/GenericStringList'
        orderIdList:
          $ref: '#/components/schemas/GenericNumberList'
        locationList:
          $ref: '#/components/schemas/DeviceFinderLocationListParams'
        dmaIdList:
          $ref: '#/components/schemas/GenericNumberList'
        cbsaCodeList:
          $ref: '#/components/schemas/GenericNumberList'
        countryIdList:
          $ref: '#/components/schemas/GenericNumberList'
        countyIdList:
          $ref: '#/components/schemas/GenericNumberList'
        stateIdList:
          $ref: '#/components/schemas/GenericNumberList'
        geoFenceList:
          $ref: '#/components/schemas/DeviceFinderGeoFenceListParams'
        polygonList:
          $ref: '#/components/schemas/DeviceFinderPolygonList'
        postalCodeList:
          type: array
          items:
            $ref: '#/components/schemas/InternationalPostalCode'
        googlePlacesList:
          $ref: '#/components/schemas/GenericStringList'
        pointsOfInterestListIdList:
          $ref: '#/components/schemas/GenericNumberList'
        pointsOfInterestListIdDeviceIdMap:
          $ref: '#/components/schemas/GenericNumberList'
        deviceIdRange:
          $ref: '#/components/schemas/NumberRange'
        deviceCreateAndUpdateTime:
          $ref: '#/components/schemas/DeviceCreateAndUpdateTimeParams'
    DeviceFinderGeoFenceListParams:
      type: object
      title: Device Finder Geo Fence List Params
      properties:
        geofences:
          type: array
          items:
            $ref: '#/components/schemas/GeoFenceBound'
    DeviceFinderLocationListParams:
      type: object
      title: Device Finder Location List Params
      properties:
        geoLocationList:
          type: array
          items:
            $ref: '#/components/schemas/AdomniGeoLocation'
        radiusMiles:
          type: number
    DeviceFinderPolygonList:
      type: object
      title: Device Finder Polygon List
      properties:
        polygons:
          type: array
          items:
            $ref: '#/components/schemas/GeoJsonFeature'
    DeviceFinderTypes:
      type: string
      title: Device Finder Types
      enum:
        - Global
        - DeviceIdList
        - LocationList
        - DmaIdList
        - CbsaCodeList
        - CountyIdList
        - CountryIdList
        - StateIdList
        - GeoFenceList
        - PolygonList
        - PostalCodeList
        - GooglePlaceList
        - OwnerAuth0TeamIdList
        - OrderIdList
        - PointsOfInterestListIdList
        - PointsOfInterestListIdDeviceIdMap
        - DeviceIdRange
        - DeviceCreateAndUpdateTime
    DeviceHeartbeat:
      type: object
      title: Device Heartbeat
      description: Heartbeat record for a device
      properties:
        src:
          type: string
          description: The source of the heartbeat record
        timestamp:
          type: number
          description: The time the heartbeat was recorded in epoch MS
        notes:
          type: string
    DeviceImport:
      type: object
      title: Device Import
      properties:
        id:
          type: number
        importType:
          $ref: '#/components/schemas/DeviceImportType'
        importFileId:
          type: string
        description:
          type: string
        status:
          type: string
          enum:
            - InProgress
            - Complete
            - Error
        error:
          type: string
        errorDetails:
          type: string
        deviceSuccessfulCount:
          type: number
        deviceCount:
          type: number
        importedCsv:
          type: string
        createdEpochMs:
          type: number
        updatedEpochMs:
          type: number
        auth0UserId:
          type: string
          description: The team that initiated the import
        user:
          $ref: '#/components/schemas/AdomniUser'
    DeviceImportBatchId:
      type: object
      required:
        - batchId
      properties:
        batchId:
          type: string
    DeviceImportList:
      type: object
      title: Device Imports List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceImport'
        pagination:
          $ref: '#/components/schemas/PaginationObjectWithTotal'
    DeviceImportListRequestIncludes:
      type: string
      enum:
        - ImportCsv
        - Users
    DeviceImportQueueRequest:
      type: object
      title: Create a new Device Import
      required:
        - importType
        - description
      properties:
        importType:
          $ref: '#/components/schemas/DeviceImportType'
        flatfileImport:
          $ref: '#/components/schemas/DeviceImportBatchId'
        description:
          type: string
    DeviceImportType:
      type: string
      enum:
        - Flatfile
    DeviceLatestContactRecord:
      type: object
      properties:
        deviceId:
          type: number
        lastContactEpochMS:
          type: number
        lastRequestEpochMS:
          type: number
        lastPlayEpochMS:
          type: number
    DeviceLatestContactRecordRequest:
      type: object
      properties:
        deviceIds:
          type: array
          items:
            type: number
    DeviceLatestContactRecordResponse:
      type: object
      properties:
        request:
          $ref: '#/components/schemas/DeviceLatestContactRecordRequest'
        entries:
          type: array
          items:
            $ref: '#/components/schemas/DeviceLatestContactRecord'
    DeviceLocationDetails:
      type: object
      title: Device Location Information
      properties:
        streetAddress:
          $ref: '#/components/schemas/StreetAddressWithLatLng'
        cbsa:
          $ref: '#/components/schemas/CoreBasedStatisticalArea'
        dma:
          $ref: '#/components/schemas/LocationDmaEntry'
        facingDirectionName:
          type: string
        image:
          type: string
    DeviceMRSSRequestRecord:
      type: object
      title: Device MRSS Request Record
      description: MRSS Reqeust/Response record for a device
      properties:
        timestamp:
          type: number
          description: The time the request was issued
        payload:
          type: string
          description: The response sent to the device
    DeviceNetworkDetails:
      type: object
      title: Device Network Details
      description: Information about the network a device belongs to, if any
      properties:
        name:
          type: string
          description: Name of the network
        id:
          type: number
          description: ID of the network
    DeviceOmniView:
      type: object
      title: Device Omni View
      required:
        - builtEpochMS
        - details
        - live
      allOf:
        - $ref: '#/components/schemas/DeviceDetailView'
        - type: object
          properties:
            heartbeat:
              type: array
              description: The last heartbeats sent from this device (up to 5)
              items:
                $ref: '#/components/schemas/DeviceHeartbeat'
            lastLocation:
              type: object
              description: The last geolocation of this device
            played:
              type: array
              description: The last played records sent from this device (up to 5)
              items:
                $ref: '#/components/schemas/V2PlayRecord'
            vastRequest:
              type: array
              description: The latest VAST requests for this device (up to 5)
              items:
                $ref: '#/components/schemas/DeviceVastRequestRecord'
            openRTB:
              type: array
              description: The latest OpenRTB requests for this device (up to 5)
              items:
                $ref: '#/components/schemas/OpenRtbCompositeTransactionRecord'
            queuePlayRequest:
              type: array
              description: Upcoming queued play requests for this device
              items:
                $ref: '#/components/schemas/QueuePlayerEntry'
            auxLocations:
              type: array
              description: Extra location data.
              items:
                $ref: '#/components/schemas/DeviceAuxLocation'
            mrss:
              $ref: '#/components/schemas/DeviceMRSSRequestRecord'
            lastError:
              $ref: '#/components/schemas/DeviceErrorRecord'
            deviceTimeZoneName:
              type: string
              default: Etc/UTC
            lastContactEpochMS:
              type: number
              description: The last time this device contacted Adomni in any way
            lastContactMethod:
              type: string
              description: The last time this device contacted Adomni it was in this way
              enum:
                - TBD
                - HEARTBEAT
                - PLAY_RECORD
                - VAST_REQUEST
                - OPEN_RTB
                - MRSS
              x-enum-varnames:
                - Tbd
                - Heartbeat
                - PlayRecord
                - VastRequest
                - OpenRtb
                - Mrss
            supplyPrediction:
              $ref: '#/components/schemas/DevicePricingAndSupplySummary'
            deviceLocation:
              $ref: '#/components/schemas/DeviceLocationDetails'
    DeviceOmniViewExcludes:
      type: string
      title: Device Omni View Excludes
      description: >-
        This is a 100% temporary/throw away. It is just needed to fix particular
        requests with too much data in their response. This will all be scrapped
        once the new device architecure similar to APD is in place.
      enum:
        - OpenRtbRawData
    DeviceOpenRtbBidHistory:
      type: object
      title: Device Open Rtb Bid History
      description: One hours entry in the device open rtb bid history
      properties:
        deviceId:
          type: number
        dateUtc:
          type: string
        hourUtc:
          type: number
        maxBidFloor:
          type: number
        minBidFloor:
          type: number
        avgBidFloor:
          type: number
        maxBid:
          type: number
        minBid:
          type: number
        avgBid:
          type: number
        maxBidFloorPerPlay:
          type: number
        minBidFloorPerPlay:
          type: number
        avgBidFloorPerPlay:
          type: number
        maxImpressions:
          type: number
        minImpressions:
          type: number
        avgImpressions:
          type: number
        requestCount:
          type: number
        bidCount:
          type: number
        winCount:
          type: number
        playCount:
          type: number
    DeviceOwnersRevenueReportRequest:
      title: Device Owners Revenue Report Request
      description: This is a definition for multiple device owners revenue report requests.
      type: object
      properties:
        requestingAuth0TeamId:
          type: string
          description: Team Id for the team that requests the report
        ownerAuth0TeamIds:
          type: array
          items:
            type: string
          description: >-
            Owner(s) for which to run the report.  If global user, this is
            required.  If not, it will be force set to user
        appliedTimeZoneName:
          type: string
          default: Etc/UTC
        startDate:
          description: If set, only data on or after this date will be returned
          type: string
          pattern: \d\d\d\d-\d\d-\d\d
        endDate:
          description: If set, only data before this date will be returned
          type: string
          pattern: \d\d\d\d-\d\d-\d\d
        summaryLevel:
          description: >-
            If set, aggregates the data to the set level, defaults to Hour
            otherwise
          $ref: '#/components/schemas/ReportSummaryLevel'
        includeDetailData:
          description: >
            if set to true, the full details will be included (the entries field
            of the response is null otherwise)
          type: boolean
          default: false
    DevicePhysicalSizeUnits:
      type: string
      enum:
        - Feet
        - Inches
    DevicePlayerSoftware:
      type: object
      title: Device Player Software information
      properties:
        id:
          type: number
        name:
          type: string
        integrationType:
          type: string
          enum:
            - Vast
            - OpenRtb
        globallyUniqueExternalKey:
          type: number
        contentApprovalSystem:
          type: string
        availabilityState:
          $ref: '#/components/schemas/DevicePlayerSoftwareAvailabilityState'
    DevicePlayerSoftwareAvailabilityState:
      type: string
      title: Describes the availability of a given device
      enum:
        - Test
        - Unlisted
        - Available
        - Deleted
    DevicePlayerSoftwareList:
      type: object
      title: Device PlayerSoftwareList
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DevicePlayerSoftware'
        nextToken:
          type: string
    DevicePricingAndPlayDataMethod:
      title: Device Pricing And Play Data Method
      type: string
      enum:
        - OpenRtb
        - Standard
        - OpenRtbLastHour
        - OpenRtbNoData
        - LastHour
        - NoDataFound
    DevicePricingAndSupplySummary:
      title: Device Pricing And Supply Summary
      type: object
      properties:
        deviceId:
          type: number
        standard:
          $ref: '#/components/schemas/SupplyPrediction'
        lastHour:
          $ref: '#/components/schemas/SupplyPrediction'
    DevicePurchaseMethod:
      title: Device Purchase Method
      type: string
      enum:
        - Standard
        - NonProgrammaticOnly
        - ProgrammaticOnly
    DeviceScreenOrientation:
      type: string
      title: Device Screen Orientation
      enum:
        - Portrait
        - Landscape
        - Square
    DeviceScreenSize:
      type: object
      title: Device Screen Size
      properties:
        width:
          type: number
          description: The screen width in pixels
        height:
          type: number
          description: The screen height in pixels
    DeviceScreenSizesResponse:
      type: object
      title: Device Screen Sizes Response
      properties:
        results:
          type: array
          description: Map of the devices screen sizes available
          items:
            $ref: '#/components/schemas/DeviceScreenSize'
        nextTokenString:
          type: string
    DeviceTagList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/BoardTag'
    DeviceThinView:
      type: object
      title: Device Thin View
      required:
        - builtEpochMS
      properties:
        builtEpochMS:
          type: number
          description: When this thin view object was built expressed in Epoch MS
        networkDetails:
          $ref: '#/components/schemas/DeviceNetworkDetails'
        key:
          type: string
          description: Key used by the device to identify itself
        deviceId:
          type: string
          description: The device's unique identifier
        name:
          type: string
          description: The name of the device as shown on the site
        secondaryId:
          type: string
          description: The third-party identifier for the device
        integrationKey:
          type: string
          description: The integration key of this device, if any
        playerSoftwareId:
          type: number
          description: The type of player this device uses
        vast:
          type: boolean
          description: Whether this devices uses VAST. If false it uses OpenRTB.
        ownerAuth0TeamId:
          type: string
          description: The device's owner's unique identifier
        locationHash:
          type: string
          description: Location hash used for audience identification
        mode:
          $ref: '#/components/schemas/DeviceExecuteMode'
        advertisingInfo:
          $ref: '#/components/schemas/DeviceAdvertisingInfo'
        streamingType:
          $ref: '#/components/schemas/StreamingType'
    DeviceThinViewList:
      type: object
      title: Device Thin View List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceThinView'
        nextToken:
          type: string
    DeviceVastRequestRecord:
      type: object
      title: Device Vast Request Record
      description: Information about a VAST request to a device
      properties:
        serverBoardId:
          type: string
        timestamp:
          type: number
          description: The time the request was recorded in epoch MS
        expires:
          type: number
          description: The time the request will be auto-deleted in epoch seconds
        payload:
          $ref: '#/components/schemas/VastPayload'
        srcIp:
          type: string
          description: Source IP of the request
        stage:
          type: string
          description: API Stage that serviced the request
        templateName:
          type: string
          description: Which VAST template was processed
        unitIds:
          type: array
          description: Customer supplied unit ids used
          items:
            type: string
        requestLocation:
          $ref: '#/components/schemas/AdomniGeoLocation'
        minuteUTC:
          type: string
        version:
          type: string
        key:
          type: string
        keyType:
          type: string
    DeviceVastRequestRecordList:
      type: object
      title: Device Vast Request Record List
      description: List of VAST requests
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceVastRequestRecord'
        nextToken:
          type: string
    DeviceVastRequestRecordSearchRequest:
      title: Device Vast Request Record Search Request
      type: object
      required:
        - deviceId
      properties:
        deviceId:
          type: number
        startInclusiveEpochMS:
          type: number
        endExclusiveEpochMS:
          type: number
        limit:
          type: number
    DeviceVenueType:
      type: object
      title: Device Venue Type
      properties:
        id:
          type: number
          description: The primary key for the venue type
        name:
          type: string
          description: Short description
        description:
          type: string
          description: Longer description
        imageId:
          type: number
          description: ID for the primary image
        imageUrl:
          type: string
          description: URL for the primary image
        altImageId:
          type: number
          description: ID for the alternate image
        altImageUrl:
          type: string
          description: URL for the alternate image
        group:
          type: string
          description: Grouping key
        sort:
          type: number
          description: Sort order of the venue type
        indoor:
          type: boolean
          description: Indoor or Outdoor
        enabled:
          type: boolean
          description: Enabled or not
        mockupsAvailable:
          type: number
          description: Number of background mockups available
    DeviceVenueTypeList:
      type: object
      title: Device Venue Type List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeviceVenueType'
        pagination:
          $ref: '#/components/schemas/PaginationObject'
    DeviceVenueTypeUpsertRequest:
      type: object
      title: Device Venue Type Insert/Update Request
      allOf:
        - $ref: '#/components/schemas/DeviceVenueType'
    DomainToTeamRequest:
      type: object
      title: Domain To Team Request
      properties:
        whiteLabelSubdomain:
          type: string
    DynamicSchedulePacingMode:
      type: string
      enum:
        - Even
        - DoNotPace
        - SharedMoneyBucket
    EdgeContentApprover:
      type: string
      description: Who does the content approval
      enum:
        - Adomni
        - MediaOwner
    EdgeContentStructureType:
      type: string
      enum:
        - Playlist
        - SlotBased
        - Events
    EdgeDevice:
      title: Edge Device Descriptor
      description: >-
        Represents the device in the context of a response as Edge understands
        it
      allOf:
        - $ref: '#/components/schemas/EdgeDeviceBase'
        - type: object
          properties:
            key:
              type: string
              description: Key used by the device to identify itself
            isLive:
              type: boolean
              description: Whether this device is live or not
            defaultContentJobId:
              type: number
              description: >-
                The default content job id. This seems to ALWAYS be NULL in
                edge. Not certain it's even being used anymore.
            defaultContentUploadUrl:
              type: string
              description: >-
                The default content upload url. This seems to ALWAYS be NULL in
                edge. Not certain it's even being used anymore.
            impressionSourceId:
              type: number
              description: Indicates where the impression came from.
            percentShareOfVoiceForMarketplace:
              type: number
              description: >-
                The percentage share of voice for marketplace. This seems to
                ALWAYS be 100 in edge. Not certain it's even being used anymore.
            auxLocations:
              type: array
              description: Extra location data.
              items:
                $ref: '#/components/schemas/DeviceAuxLocation'
            searchImageUrlJobId:
              type: number
              description: >-
                The search image url job id. This seems to ALWAYS be NULL in
                edge. Not certain it's even being used anymore.
            searchImageUploadUrl:
              type: string
              description: >-
                The search image upload url. This seems to ALWAYS be NULL in
                edge. Not certain it's even being used anymore.
            detailsPageImageUrlJobId:
              type: number
              description: >-
                The details page image url job id. This seems to ALWAYS be NULL
                in edge. Not certain it's even being used anymore.
            detailsPageImageUploadUrl:
              type: string
              description: >-
                The details page image upload url. This seems to ALWAYS be NULL
                in edge. Not certain it's even being used anymore.
            inheritPlayerSettings:
              type: boolean
              description: Whether this device should inherit player settings or not
            defaultSoundVolumePercent:
              type: number
              description: The default sound volume percentage
            defaultedToSoundMuted:
              type: boolean
              description: Whether this device should start muted or not
            systemMasterVolumeDefaultPercent:
              type: number
              description: The default master volume percentage
            systemMasterVolumeDefaultDelayInMS:
              type: number
              description: The default master volume delay (ms)
            monitorOnlyWithExternalPlayerStarter:
              type: boolean
              description: >-
                Self-explanatory...add a better description if you know what
                this is!
            detailPageMedia:
              type: array
              items:
                type: string
              description: >-
                Edge doesn't do anything with this. It just defines this as an
                array and that's it.
            maxDailyBudget:
              type: number
              description: The maxmum daily budget
            activeSubDeviceCount:
              type: number
              description: The maxmum daily budget. This seems to ALWAYS be 0 in edge.
            networkScreenCount:
              type: number
              description: The network screen count. This seems to ALWAYS be NULL in edge.
            impressionsPer7DaysForSale:
              type: number
              description: >-
                The number of impressions for sale per 7 day period. This is a
                calculated value.
            pacingOptionsForGuaranteedPurchase:
              type: array
              items:
                $ref: '#/components/schemas/EdgeDevicePacingOption'
              description: >-
                Edge doesn't do anything with this. It just defines this as an
                array and that's it.
            photoshopTemplateUrls:
              type: string
              description: >-
                The photoshop template url. This seems to ALWAYS be NULL in
                edge. Not certain it's even being used anymore.
            lowestPricePerAdPlay:
              type: number
              description: >-
                The lowest price available per play on this device. This is a
                calculated value.
            lowestCPM:
              type: number
              description: >-
                The lowest CPM available for this device. This is a calculated
                value.
            pricePerAdPlayGuaranteed:
              type: number
              description: >-
                This is for backwards compatibility to Edge. Guaranteed pricing
                will go away with Legacy.
            locationHash:
              type: string
              description: Location hash used for audience identification
            networkParentName:
              type: string
              description: A reference to the network parent's name
            searchImageUrl:
              type: string
              description: The image displayed in the map card on the map
            averageValueCpmUsd:
              type: number
              description: The average value cpm in usd based on selected deals
    EdgeDeviceBase:
      type: object
      title: Edge Device Base Descriptor
      description: >-
        Describes all properties of an EdgeDevice that are shared across the
        other sub classes
      properties:
        id:
          type: number
          description: The device primary key
        playerSoftwareTypeId:
          type: number
          description: >-
            Player Software Type ID. See list at
            https://neon-doc.adomni.com/lookup-tables/
        scheduling:
          type: boolean
          description: Whether the device is in scheduling or not
        contentStructureType:
          $ref: '#/components/schemas/EdgeContentStructureType'
        networkParent:
          type: boolean
          description: Whether the device is a network parent
        sellOnMarketplace:
          type: boolean
          description: Whether the device is available in the marketplace.
        name:
          type: string
          description: >-
            If sold on marketplace, name is used as the title shown to
            advertisers
        description:
          type: string
          description: Shown to advertisers if listed on Adomni Marketplace.
        mediaTypeId:
          type: number
          description: >-
            Media Type ID. This property has been deprecated as of 02/08/2021
            and will be unsupported after 08/08/2021.
        venueTypeId:
          type: number
          description: >-
            Venue Type ID. See list at
            https://neon-doc.adomni.com/lookup-tables/
        physicalSizeWidth:
          type: number
          description: Physical size width
        physicalSizeHeight:
          type: number
          description: Physical size height
        physicalSizeDiagonal:
          type: number
          description: Optionally provide diagonal size instead of width/height.
        physicalSizeUnit:
          $ref: '#/components/schemas/DevicePhysicalSizeUnits'
        facesCount:
          type: number
          description: Number of display surfaces
        contentWidth:
          type: number
          description: Content width in pixels
        contentHeight:
          type: number
          description: Content height in pixels
        imagesSupported:
          type: boolean
          description: Whether images are supported
        videoSupported:
          type: boolean
          description: Whether videos are supported
        audioSupportedOnVideos:
          type: boolean
          description: Whether audio is supported for videos
        loopDurationMinutes:
          type: number
          description: >-
            Loop duration in Minutes. Must be divisible by ad duration. Only
            applicable when content structure type is slot-based
        adDurationSeconds:
          type: number
          description: Ad Duration in seconds. Half second intervals are supported.
        lat:
          type: number
          description: Latitude of device location
        lng:
          type: number
          description: Longitude of device location
        operatingHoursType:
          $ref: '#/components/schemas/OperatingHours'
        hoursMon:
          type: boolean
          description: Whether device is scheduled for Monday
        hoursMonOpen:
          type: string
          description: The start time of the Monday schedule (HH:MM:SS format)
        hoursMonClose:
          type: string
          description: The end time of the Monday schedule (HH:MM:SS format)
        hoursTue:
          type: boolean
          description: Whether device is scheduled for Tuesday
        hoursTueOpen:
          type: string
          description: The start time of the Tuesday schedule (HH:MM:SS format)
        hoursTueClose:
          type: string
          description: The end time of the Tuesday schedule (HH:MM:SS format)
        hoursWed:
          type: boolean
          description: Whether device is scheduled for Wednesday
        hoursWedOpen:
          type: string
          description: The start time of the Wednesday schedule (HH:MM:SS format)
        hoursWedClose:
          type: string
          description: The end time of the Wednesday schedule (HH:MM:SS format)
        hoursThu:
          type: boolean
          description: Whether device is scheduled for Thursday
        hoursThuOpen:
          type: string
          description: The start time of the Thursday schedule (HH:MM:SS format)
        hoursThuClose:
          type: string
          description: The end time of the Thursday schedule (HH:MM:SS format)
        hoursFri:
          type: boolean
          description: Whether device is scheduled for Friday
        hoursFriOpen:
          type: string
          description: The start time of the Friday schedule (HH:MM:SS format)
        hoursFriClose:
          type: string
          description: The end time of the Friday schedule (HH:MM:SS format)
        hoursSat:
          type: boolean
          description: Whether device is scheduled for Saturday
        hoursSatOpen:
          type: string
          description: The start time of the Saturday schedule (HH:MM:SS format)
        hoursSatClose:
          type: string
          description: The end time of the Saturday schedule (HH:MM:SS format)
        hoursSun:
          type: boolean
          description: Whether device is scheduled for Sunday
        hoursSunOpen:
          type: string
          description: The start time of the Sunday schedule (HH:MM:SS format)
        hoursSunClose:
          type: string
          description: The end time of the Sunday schedule (HH:MM:SS format)
        secondaryId:
          type: string
          description: An identifier used by your internal system(s). For reference only.
        contentFillsScreen:
          type: boolean
          description: Indicates whether the content starts in full screen mode
        contentOriginX:
          type: number
          description: Allows content to be shown at a specific pixel coordinate.
        contentOriginY:
          type: number
          description: Allows content to be shown at a specific pixel coordinate.
        displayIndex:
          type: number
          description: Indicates the index of a display in a mutliple display scenario
        rotateContentDegrees:
          type: number
          description: Allows content to be displayed at a given rotation other than 0
        bandwidthLevelId:
          type: number
          description: >-
            Translates to player_preset_id. All data I see is 0, so not quite
            sure what this represents yet.
        gpsHardware:
          type: boolean
          description: >-
            Indicates whether or not the device supports GPS from a hardware
            perspective
        monitoringEnabled:
          type: boolean
          description: Whether Adomni monitoring is used
        alertAfterMinutes:
          type: number
          description: An alert will fire after this many minutes without communication
        smsAlertCellNumbers:
          type: array
          items:
            type: string
          description: List of numbers to which SMS alerts are sent
        pauseAlerts:
          type: boolean
          description: Indicates whether to pause owner alerts or not
        pauseUntil:
          type: string
          pattern: dddd-dd-dd dd:dd:dd
          description: >-
            If owner alerts are paused, this specifies the date alerts should be
            unpaused
        subscriptionPlan:
          $ref: '#/components/schemas/EdgeSubscriptionModel'
        sellGuaranteed:
          type: boolean
          description: >-
            Whether the device is available for sale as Guaranteed. Only
            available when contentStructureType is "slot-based"
        impressionSourceTypeId:
          type: number
          description: See values at https://neon-doc.adomni.com/lookup-tables/
        impressionSourceId:
          type: number
          description: E.g. Geopath Tab ID
        impressionNotes:
          type: string
          description: Any notes on how impressions are calculated
        impressionsPerAdPlay:
          type: number
          description: Number of impressions per each ad play (if constant)
        sellingPeriodDays:
          type: number
          description: Number of days in the selling period
        priceStartingPoint:
          type: string
          description: >-
            Determines if the ad price is fixed or not. If equals 'ad-play',
            price is fixed.
          enum:
            - SellingPeriod
            - AdPlay
        slotPricePerSellingPeriod:
          type: number
          description: Price per selling period.
        pricePerAdPlayCents:
          type: number
          description: Price per ad play. Tenth of a cent is supported.
        slotsAvailableForMarketplace:
          type: number
          description: Number of slots to allocate Adomni advertising
        showPromoAd:
          type: boolean
          description: Whether to show a promo ad or not.
        customContentGuidelines:
          type: string
          description: >-
            Freetext -- any types of content (e.g. gentleman's clubs, cannibis)
            not allowed by Media Owner
        advertiserContentApprovalBy:
          $ref: '#/components/schemas/EdgeContentApprover'
        owner:
          $ref: '#/components/schemas/AdomniTeam'
        contentApprovalsCC:
          type: boolean
          description: >-
            Whether the device owner should be CC'd on content approval emails.
            Only applicable if advertiserContentApprovalBy is "Adomni"
        multipleDisplays:
          type: boolean
          description: Whether content spans multiple devices
        averageDailyAdPlays:
          type: number
          description: >-
            Approximate number of ad plays expected to be available to Adomni
            Marketplace per day. Used to calculate 7 days of impressions and
            used for budget pacing.
        inheritMonitoringSettings:
          type: boolean
          description: Whether to inherit monitoring settings or not.
        googleStreetViewUrl:
          type: string
          description: URL used to show Google street view
        facingDirection:
          $ref: '#/components/schemas/FacingDirection'
        impressionsPer7Days:
          type: number
          description: Number of impressions in a 7-day period
        impressionsStartingPoint:
          type: string
          description: Specifies the starting point of the impression count
          enum:
            - AdPlay
            - Weekly
        cityStateCountry:
          type: string
          description: City state country combination (e.g. Las Vegas, NV)
        streetAddressLine1:
          type: string
          description: The street address of the device
        streetAddressLine2:
          type: string
          description: The 2nd line of the street address of the device
        zip:
          type: string
          description: The zip code of the device
        useNetworkParentSchedule:
          type: boolean
          description: Whether this device should use the schedule from its network parent
        extendedNetwork:
          type: boolean
          description: >-
            Specifies whether to include this device in the extended network.
            Correlates to the display_only field.
        timePartingDisabled:
          type: boolean
          description: >-
            Whether this device supports time parting or not. Correlates to the
            time_range field.
        descriptionAdditionalHTML:
          type: string
          description: Description of the device. Supports HTML.
        networkParentId:
          type: number
          description: Network parent's device ID
        integrationKey:
          type: string
          description: The integration key from the device owner
        averageDailyOperatingHours:
          type: number
          description: Average daily operating hours for the device
        payeeUserId:
          type: number
          description: payee user id for this device
        deviceImage:
          type: number
          description: associated device image in the images table
        purchaseMethod:
          $ref: '#/components/schemas/DevicePurchaseMethod'
        availabilityState:
          $ref: '#/components/schemas/DeviceAvailabilityState'
        streamingType:
          $ref: '#/components/schemas/StreamingType'
    EdgeDeviceListResponse:
      type: object
      title: Device List Response
      description: >-
        Returns a list of devices with metrics and pagination. This is for
        backwards compatibility with the original Edge endpoint.
      properties:
        results:
          type: array
          description: The list of devices resulting from a request.
          items:
            $ref: '#/components/schemas/EdgeDevice'
        nextToken:
          type: string
          description: Describes the pagination for the request.
        count:
          type: number
          description: >-
            The number of results returned. This is for backwards compatibility
            with the original Edge endpoint.
        page:
          type: number
          description: >-
            Represents the current page in the pagination. This is for backwards
            compatibility with the original Edge endpoint.
        pageSize:
          type: number
          description: >-
            Represents the number of rows displayed per page. This is for
            backwards compatibility with the original Edge endpoint.
        continuationToken:
          type: string
          description: >-
            A token representing the pagination for the next set of results.
            This is for backwards compatibility with the original Edge endpoint.
    EdgeDevicePacingOption:
      type: object
      title: Edge Device Pacing Option
      description: Describes the pacing for plays on a device
      properties:
        slots:
          type: number
          description: How many slots have been filled
        skip:
          type: number
          description: How many slots have been skipped
        name:
          type: string
          description: A label given to the pacing slot
    EdgeDeviceUpsertRequest:
      title: Device Create or Update Descriptor
      description: Describes a device to be created or updated
      allOf:
        - $ref: '#/components/schemas/EdgeDeviceBase'
        - type: object
          properties:
            ownerAuth0TeamId:
              type: string
              description: Team Id of the device owner
            images:
              type: boolean
              description: >-
                Whether images are supported. This gets overridden by
                imagesSupported if it exists.
            video:
              type: boolean
              description: >-
                Whether videos are supported. This gets overridden by
                videoSupported if it exists.
            audio:
              type: boolean
              description: >-
                Whether audio is supported for videos. This gets overridden by
                audioSupportedOnVideos if it exists.
            sellOnMarketplace:
              type: boolean
              description: Whether the device is available in the marketplace.
            options:
              $ref: '#/components/schemas/EdgeDeviceUpsertRequestOptions'
    EdgeDeviceUpsertRequestOptions:
      type: object
      title: Device Upsert Request Options
      description: >-
        Allows for modifications to device upsert requests process to handle
        different situations
      properties:
        onDuplicateBehavior:
          type: string
          description: >-
            Provides the ability to return the existing item in the case a
            duplicate is found. This was added to help Uber when they use
            integrationKeys and accidentally use a duplicate.
          enum:
            - Error
            - ReturnExisting
        duplicateCheck:
          type: string
          description: Tells the request what to check for duplication (If any)
          enum:
            - IntegrationKey
    EdgeSubscriptionModel:
      type: string
      description: Specifies the type of subscription (Chrome = 0, Gold = 1, Platinum = 2)
      enum:
        - Chrome
        - Gold
        - Platinum
    Empty:
      type: object
      title: Empty Schema
    EnterpriseCampaignBillingMode:
      type: string
      default: Billable
      enum:
        - Billable
        - NonBillableBonus
        - NonBillableTest
        - NonBillableFiller
    EnterpriseCampaignBillingType:
      type: string
      default: Billable
      enum:
        - Billable
        - NonBillable
    EnterpriseCampaignBuyerMarkupMarginViewPreference:
      type: string
      default: Include
      enum:
        - Include
        - DoNotInclude
    EnterprisePerformanceReport:
      type: object
      title: Enterprise Performance Report
      properties:
        createdEpochMS:
          type: number
          description: When this report data was last updated
        updatedEpochMS:
          type: number
          description: When this report data was last updated
        creationParameters:
          type: object
          description: The parameters used to create this report
        dataSummary:
          description: Metrics broken down by venue type
          type: array
          items:
            $ref: >-
              #/components/schemas/EnterprisePerformanceReportSummaryByVenueTypeMetricsEntry
        globalDataSummary:
          description: Metrics across the whole report
          $ref: '#/components/schemas/EnterprisePerformanceReportSummaryMetricsEntry'
        contentDetails:
          type: array
          items:
            $ref: '#/components/schemas/EnterprisePerformanceReportContentEntry'
        entries:
          type: array
          items:
            $ref: '#/components/schemas/AggregatedPlayDataResponseEntry'
    EnterprisePerformanceReportContentEntry:
      type: object
      title: Enterprise Performance Report Content Entry
      properties:
        thumbnailUrl:
          type: string
          description: Content thumbnail link
        identifierString:
          type: string
          description: Resource file name, or other identification reference string
        purchaseType:
          type: string
        purchaseId:
          type: number
        contentId:
          type: number
        playCount:
          type: number
        impressions:
          type: number
        adomniContent:
          $ref: '#/components/schemas/AdomniContent'
    EnterprisePerformanceReportParameters:
      title: Enterprise Performance Report Parameters
      description: This is a definition for enterprise-performance report requests.
      type: object
      required:
        - purchaseEntities
      properties:
        purchaseEntities:
          description: Multiple purchases may be grouped into a request.
          type: array
          items:
            $ref: '#/components/schemas/PurchaseEntity'
        appliedTimeZoneName:
          type: string
          default: Etc/UTC
        timeZoneOffset:
          description: >
            The default time zone is UTC/GMT. DEPRECATED - Use
            appliedTimeZoneName instead
          default: 0
          type: number
        startDate:
          description: If set, only data on or after this date will be returned
          type: string
          pattern: \d\d\d\d-\d\d-\d\d
        endDate:
          description: If set, only data before this date will be returned
          type: string
          pattern: \d\d\d\d-\d\d-\d\d
        summaryLevel:
          description: >-
            If set, aggregates the data to the set level, defaults to Hour
            otherwise
          $ref: '#/components/schemas/ReportSummaryLevel'
        format:
          description: >-
            Defaults to json; If csv sent, a csv formatted version is returned
            instead
          default: json
          $ref: '#/components/schemas/ReportFormat'
        buyerMarginViewPreference:
          description: >
            Whether to include buyer margin in this report, disregarding buyer
            margin view preference set on any involved campaigns
          $ref: >-
            #/components/schemas/EnterpriseCampaignBuyerMarkupMarginViewPreference
        marginToApply:
          description: >-
            The buyer margin to apply if `buyerMarginViewPreference` includes
            buyer margin in this report
          type: number
        includeDetailData:
          description: |
            if set to true, the full details will be included
          type: boolean
          default: false
    EnterprisePerformanceReportSummaryByVenueTypeMetricsEntry:
      title: Enterprise Performance Report Summary Entry
      allOf:
        - $ref: '#/components/schemas/EnterprisePerformanceReportSummaryMetricsEntry'
        - type: object
          properties:
            venueTypeId:
              type: number
            name:
              type: string
    EnterprisePerformanceReportSummaryMetricsEntry:
      type: object
      title: Enterprise Performance Report Summary Metrics Entry
      properties:
        totalCount:
          type: number
        playCount:
          type: number
        impressions:
          type: number
        totalValueCents:
          type: number
        eCPM:
          type: number
    ExecutionApiContentFormatQueueTagConstraint:
      type: object
      properties:
        formatIds:
          type: array
          items:
            type: number
    ExecutionApiDeviceQueueTag:
      type: object
      title: Execution Api Device Queue Tag
      description: Associates a queue tag with a device
      properties:
        name:
          type: string
        priority:
          type: number
        constraints:
          type: array
          items:
            $ref: '#/components/schemas/ExecutionApiQueueTagConstraint'
        tagType:
          $ref: '#/components/schemas/ExecutionApiDeviceQueueTagType'
    ExecutionApiDeviceQueueTagMapping:
      type: object
      title: Execution Api Device Queue Tag Mapping
      description: Associates a queue tag with a device
      allOf:
        - $ref: '#/components/schemas/ExecutionApiDeviceQueueTag'
        - type: object
          properties:
            deviceId:
              type: number
    ExecutionApiDeviceQueueTagSearchRequest:
      type: object
      title: Execution Api Device Queue Tag Search Request
      properties:
        deviceIdList:
          type: array
          items:
            type: number
        defaultOnly:
          type: boolean
          default: false
        tagTypes:
          type: array
          items:
            $ref: '#/components/schemas/ExecutionApiDeviceQueueTagType'
    ExecutionApiDeviceQueueTagSearchResponse:
      type: object
      title: Execution Api Device Queue Tag Search Response
      properties:
        request:
          $ref: '#/components/schemas/ExecutionApiDeviceQueueTagSearchRequest'
        results:
          type: array
          items:
            $ref: '#/components/schemas/ExecutionApiDeviceQueueTagMapping'
    ExecutionApiDeviceQueueTagType:
      type: string
      title: Execution Api Device Queue Tag Type
      enum:
        - Standard
        - Filler
    ExecutionApiPlayRecordDeleteRequest:
      type: object
      title: Play Record Delete Request
      properties:
        recordKeys:
          type: array
          items:
            $ref: '#/components/schemas/PlayRecordKeyFields'
    ExecutionApiPlayRecordInsertRequest:
      type: object
      title: Play Record Insert Request
      properties:
        records:
          type: array
          items:
            $ref: '#/components/schemas/V2PlayRecord'
        collisionHandling:
          type: string
          enum:
            - Overwrite
            - Avoid
    ExecutionApiQueueTagConstraint:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ExecutionApiQueueTagConstraintType'
        contentFormatData:
          $ref: '#/components/schemas/ExecutionApiContentFormatQueueTagConstraint'
    ExecutionApiQueueTagConstraintType:
      type: string
      enum:
        - ContentFormat
    FacingDirection:
      type: string
      description: >-
        Facing direction (roadside billboards only). Valid values are (N = 7, NE
        = 23, NW = 24, S = 11, SE = 22, SW = 21, E => 10, W = 12)
      enum:
        - 'N'
        - NE
        - E
        - SE
        - S
        - SW
        - W
        - NW
    FeatureFlagApplication:
      type: string
      enum:
        - Overseer
        - Shoutable
        - ShoutableAdmin
        - Unicorn
    FeatureFlagDetails:
      type: object
      title: Object containing feature flag details for a specific environment
      additionalProperties:
        type: boolean
    FeatureFlagResponse:
      type: object
      title: Object containing feature flag details for all environments
      properties:
        local:
          $ref: '#/components/schemas/FeatureFlagDetails'
        dev:
          $ref: '#/components/schemas/FeatureFlagDetails'
        next:
          $ref: '#/components/schemas/FeatureFlagDetails'
        prod:
          $ref: '#/components/schemas/FeatureFlagDetails'
    FeatureFlagsEdit:
      type: object
      title: Object containing request to update feature flags
      properties:
        application:
          $ref: '#/components/schemas/FeatureFlagApplication'
        featureFlags:
          $ref: '#/components/schemas/FeatureFlagResponse'
    FileDownload:
      type: object
      properties:
        filename:
          type: string
        url:
          type: string
        sizeInBytes:
          type: number
        modifiedEpochMS:
          type: number
        contentType:
          type: string
    FileDownloadList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/FileDownload'
        nextToken:
          type: string
    FillerEligibleDevice:
      type: object
      title: Filler Eligible Device
      properties:
        id:
          type: number
          description: The device's unique identifier
        name:
          type: string
          description: The name of the device as shown on the site
        ownerLabel:
          type: string
          description: The name of the media owner
    FillerEligibleDeviceList:
      type: object
      title: Filler Eligible Device List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/FillerEligibleDevice'
        pagination:
          $ref: '#/components/schemas/PaginationObjectWithTotal'
    FullLocationAudienceDataElement:
      type: object
      title: Full Location Audience Data Element
      description: Full internal data for a given location and audience
      properties:
        audienceSegmentId:
          description: Adomni's id for the audience segment
          type: number
        placeIqId:
          description: Mira guid (this name should be changed)
          type: string
        count:
          type: number
        dmaIndex:
          description: market_index_score from MIRA. This used to be national_index_score
          type: number
        nationalIndex:
          description: national_index_score from MIRA
          type: number
        dmaName:
          description: market_id from MIRA
          type: string
        entryType:
          description: AFAIK always "LOCATION_SUMMARY" -- look to remove this
          type: string
        locationHash:
          description: >-
            Represents a location, each locationHash is associated with 1+
            devices in `boards`
          type: string
        uniqueDevicesAtLocation:
          description: Count of devices at this locationHash
          type: number
        generatedEpochMS:
          type: number
        notes:
          type: string
    FullLocationAudienceDataElementList:
      type: object
      title: Full Location Audience Data Element List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/FullLocationAudienceDataElement'
        nextToken:
          type: string
    GenericAttribute:
      type: object
      title: Generic Attribute
      required:
        - id
        - entityId
        - attribute
      properties:
        id:
          type: number
        entityId:
          type: number
        type:
          type: string
        attribute:
          type: string
        slug:
          type: string
    GenericAttributeList:
      type: object
      title: Generic Attribute List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/GenericAttribute'
        nextToken:
          type: string
    GenericAttributeValue:
      type: object
      title: Generic Attribute Value
      required:
        - id
        - attributeId
        - value
      properties:
        id:
          type: number
        attributeId:
          type: number
        sort:
          type: number
        enabled:
          type: boolean
        imgId:
          type: number
        value:
          type: string
    GenericAttributeValueList:
      type: object
      title: Generic Attribute Value List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/GenericAttributeValue'
        nextToken:
          type: string
    GenericNumberList:
      type: object
      title: Generic Number List
      properties:
        items:
          type: array
          items:
            type: integer
    GenericNumericIdAndLabel:
      type: object
      title: Generic Numeric Id And Label
      properties:
        id:
          type: number
        label:
          type: string
    GenericStringList:
      type: object
      title: Generic String List
      properties:
        items:
          type: array
          items:
            type: string
    GeoFenceBound:
      type: object
      title: GeoFence Bound
      description: TBD
      properties:
        type:
          type: string
          enum:
            - rectangle
          x-enum-varnames:
            - Rectangle
        origin:
          $ref: '#/components/schemas/AdomniGeoLocation'
        extent:
          $ref: '#/components/schemas/AdomniGeoLocation'
    GeoFenceVenueTypeBreakdown:
      type: object
      title: GeoFence Venue Type Breakdown
      properties:
        geofence:
          $ref: '#/components/schemas/GeoFenceBound'
        venueTypeBreakdown:
          type: array
          items:
            $ref: '#/components/schemas/VenueTypeMetricsEntry'
    GeoJson:
      type: object
      title: GeoJson
      properties:
        type:
          $ref: '#/components/schemas/GeoJsonType'
        features:
          type: array
          items:
            type: object
    GeoJsonFeature:
      title: GeoJson Feature
      type: object
      properties:
        type:
          type: string
        id:
          type: string
        geometry:
          type: object
        properties:
          type: object
    GeoJsonType:
      type: string
      title: Geo Json Type
      enum:
        - Feature
        - FeatureCollection
    IabContentVersion:
      type: string
      enum:
        - OpenRtb25
        - V2
      description: Which version to use (OpenRtb25 or V2)
    IabTaxonomyEntry:
      type: object
      title: Iab Taxonomy Entry
      description: A single entry in the IAB taxonomy
      properties:
        id:
          type: string
        label:
          type: string
        segments:
          type: array
          items:
            type: string
    IabTaxonomyList:
      type: object
      title: Iab Taxonomy List
      description: A list of IAB taxonomy entries
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/IabTaxonomyEntry'
        filter:
          type: string
    ImpressionAudienceRequest:
      type: object
      title: Impression Audience Request
      description: A request to generate a given impression audience summary
      properties:
        algorithm:
          $ref: '#/components/schemas/AudienceScoreAlgorithm'
        entries:
          type: array
          items:
            $ref: '#/components/schemas/ImpressionAudienceRequestEntry'
    ImpressionAudienceRequestEntry:
      type: object
      title: Impression Audience Request Entry
      description: >-
        An entry in a impression audience request (all will be evenly
        distributed)
      properties:
        locationHashes:
          type: array
          items:
            type: string
        impressionCount:
          type: number
        appliedTimeEpochMS:
          description: When the impressions occured - if not set, current time is used
          type: number
    ImpressionAudienceSummary:
      type: object
      title: Impression Audience Summary
      description: Summary of a given set of impressions against audiences
      properties:
        locationHashes:
          type: array
          items:
            type: string
        missingLocationHashes:
          type: array
          items:
            type: string
        demographics:
          type: array
          items:
            $ref: '#/components/schemas/ImpressionDemographics'
        topBehavioralAudienceSegments:
          type: array
          items:
            $ref: '#/components/schemas/AudienceSegment'
    ImpressionCalculationMethod:
      type: string
      title: Impression Calculation Method
      enum:
        - Monthly
        - Sum
        - Mixed
    ImpressionData:
      type: object
      title: Impression Data
      properties:
        value:
          type: number
        method:
          $ref: '#/components/schemas/ImpressionCalculationMethod'
    ImpressionDemographicEntry:
      type: object
      title: Impression Demographic Entry
      description: An entry in a particular impression demographic set (e.g, men)
      properties:
        segment:
          $ref: '#/components/schemas/AudienceSegment'
        value:
          type: number
        percent:
          type: number
    ImpressionDemographics:
      type: object
      title: Impression Demographics
      description: A set of impressions broken down by demographics (e.g., sex or age)
      properties:
        group:
          type: string
        composition:
          type: array
          items:
            $ref: '#/components/schemas/ImpressionDemographicEntry'
    InternalSearchResponse:
      type: object
      title: Internal Search Response
      properties:
        request:
          $ref: '#/components/schemas/SavedSearchRequest'
        grouping:
          $ref: '#/components/schemas/SavedSearchGroupings'
        viewport:
          $ref: '#/components/schemas/GeoFenceBound'
        page:
          $ref: '#/components/schemas/SimplePaginationObject'
        hiddenDeviceCount:
          type: number
        groupedResults:
          type: array
          items:
            $ref: '#/components/schemas/SavedSearchGroupedResultEntry'
        groupCalculatedZoomLevel:
          type: number
        deviceResults:
          type: array
          items:
            $ref: '#/components/schemas/SavedSearchDeviceResultEntry'
        globalMetrics:
          $ref: '#/components/schemas/SavedSearchMetricsEntry'
        lookupData:
          $ref: '#/components/schemas/SavedSearchLookupData'
        extents:
          $ref: '#/components/schemas/InternalSearchResponseGeoExtents'
        pointsOfInterestResults:
          $ref: '#/components/schemas/SavedSearchPointsOfInterest'
    InternalSearchResponseGeoExtents:
      type: object
      title: Internal Search Response Geo Extents
      properties:
        global:
          $ref: '#/components/schemas/GeoFenceBound'
        viewport:
          $ref: '#/components/schemas/GeoFenceBound'
    InternationalPostalCode:
      type: object
      properties:
        countryName:
          type: string
        countryId:
          description: numeric id in locations_countries table
          type: string
        postalCode:
          description: alphanumeric postal code
          type: string
    LocationCitiesResponse:
      title: Location Cities Response
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/LocationCityEntry'
        count:
          type: number
        nextTokenString:
          type: string
    LocationCityEntry:
      title: Location City Entry
      type: object
      properties:
        city:
          type: string
    LocationCountiesResponse:
      title: Location Counties Response
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/UnitedStatesCounty'
        count:
          type: number
    LocationCountriesResponse:
      title: Location Country Response
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/LocationCountryEntry'
        count:
          type: number
    LocationCountryEntry:
      title: Location Country Entry
      type: object
      properties:
        id:
          type: number
        name:
          type: string
        lat:
          type: number
        lng:
          type: number
    LocationDmaEntry:
      title: Location DMA Entry
      type: object
      properties:
        id:
          type: number
        name:
          type: string
        code:
          type: number
        homes:
          type: number
        percent:
          type: number
        rank:
          type: number
        lat:
          type: number
        lng:
          type: number
    LocationDmasResponse:
      title: Location DMAs Response
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/LocationDmaEntry'
        count:
          type: number
    LocationPostalCodesResponse:
      title: Location Postal Codes Response
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/InternationalPostalCode'
        count:
          type: number
        nextTokenString:
          type: string
    LocationStateEntry:
      title: Location State Entry
      type: object
      properties:
        id:
          type: number
        name:
          type: string
        lat:
          type: number
        lng:
          type: number
        countryId:
          type: number
        abbr:
          type: string
    LocationStatesResponse:
      title: Location States Response
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/LocationStateEntry'
        count:
          type: number
    MapboxDeviceTilesetType:
      type: string
      title: Mapbox Device Tileset Type
      enum:
        - AvailableProgrammatic
        - AvailableNonProgrammatic
        - PresaleProgrammatic
        - PresaleNonProgrammatic
        - TestProgrammatic
        - TestNonProgrammatic
    MapboxTilesetLayerEntry:
      type: object
      title: Mapbox Tileset Layer Entry
      properties:
        entryId:
          type: string
        tilesetUrl:
          type: string
        sourceId:
          type: string
        visible:
          type: boolean
        queryName:
          type: string
        search:
          $ref: '#/components/schemas/SavedSearchRequest'
        tilesetType:
          $ref: '#/components/schemas/MapboxDeviceTilesetType'
        label:
          type: string
        layerName:
          type: string
    MapboxTilesetList:
      type: object
      title: Mapbox Tileset List
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/MapboxTilesetLayerEntry'
    MediaFormat:
      type: object
      title: Media Format
      description: Described a particular format that content is, or that a device can plan
      properties:
        formatId:
          type: number
        heightPx:
          type: number
        widthPx:
          type: number
        contentType:
          description: The MimeType of the format, eg image/png, text/html, etc
          type: string
        durationInSeconds:
          type: number
    MetricBreakdownEntry:
      type: object
      title: Saved Search Breakdown
      allOf:
        - $ref: '#/components/schemas/SavedSearchMetricsEntry'
        - type: object
          properties:
            entryId:
              type: string
            entryLabel:
              type: string
            entrySecondLabel:
              description: >-
                This is for string data that might not need to be appended to
                the primary label.
              type: string
            sumCostCents:
              type: number
            sumValueCents:
              type: number
            monthlyMaxSpend:
              type: number
    MetricBreakdownType:
      title: Metric Breakdown Type
      description: >-
        This is a general metric breakdown type that will work for either Saved
        Search or Dynamic Schedule
      type: string
      enum:
        - VenueTypes
        - MediaOwners
        - GeoTargetCity
        - GeoTargetState
        - GeoTargetZip
        - GeoTargetCountry
        - GeoTargetCounty
        - GeoTargetCbsa
        - GeoTargetDma
    MetricsAggregationMethod:
      type: string
      description: >-
        Allows objects to flag themselves as aggregates of aggregates, with
        potential duplication of intersection issues
      enum:
        - Source
        - AggregateOfAggregate
      default: Source
    NamedLocationHashSet:
      type: object
      title: Named LocationHash Set
      description: A named set of location hashes (names are alphanumeric)
      properties:
        name:
          type: string
          pattern: ^[a-zA-Z][a-zA-Z0-9]+$
        locationHashes:
          type: array
          items:
            type: string
    NumberMinMax:
      type: object
      title: Number Min Max
      properties:
        minimum:
          type: number
        maximum:
          type: number
    NumberRange:
      type: object
      title: Number Range
      properties:
        startInclusive:
          type: number
        endExclusive:
          type: number
    OpenIDProviderMetadataResponse:
      type: object
      properties:
        issuer:
          type: string
          description: >-
            REQUIRED. URL using the https scheme with no query or fragment
            component that the OP asserts as its Issuer Identifier
        authorization_endpoint:
          type: string
          description: REQUIRED. URL of the OP's OAuth 2.0 Authorization Endpoint
        token_endpoint:
          type: string
          description: URL of the OP's OAuth 2.0 Token Endpoint
        userinfo_endpoint:
          type: string
          description: RECOMMENDED. URL of the OP's UserInfo Endpoint
        jwks_uri:
          type: string
          description: REQUIRED. URL of the OP's JSON Web Key Set [JWK] document.
        registration_endpoint:
          type: string
          description: RECOMMENDED. URL of the OP's Dynamic Client Registration Endpoint
        scopes_supported:
          type: string
          description: >-
            RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749]
            scope values that this server supports
        response_types_supported:
          type: string
          description: >-
            REQUIRED. JSON array containing a list of the OAuth 2.0
            response_type values that this OP supports
        response_modes_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the OAuth 2.0
            response_mode values that this OP supports
        grant_types_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the OAuth 2.0 Grant Type
            values that this OP supports
        acr_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the Authentication Context
            Class References that this OP supports
        subject_types_supported:
          type: string
          description: >-
            REQUIRED. JSON array containing a list of the Subject Identifier
            types that this OP supports
        id_token_signing_alg_values_supported:
          type: string
          description: >-
            REQUIRED. JSON array containing a list of the JWS signing algorithms
            (alg values) supported by the OP for the ID Token to encode the
            Claims in a JWT
        id_token_encryption_alg_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the JWE encryption
            algorithms (alg values) supported by the OP for the ID Token to
            encode the Claims in a JWT
        id_token_encryption_enc_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the JWE encryption
            algorithms (enc values) supported by the OP for the ID Token to
            encode the Claims in a JWT
        userinfo_signing_alg_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the JWS signing algorithms
            (alg values) [JWA] supported by the UserInfo Endpoint to encode the
            Claims in a JWT
        userinfo_encryption_alg_values_supported:
          type: string
          description: >-
            ROPTIONAL. JSON array containing a list of the JWE encryption
            algorithms (alg values) [JWA] supported by the UserInfo Endpoint to
            encode the Claims in a JWT
        userinfo_encryption_enc_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the JWE encryption
            algorithms (enc values) [JWA] supported by the UserInfo Endpoint to
            encode the Claims in a JWT
        request_object_signing_alg_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the JWS signing algorithms
            (alg values) supported by the OP for Request Objects
        request_object_encryption_alg_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the JWE encryption
            algorithms (alg values) supported by the OP for Request Objects
        request_object_encryption_enc_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the JWE encryption
            algorithms (enc values) supported by the OP for Request Objects
        token_endpoint_auth_methods_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of Client Authentication
            methods supported by this Token Endpoint
        token_endpoint_auth_signing_alg_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the JWS signing algorithms
            (alg values) supported by the Token Endpoint for the signature on
            the JWT
        display_values_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the display parameter
            values that the OpenID Provider supports
        claim_types_supported:
          type: string
          description: >-
            OPTIONAL. JSON array containing a list of the Claim Types that the
            OpenID Provider supports
        claims_supported:
          type: string
          description: >-
            RECOMMENDED. JSON array containing a list of the Claim Names of the
            Claims that the OpenID Provider MAY be able to supply values for
        service_documentation:
          type: string
          description: >-
            OPTIONAL. URL of a page containing human-readable information that
            developers might want or need to know when using the OpenID Provider
        claims_locales_supported:
          type: string
          description: >-
            OPTIONAL. Languages and scripts supported for values in Claims being
            returned, represented as a JSON array of BCP47 [RFC5646] language
            tag values
        ui_locales_supported:
          type: string
          description: >-
            OPTIONAL. Languages and scripts supported for the user interface,
            represented as a JSON array of BCP47 [RFC5646] language tag values
        claims_parameter_supported:
          type: boolean
          description: >-
            OPTIONAL. Boolean value specifying whether the OP supports use of
            the claims parameter, with true indicating support. If omitted, the
            default value is false
        request_parameter_supported:
          type: boolean
          description: >-
            OPTIONAL. Boolean value specifying whether the OP supports use of
            the request parameter, with true indicating support. If omitted, the
            default value is false
        request_uri_parameter_supported:
          type: boolean
          description: >-
            OPTIONAL. Boolean value specifying whether the OP supports use of
            the request_uri parameter, with true indicating support. If omitted,
            the default value is true
        require_request_uri_registration:
          type: boolean
          description: >-
            OPTIONAL. Boolean value specifying whether the OP requires any
            request_uri values used to be pre-registered using the request_uris
            registration parameter
        op_policy_uri:
          type: string
          description: >-
            OPTIONAL. URL that the OpenID Provider provides to the person
            registering the Client to read about the OP's requirements on how
            the Relying Party can use the data provided by the OP
        op_tos_uri:
          type: boolean
          description: >-
            OPTIONAL. URL that the OpenID Provider provides to the person
            registering the Client to read about OpenID Provider's terms of
            service
    OpenRtb25App:
      type: object
      title: Open RTB 25 App
      additionalProperties: true
      description: >
        This object should be included if the ad supported content is a
        non-browser application (typically in mobile) as

        opposed to a website. A bid request must not contain both an `App` and a
        `Site` object. At a minimum, it is useful

        to provide an App ID or bundle, but this is not strictly required.
      properties:
        id:
          type: string
          description: Exchange-specific app ID.
        name:
          type: string
          description: App name (may be aliased at the publisher's request).
        bundle:
          type: string
          description: >
            A platform-specific application identifier intended to be unique to
            the app and independent of the exchange. On

            Android, this should be a bundle or package name (e.g.,
            com.foo.mygame). On iOS, it is typically a numeric ID.
        domain:
          type: string
          description: Domain of the app (e.g., "mygame.foo.com").
        storeurl:
          type: string
          description: App store URL for an installed app; for IQG 2.1 compliance.
        cat:
          type: array
          items:
            type: string
          description: Array of IAB content categories of the app. Refer to List 5.1.
        sectioncat:
          type: array
          items:
            type: string
          description: >-
            Array of IAB content categories that describe the current section of
            the app. Refer to List 5.1.
        pagecat:
          type: array
          items:
            type: string
          description: >
            Array of IAB content categories that describe the current page or
            view of the app. Refer to List 5.1.
        ver:
          type: string
          description: Application version.
        privacypolicy:
          type: number
          description: Indicates if the app has a privacy policy, where 0 = no, 1 = yes.
        paid:
          type: number
          description: 0 = app is free, 1 = the app is a paid version.
        publisher:
          $ref: '#/components/schemas/OpenRtb25Publisher'
          description: Details about the Publisher (Section 3.2.15) of the app.
        content:
          $ref: '#/components/schemas/OpenRtb25Content'
          description: Details about the Content (Section 3.2.16) within the app.
        keywords:
          type: string
          description: Comma separated list of keywords about the app.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Audio:
      type: object
      title: Open RTB 25 Audio
      additionalProperties: true
      description: >
        This object represents an audio type impression. Many of the fields are
        non-essential for minimally viable

        transactions, but are included to offer fine control when needed. Audio
        in OpenRTB generally assumes compliance

        with the DAAST standard. As such, the notion of companion ads is
        supported by optionally including an array of

        `Banner` objects (refer to the `Banner` object in Section 3.2.6) that
        define these companion ads.


        The presence of a `Audio` as a subordinate of the `Imp` object indicates
        that this impression is offered as an audio

        type impression. At the publisher's discretion, that same impression may
        also be offered as banner, video, and/or

        native by also including as `Imp` subordinates objects of those types.
        However, any given bid for the impression

        must conform to one of the offered types.
      properties:
        mimes:
          type: array
          items:
            type: string
          description: Content MIME types supported (e.g., "`audio/mp4`").
        minduration:
          type: number
          description: Minimum audio ad duration in seconds.
        maxduration:
          type: number
          description: Maximum audio ad duration in seconds.
        protocols:
          type: array
          items:
            type: number
          description: Array of supported audio protocols. Refer to List 5.8.
        startdelay:
          type: number
          description: >
            Indicates the start delay in seconds for pre-roll, mid-roll, or
            post-roll ad placements. Refer to List 5.12.
        sequence:
          type: number
          description: >
            If multiple ad impressions are offered in the same bid request, the
            sequence number will allow for the

            coordinated delivery of multiple creatives.
        battr:
          type: array
          items:
            type: number
          description: Blocked creative attributes. Refer to List 5.3.
        maxextended:
          type: number
          description: >
            Maximum extended ad duration if extension is allowed. If blank or 0,
            extension is not allowed. If -1, extension

            is allowed, and there is no time limit imposed. If greater than 0,
            then the value represents the number of

            seconds of extended play supported beyond the `maxduration` value.
        minbitrate:
          type: number
          description: Minimum bit rate in Kbps.
        maxbitrate:
          type: number
          description: Maximum bit rate in Kbps.
        delivery:
          type: array
          items:
            type: number
          description: >
            Supported delivery methods (e.g., streaming, progressive). If none
            specified, assume all are supported. Refer

            to List 5.15.
        companionad:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Banner'
          description: >-
            Array of `Banner` objects (Section 3.2.6) if companion ads are
            available.
        api:
          type: array
          items:
            type: number
          description: >
            List of supported API frameworks for this impression. Refer to List
            5.6. If an API is not explicitly listed, it

            is assumed not to be supported.
        companiontype:
          type: array
          items:
            type: number
          description: >
            Supported DAAST companion ad types. Refer to List 5.14. Recommended
            if companion `Banner` objects are included

            via the `companionad` array.
        maxseq:
          type: number
          description: The maximum number of ads that can be played in an ad pod.
        feed:
          type: number
          description: Type of audio feed. Refer to List 5.16.
        stitched:
          type: number
          description: >
            Indicates if the ad is stitched with audio content or delivered
            independently, where 0 = no, 1 = yes.
        nvol:
          type: number
          description: Volume normalization mode. Refer to List 5.17.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Banner:
      type: object
      title: Open RTB 25 Banner
      additionalProperties: true
      description: >
        This object represents the most general type of impression. Although the
        term "banner" may have very specific

        meaning in other contexts, here it can be many things including a simple
        static image, an expandable ad unit, or

        even in-banner video (refer to the `Video` object in Section 3.2.7 for
        the more generalized and full featured video

        ad units). An array of `Banner` objects can also appear within the
        `Video` to describe optional companion ads

        defined in the VAST specification.


        The presence of a `Banner` as a subordinate of the `Imp` object
        indicates that this impression is offered as a

        banner type impression. At the publisher's discretion, that same
        impression may also be offered as video, audio,

        and/or native by also including as `Imp` subordinates objects of those
        types. However, any given bid for the

        impression must conform to one of the offered types.
      properties:
        format:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Format'
          description: >
            Array of format objects (Section 3.2.10) representing the banner
            sizes permitted. If none are specified, then

            use of the h and w attributes is highly recommended.
        w:
          type: number
          description: >-
            Exact width in device independent pixels (DIPS); recommended if no
            `format` objects are specified.
        h:
          type: number
          description: >-
            Exact height in device independent pixels (DIPS); recommended if no
            `format` objects are specified.
        wmax:
          type: number
          description: |
            *NOTE: Deprecated in favor of the `format` array.*
            Maximum width in device independent pixels (DIPS).
        hmax:
          type: number
          description: |
            *NOTE: Deprecated in favor of the `format` array.*
            Maximum height in device independent pixels (DIPS).
        wmin:
          type: number
          description: |
            *NOTE: Deprecated in favor of the `format` array.*
            Minimum width in device independent pixels (DIPS).
        hmin:
          type: number
          description: |
            *NOTE: Deprecated in favor of the `format` array.*
            Minimum height in device independent pixels (DIPS).
        btype:
          type: array
          items:
            type: number
          description: Blocked banner ad types. Refer to List 5.2.
        battr:
          type: array
          items:
            type: number
          description: Blocked creative attributes. Refer to List 5.3.
        pos:
          type: number
          description: Ad position on screen. Refer to List 5.4.
        mimes:
          type: array
          items:
            type: string
          description: >
            Content MIME types supported. Popular MIME types may include
            "`application/x-shockwave-flash`", "`image/jpg`",

            and "`image/gif`".
        topframe:
          type: number
          description: >-
            Indicates if the banner is in the top frame as opposed to an iframe,
            where 0 = no, 1 = yes.
        expdir:
          type: array
          items:
            type: number
          description: Directions in which the banner may expand. Refer to List 5.5.
        api:
          type: array
          items:
            type: number
          description: >
            List of supported API frameworks for this impression. Refer to List
            5.6. If an API is not explicitly listed,

            it is assumed not to be supported.
        id:
          type: string
          description: >
            Unique identifier for this banner object. Recommended when `Banner`
            objects are used with a Video object

            (Section 3.2.7) to represent an array of companion ads. Values
            usually start at 1 and increase with each

            object; should be unique within an impression.
        vcm:
          type: number
          description: >
            Relevant only for `Banner` objects used with a Video object (Section
            3.2.7) in an array of companion ads.

            Indicates the companion banner rendering mode relative to the
            associated video, where 0 = concurrent,

            1 = end-card.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Bid:
      type: object
      title: Open RTB 25 Bid
      description: >
        A `SeatBid` object contains one or more Bid objects, each of which
        relates to a specific impression in the bid

        request via the `impid` attribute and constitutes an offer to buy that
        impression for a given `price`.
      additionalProperties: true
      required:
        - id
        - impid
        - price
      properties:
        id:
          type: string
          description: Bidder generated bid ID to assist with logging/tracking.
        impid:
          type: string
          description: ID of the `Imp` object in the related bid request.
        price:
          type: number
          description: >
            Bid price expressed as CPM although the actual transaction is for a
            unit impression only. Note that while the

            type indicates float, integer math is highly recommended when
            handling currencies (e.g., BigDecimal in Java).
        nurl:
          type: string
          description: >
            Win notice URL called by the exchange if the bid wins (not
            necessarily indicative of a delivered, viewed, or

            billable ad); optional means of serving ad markup. Substitution
            macros (Section 4.4) may be included in both

            the URL and optionally returned markup.
        burl:
          type: string
          description: >
            Billing notice URL called by the exchange when a winning bid becomes
            billable based on exchange-specific

            business policy (e.g., typically delivered, viewed, etc.).
            Substitution macros (Section 4.4) may be included.
        lurl:
          type: string
          description: >
            Loss notice URL called by the exchange when a bid is known to

            have been lost. Substitution macros (Section 4.4) may be included.
            Exchange-specific policy may preclude

            support for loss notices or the disclosure of winning clearing
            prices resulting in ${AUCTION_PRICE} macros

            being removed (i.e., replaced with a zero-length string).
        adm:
          type: string
          description: >
            Optional means of conveying ad markup in case the bid wins;
            supersedes the win notice if markup is included in

            both. Substitution macros (Section 4.4) may be included.
        adid:
          type: string
          description: ID of a preloaded ad to be served if the bid wins.
        adomain:
          type: array
          items:
            type: string
          description: >
            Advertiser domain for block list checking (e.g., "ford.com"). This
            can be an array of for the case of rotating

            creatives. Exchanges can mandate that only one domain is allowed.
        bundle:
          type: string
          description: >
            A platform-specific application identifier intended to be unique to
            the app and independent of the exchange. On

            Android, this should be a bundle or package name (e.g.,
            com.foo.mygame). On iOS, it is a numeric ID.
        iurl:
          type: string
          description: >
            URL without cache-busting to an image that is representative of the
            content of the campaign for ad

            quality/safety checking.
        cid:
          type: string
          description: >
            Campaign ID to assist with ad quality checking; the collection of
            creatives for which `iurl` should be

            representative.
        crid:
          type: string
          description: Creative ID to assist with ad quality checking.
        tactic:
          type: string
          description: >
            Tactic ID to enable buyers to label bids for reporting to the
            exchange the tactic through which their bid was

            submitted. The specific usage and meaning of the tactic ID should be
            communicated between buyer and exchanges a

            *priori*.
        cat:
          type: array
          items:
            type: string
          description: IAB content categories of the creative. Refer to List 5.1.
        attr:
          type: array
          items:
            type: number
          description: Set of attributes describing the creative. Refer to List 5.3.
        api:
          type: number
          description: API required by the markup if applicable. Refer to List 5.6.
        protocol:
          type: number
          description: >-
            Video response protocol of the markup if applicable. Refer to List
            5.8.
        qagmediarating:
          type: number
          description: Creative media rating per IQG guidelines. Refer to List 5.19.
        language:
          type: string
          description: >
            Language of the creative using ISO-639-1-alpha-2. The non- standard
            code "xx" may also be used if the creative

            has no linguistic content (e.g., a banner with just a company logo).
        dealid:
          type: string
          description: >
            Reference to the `deal.id` from the bid request if this bid pertains
            to a private marketplace direct deal.
        w:
          type: number
          description: Width of the creative in device independent pixels (DIPS).
        h:
          type: number
          description: Height of the creative in device independent pixels (DIPS).
        wratio:
          type: number
          description: >-
            Relative width of the creative when expressing size as a ratio.
            Required for Flex Ads.
        hratio:
          type: number
          description: >-
            Relative height of the creative when expressing size as a ratio.
            Required for Flex Ads.
        exp:
          type: number
          description: >
            Advisory as to the number of seconds the bidder is willing to wait
            between the auction and the actual

            impression.
        ext:
          type: object
          description: Placeholder for bidder-specific extensions to OpenRTB.
    OpenRtb25BidRequest:
      type: object
      title: Open RTB 25 Bid Request
      additionalProperties: true
      description: >
        The top-level bid request object contains a globally unique bid request
        or auction ID. This `id` attribute is

        required as is at least one impression object (Section 3.2.4). Other
        attributes in this top-level object establish

        rules and restrictions that apply to all impressions being offered.


        There are also several subordinate objects that provide detailed data to
        potential buyers. Among these are the

        `Site` and `App` objects, which describe the type of published media in
        which the impression(s) appear. These

        objects are highly recommended, but only one applies to a given bid
        request depending on whether the media is

        browser-based web content or a non-browser application, respectively.
      required:
        - id
      properties:
        id:
          type: string
          description: Unique ID of the bid request, provided by the exchange.
        imp:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Imp'
          description: >
            Array of `Imp` objects (Section 3.2.4) representing the impressions
            offered. At least 1 `Imp` object is

            required.
        site:
          $ref: '#/components/schemas/OpenRtb25Site'
          description: >
            Details via a `Site` object (Section 3.2.13) about the publisher's
            website. Only applicable and recommended for

            websites.
        app:
          $ref: '#/components/schemas/OpenRtb25App'
          description: >
            Details via an `App` object (Section 3.2.14) about the publisher's
            app (i.e., non-browser applications). Only

            applicable and recommended for apps.
        device:
          $ref: '#/components/schemas/OpenRtb25Device'
          description: >
            Details via a `Device` object (Section 3.2.18) about the user's
            device to which the impression will be

            delivered.
        user:
          $ref: '#/components/schemas/OpenRtb25User'
          description: >
            Details via a `User` object (Section 3.2.20) about the human user of
            the device; the advertising audience.
        test:
          type: number
          description: >-
            Indicator of test mode in which auctions are not billable, where 0 =
            live mode, 1 = test mode.
          default: 0
        at:
          type: number
          description: >
            Auction type, where 1 = First Price, 2 = Second Price Plus.
            Exchange-specific auction types can be defined

            using values greater than 500.
          default: 2
        tmax:
          type: number
          description: >
            Maximum time in milliseconds the exchange allows for bids to be
            received including Internet latency to avoid

            timeout. This value supersedes any a *priori* guidance from the
            exchange.
        wseat:
          type: array
          items:
            type: string
          description: >
            White list of buyer seats (e.g., advertisers, agencies) allowed to
            bid on this impression. IDs of seats and

            knowledge of the buyer's customers to which they refer must be
            coordinated between bidders and the exchange a

            *priori*. At most, only one of `wseat` and `bseat` should be used in
            the same request. Omission of both implies

            no seat restrictions.
        bseat:
          type: array
          items:
            type: string
          description: >
            Block list of buyer seats (e.g., advertisers, agencies) restricted
            from bidding on this impression. IDs of

            seats and knowledge of the buyer's customers to which they refer
            must be coordinated between bidders and the

            exchange a *priori*. At most, only one of `wseat` and `bseat` should
            be used in the same request. Omission of

            both implies no seat restrictions.
        allimps:
          type: number
          description: >
            Flag to indicate if Exchange can verify that the impressions offered
            represent all of the impressions available

            in context (e.g., all on the web page, all video spots such as
            pre/mid/post roll) to support road-blocking.

            0 = no or unknown, 1 = yes, the impressions offered represent all
            that are available.
          default: 0
        cur:
          type: array
          items:
            type: string
          description: >
            Array of allowed currencies for bids on this bid request using
            ISO-4217 alpha codes. Recommended only if the

            exchange accepts multiple currencies.
        wlang:
          type: array
          items:
            type: string
          description: >
            White list of languages for creatives using ISO-639-1-alpha-2.
            Omission implies no specific restrictions, but

            buyers would be advised to consider `language` attribute in the
            `Device` and/or `Content` objects if available.
        bcat:
          type: array
          items:
            type: string
          description: >-
            Blocked advertiser categories using the IAB content categories.
            Refer to List 5.1.
        badv:
          type: array
          items:
            type: string
          description: Block list of advertisers by their domains (e.g., "ford.com").
        bapp:
          type: array
          items:
            type: string
          description: >
            Block list of applications by their platform-specific exchange-
            independent application identifiers. On

            Android, these should be bundle or package names (e.g.,
            com.foo.mygame). On iOS, these are numeric IDs.
        source:
          $ref: '#/components/schemas/OpenRtb25Source'
          description: >
            A Sorce object (Section 3.2.2) that provides data about the
            inventory source and which entity makes the final

            decision.
        regs:
          $ref: '#/components/schemas/OpenRtb25Regs'
          description: >
            A Regs object (Section 3.2.3) that specifies any industry, legal, or
            governmental regulations in force for this

            request.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25BidResponse:
      type: object
      title: Open RTB 25 Bid Response
      additionalProperties: true
      description: >
        This object is the top-level bid response object (i.e., the unnamed
        outer JSON object). The `id` attribute is a

        reflection of the bid request ID for logging purposes. Similarly,
        `bidid` is an optional response tracking ID for

        bidders. If specified, it can be included in the subsequent win notice
        call if the bidder wins. At least one

        `seatbid` object is required, which contains at least one bid for an
        impression. Other attributes are optional.


        To express a "no-bid", the options are to return an empty response with
        HTTP 204. Alternately if the bidder wishes

        to convey to the exchange a reason for not bidding, just a `BidResponse`
        object is returned with a reason code in

        the `nbr` attribute.
      required:
        - id
      properties:
        id:
          type: string
          description: ID of the bid request to which this is a response.
        seatbid:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25SeatBid'
          description: Array of seatbid objects; 1+ required if a bid is to be made.
        bidid:
          type: string
          description: Bidder generated response ID to assist with logging/tracking.
        cur:
          type: string
          description: Bid currency using ISO-4217 alpha codes.
          default: USD
        customdata:
          type: string
          description: >
            Optional feature to allow a bidder to set data in the exchange's
            cookie. The string must be in base85 cookie

            safe characters and be in any format. Proper JSON encoding must be
            used to include "escaped" quotation marks.
        nbr:
          type: number
          description: Reason for not bidding. Refer to List 5.24.
        ext:
          type: object
          description: Placeholder for bidder-specific extensions to OpenRTB.
    OpenRtb25Content:
      type: object
      title: Open RTB 25 Content
      additionalProperties: true
      description: >
        This object describes the content in which the impression will appear,
        which may be syndicated or non-syndicated

        content. This object may be useful when syndicated content contains
        impressions and does not necessarily match the

        publisher's general content. The exchange might or might not have
        knowledge of the page where the content is

        running, as a result of the syndication method. For example might be a
        video impression embedded in an iframe on an

        unknown web property or device.
      properties:
        id:
          type: string
          description: ID uniquely identifying the content.
        episode:
          type: number
          description: Episode number.
        title:
          type: string
          description: >
            Content title.

            Video Examples: "Search Committee" (television), "A New Hope"
            (movie), or "Endgame" (made for web).

            Non-Video Example: "Why an Antarctic Glacier Is Melting So Quickly"
            (Time magazine article).
        series:
          type: string
          description: >
            Content series.

            Video Examples: "The Office" (television), "Star Wars" (movie), or
            "Arby 'N' The Chief" (made for web).

            Non-Video Example: "Ecocentric" (Time Magazine blog).
        season:
          type: string
          description: Content season (e.g., "Season 3").
        artist:
          type: string
          description: Artist credited with the content.
        genre:
          type: string
          description: Genre that best describes the content (e.g., rock, pop, etc).
        album:
          type: string
          description: Album to which the content belongs; typically for audio.
        isrc:
          type: string
          description: International Standard Recording Code conforming to ISO-3901.
        producer:
          $ref: '#/components/schemas/OpenRtb25Producer'
          description: Details about the content `Producer` (Section 3.2.17).
        url:
          type: string
          description: URL of the content, for buy-side contextualization or review.
        cat:
          type: array
          items:
            type: string
          description: >-
            Array of IAB content categories that describe the content producer.
            Refer to List 5.1.
        prodq:
          type: number
          description: Production quality. Refer to List 5.13.
        videoquality:
          type: number
          description: |
            *Note: Deprecated in favor of `prodq`.*
            Video quality. Refer to List 5.13.
        context:
          type: number
          description: Type of content (game, video, text, etc.). Refer to List 5.18.
        contentrating:
          type: string
          description: Content rating (e.g., MPAA).
        userrating:
          type: string
          description: User rating of the content (e.g., number of stars, likes, etc.).
        qagmediarating:
          type: number
          description: Media rating per IQG guidelines. Refer to List 5.19.
        keywords:
          type: string
          description: Comma separated list of keywords describing the content.
        livestream:
          type: number
          description: 0 = not live, 1 = content is live (e.g., stream, live blog).
        sourcerelationship:
          type: number
          description: 0 = indirect, 1 = direct.
        len:
          type: number
          description: Length of content in seconds; appropriate for video or audio.
        language:
          type: string
          description: Content language using ISO-639-1-alpha-2.
        embeddable:
          type: number
          description: >
            Indicator of whether or not the content is embeddable (e.g., an
            embeddable video player), where 0 = no,

            1 = yes.
        data:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Data'
          description: >-
            Additional content data. Each `Data` object (Section 3.2.21)
            represents a different data source.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Data:
      type: object
      title: Open RTB 25 Data
      additionalProperties: true
      description: >
        The data and segment objects together allow additional data about the
        related object (e.g., user, content) to be

        specified. This data may be from multiple sources whether from the
        exchange itself or third parties as specified by

        the `id` field. A bid request can mix data objects from multiple
        providers. The specific data providers in use

        should be published by the exchange a *priori* to its bidders.
      properties:
        id:
          type: string
          description: Exchange-specific ID for the data provider.
        name:
          type: string
          description: Exchange-specific name for the data provider.
        segment:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Segment'
          description: >-
            Array of `Segment` (Section 3.2.22) objects that contain the actual
            data values.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Deal:
      type: object
      title: Open RTB 25 Deal
      additionalProperties: true
      description: >
        This object constitutes a specific deal that was struck a priori between
        a buyer and a seller. Its presence with

        the `Pmp` collection indicates that this impression is available under
        the terms of that deal. Refer to Section 7.3

        for more details.
      required:
        - id
      properties:
        id:
          type: string
          description: A unique identifier for the direct deal.
        bidfloor:
          type: number
          description: Minimum bid for this impression expressed in CPM.
          default: 0
        bidfloorcur:
          type: string
          description: >
            Currency specified using ISO-4217 alpha codes. This may be different
            from bid currency returned by bidder if

            this is allowed by the exchange.
          default: USD
        at:
          type: number
          description: >
            Optional override of the overall auction type of the bid request,
            where 1 = First Price, 2 = Second Price Plus,

            3 = the value passed in `bidfloor` is the agreed upon deal price.
            Additional auction types can be defined by

            the exchange.
        wseat:
          type: array
          items:
            type: string
          description: >
            Whitelist of buyer seats (e.g., advertisers, agencies) allowed to
            bid on this deal. IDs of seats and the

            buyer's customers to which they refer must be coordinated between
            bidders and the exchange a *priori*. Omission

            implies no seat restrictions.
        wadomain:
          type: array
          items:
            type: string
          description: >
            Array of advertiser domains (e.g., advertiser.com) allowed to bid on
            this deal. Omission implies no advertiser

            restrictions.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Device:
      type: object
      title: Open RTB 25 Device
      additionalProperties: true
      description: >
        This object provides information pertaining to the device through which
        the user is interacting. Device information

        includes its hardware, platform, location, and carrier data. The device
        can refer to a mobile handset, a desktop

        computer, set top box, or other digital device.
      properties:
        ua:
          type: string
          description: Browser user agent string.
        geo:
          $ref: '#/components/schemas/OpenRtb25Geo'
          description: >
            Location of the device assumed to be the user's current location
            defined by a `Geo` object (Section 3.2.19).
        dnt:
          type: number
          description: >
            Standard "Do Not Track" flag as set in the header by the browser,
            where 0 = tracking is unrestricted,

            1 = do not track.
        lmt:
          type: number
          description: >
            "Limit Ad Tracking" signal commercially endorsed (e.g., iOS,
            Android), where 0 = tracking is unrestricted,

            1 = tracking must be limited per commercial guidelines.
        ip:
          type: string
          description: IPv4 address closest to device.
        ipv6:
          type: string
          description: IP address closest to device as IPv6.
        devicetype:
          type: number
          description: The general type of device. Refer to List 5.21.
        make:
          type: string
          description: Device make (e.g., "Apple").
        model:
          type: string
          description: Device model (e.g., "iPhone").
        os:
          type: string
          description: Device operating system (e.g., "iOS").
        osv:
          type: string
          description: Device operating system version (e.g., "3.1.2").
        hwv:
          type: string
          description: Hardware version of the device (e.g., "5S" for iPhone 5S).
        h:
          type: number
          description: Physical height of the screen in pixels.
        w:
          type: number
          description: Physical width of the screen in pixels.
        ppi:
          type: number
          description: Screen size as pixels per linear inch.
        pxratio:
          type: number
          description: The ratio of physical pixels to device independent pixels.
        js:
          type: number
          description: Support for JavaScript, where 0 = no, 1 = yes.
        geofetch:
          type: number
          description: >
            Indicates if the geolocation API will be available to JavaScript
            code running in the banner, where 0 = no,

            1 = yes.
        flashver:
          type: string
          description: Version of Flash supported by the browser.
        language:
          type: string
          description: Browser language using ISO-639-1-alpha-2.
        carrier:
          type: string
          description: >
            Carrier or ISP (e.g., "VERIZON") using exchange curated string names
            which should be published to bidders a

            *priori*.
        mccmnc:
          type: string
          description: >
            Mobile carrier as the concatenated MCC-MNC code (e.g., "310-005"
            identifies Verizon Wireless CDMA in the USA).

            Refer to https://en.wikipedia.org/wiki/Mobile_country_code for
            further examples. Note that the dash between the

            MCC and MNC parts is required to remove parsing ambiguity.
        connectiontype:
          type: number
          description: Network connection type. Refer to List 5.22.
        ifa:
          type: string
          description: ID sanctioned for advertiser use in the clear (i.e., not hashed).
        didsha1:
          type: string
          description: Hardware device ID (e.g., IMEI); hashed via SHA1.
        didmd5:
          type: string
          description: Hardware device ID (e.g., IMEI); hashed via MD5.
        dpidsha1:
          type: string
          description: Platform device ID (e.g., Android ID); hashed via SHA1.
        dpidmd5:
          type: string
          description: Platform device ID (e.g., Android ID); hashed via MD5.
        macsha1:
          type: string
          description: MAC address of the device; hashed via SHA1.
        macmd5:
          type: string
          description: MAC address of the device; hashed via MD5.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Format:
      type: object
      title: Open RTB 25 Format
      additionalProperties: true
      description: >
        This object represents an allowed size (i.e., height and width
        combination) or Flex Ad parameters for a banner

        impression. These are typically used in an array where multiple sizes
        are permitted. It is recommended that either

        the `w`/`h` pair or the `wratio`/`hratio`/`wmin` set (i.e., for Flex
        Ads) be specified.
      properties:
        w:
          type: number
          description: Width in device independent pixels (DIPS).
        h:
          type: number
          description: Height in device independent pixels (DIPS).
        wratio:
          type: number
          description: Relative width when expressing size as a ratio.
        hratio:
          type: number
          description: Relative height when expressing size as a ratio.
        wmin:
          type: number
          description: >
            The minimum width in device independent pixels (DIPS) at which the
            ad will be displayed the size is expressed

            as a ratio.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Geo:
      type: object
      title: Open RTB 25 Geo
      additionalProperties: true
      description: >
        This object encapsulates various methods for specifying a geographic
        location. When subordinate to a `Device`

        object, it indicates the location of the device which can also be
        interpreted as the user's current location. When

        subordinate to a `User` object, it indicates the location of the user's
        home base (i.e., not necessarily their

        current location).


        The `lat`/`lon` attributes should only be passed if they conform to the
        accuracy depicted in the `type` attribute.

        For example, the centroid of a geographic region such as postal code
        should not be passed.
      properties:
        lat:
          type: number
          description: Latitude from -90.0 to +90.0, where negative is south.
        lon:
          type: number
          description: Longitude from -180.0 to +180.0, where negative is west.
        dma:
          type: number
          description: >-
            CAW 2020-12-08 This is a Broadsign reach non-2.5 extension but I'm
            adding it anyway
        type:
          type: number
          description: >-
            Source of location data; recommended when passing `lat`/`lon`. Refer
            to List 5.20.
        accuracy:
          type: number
          description: >
            Estimated location accuracy in meters; recommended when lat/lon are
            specified and derived from a device's

            location services (i.e., type = 1). Note that this is the accuracy
            as reported from the device. Consult OS

            specific documentation (e.g., Android, iOS) for exact
            interpretation.
        lastfix:
          type: number
          description: >
            Number of seconds since this geolocation fix was established. Note
            that devices may cache location data across

            multiple fetches. Ideally, this value should be from the time the
            actual fix was taken.
        ipservice:
          type: number
          description: >
            Service or provider used to determine geolocation from IP address if
            applicable (i.e., type = 2). Refer to

            List 5.23.
        country:
          type: string
          description: Country code using ISO-3166-1-alpha-3.
        region:
          type: string
          description: Region code using ISO-3166-2; 2-letter state code if USA.
        regionfips104:
          type: string
          description: >
            Region of a country using FIPS 10-4 notation. While OpenRTB supports
            this attribute, it has been withdrawn by

            NIST in 2008.
        metro:
          type: string
          description: >-
            Google metro code; similar to but not exactly Nielsen DMAs. See
            Appendix A for a link to the codes.
        city:
          type: string
          description: >
            City using United Nations Code for Trade & Transport Locations. See
            Appendix A for a link to the codes.
        zip:
          type: string
          description: Zip or postal code.
        utcoffset:
          type: number
          description: Local time as the number +/- of minutes from UTC.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Imp:
      type: object
      title: Open RTB 25 Imp
      additionalProperties: true
      description: >
        This object describes an ad placement or impression being auctioned. A
        single bid request can include multiple `Imp`

        objects, a use case for which might be an exchange that supports selling
        all ad positions on a given page. Each

        `Imp` object has a required ID so that bids can reference them
        individually.


        The presence of `Banner` (Section 3.2.6), `Video` (Section 3.2.7),
        and/or `Native` (Section 3.2.9) objects

        subordinate to the `Imp` object indicates the type of impression being
        offered. The publisher can choose one such

        type which is the typical case or mix them at their discretion. However,
        any given bid for the impression must

        conform to one of the offered types.
      required:
        - id
      properties:
        id:
          type: string
          description: >
            A unique identifier for this impression within the context of the
            bid request (typically, starts with 1 and

            increments.
        qty:
          type: object
        metric:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Metric'
          description: An array of `Metric` object (Section 3.2.5).
        banner:
          $ref: '#/components/schemas/OpenRtb25Banner'
          description: >
            A `Banner` object (Section 3.2.6); required if this impression is
            offered as a banner ad opportunity.
        video:
          $ref: '#/components/schemas/OpenRtb25Video'
          description: >
            A `Video` object (Section 3.2.7); required if this impression is
            offered as a video ad opportunity.
        audio:
          $ref: '#/components/schemas/OpenRtb25Audio'
          description: >
            An `Audio` object (Section 3.2.8); required if this impression is
            offered as an audio ad opportunity.
        native:
          $ref: '#/components/schemas/OpenRtb25Native'
          description: >
            A `Native` object (Section 3.2.9); required if this impression is
            offered as a native ad opportunity.
        pmp:
          $ref: '#/components/schemas/OpenRtb25Pmp'
          description: >
            A `Pmp` object (Section 3.2.11) containing any private marketplace
            deals in effect for this impression.
        displaymanager:
          type: string
          description: >
            Name of ad mediation partner, SDK technology, or player responsible
            for rendering ad (typically video or

            mobile). Used by some ad servers to customize ad code by partner.
            Recommended for video and/or apps.
        displaymanagerver:
          type: string
          description: >
            Version of ad mediation partner, SDK technology, or player
            responsible for rendering ad (typically video or

            mobile). Used by some ad servers to customize ad code by partner.
            Recommended for video and/or apps.
        instl:
          type: number
          description: 1 = the ad is interstitial or full screen, 0 = not interstitial.
          default: 0
        tagid:
          type: string
          description: >
            Identifier for specific ad placement or ad tag that was used to
            initiate the auction. This can be useful for

            debugging of any issues, or for optimization by the buyer.
        bidfloor:
          type: number
          description: Minimum bid for this impression expressed in CPM.
          default: 0
        bidfloorcur:
          type: string
          description: >
            Currency specified using ISO-4217 alpha codes. This may be different
            from bid currency returned by bidder if

            this is allowed by the exchange.
          default: USD
        clickbrowser:
          type: number
          description: >
            Indicates the type of browser opened upon clicking the creative in
            an app, where 0 = embedded, 1 = native. Note

            that the Safari View Controller in iOS 9.x devices is considered a
            native browser for purposes of this

            attribute.
        secure:
          type: number
          description: >
            Flag to indicate if the impression requires secure HTTPS URL
            creative assets and markup, where 0 = non-secure,

            1 = secure. If omitted, the secure state is unknown, but non-secure
            HTTP support can be assumed.
        iframebuster:
          type: array
          items:
            type: string
          description: Array of exchange-specific names of supported iframe busters.
        exp:
          type: number
          description: >-
            Advisory as to the number of seconds that may elapse between the
            auction and the actual impression.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Metric:
      type: object
      title: Open RTB 25 Metric
      additionalProperties: true
      description: >
        This object is associated with an impression as an array of metrics.
        These metrics can offer insight into the

        impression to assist with decisioning such as average recent
        viewability, click-through rate, etc. Each metric is

        identified by its type, reports the value of the metric, and optionally
        identifies the source or vendor measuring

        the value.
      required:
        - type
        - value
      properties:
        type:
          type: string
          description: >
            Type of metric being presented using exchange curated string names
            which should be published to bidders a

            *priori*.
        value:
          type: number
          description: >-
            Number representing the value of the metric. Probabilities must be
            in the range 0.0 – 1.0.
        vendor:
          type: string
          description: >
            Source of the value using exchange curated string names which should
            be published to bidders a *priori*. If the

            exchange itself is the source versus a third party, "EXCHANGE" is
            recommended.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Native:
      type: object
      title: Open RTB 25 Native
      additionalProperties: true
      description: >
        This object represents a native type impression. Native ad units are
        intended to blend seamlessly into the

        surrounding content (e.g., a sponsored Twitter or Facebook post). As
        such, the response must be well-structured to

        afford the publisher fine-grained control over rendering.


        The Native Subcommittee has developed a companion specification to
        OpenRTB called the Dynamic Native Ads API. It

        defines the request parameters and response markup structure of native
        ad units. This object provides the means of

        transporting request parameters as an opaque string so that the specific
        parameters can evolve separately under the

        auspices of the Dynamic Native Ads API. Similarly, the ad markup served
        will be structured according to that

        specification.


        The presence of a `Native` as a subordinate of the `Imp` object
        indicates that this impression is offered as a

        native type impression. At the publisher's discretion, that same
        impression may also be offered as banner, video,

        and/or audio by also including as `Imp` subordinates objects of those
        types. However, any given bid for the

        impression must conform to one of the offered types.
      required:
        - request
      properties:
        request:
          type: string
          description: Request payload complying with the Native Ad Specification.
        ver:
          type: string
          description: >
            Version of the Dynamic Native Ads API to which `request` complies;
            highly recommended for efficient parsing.
        api:
          type: array
          items:
            type: number
          description: >
            List of supported API frameworks for this impression. Refer to List
            5.6. If an API is not explicitly listed, it

            is assumed not to be supported.
        battr:
          type: array
          items:
            type: number
          description: Blocked creative attributes. Refer to List 5.3.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Pmp:
      type: object
      title: Open RTB 25 Pmp
      additionalProperties: true
      description: >
        This object is the private marketplace container for direct deals
        between buyers and sellers that may pertain to

        this impression. The actual deals are represented as a collection of
        `Deal` objects. Refer to Section 7.3 for more

        details.
      properties:
        private_auction:
          type: number
          description: >
            Indicator of auction eligibility to seats named in the Direct Deals
            object, where 0 = all bids are accepted,

            1 = bids are restricted to the deals specified and the terms
            thereof.
          default: 0
        deals:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Deal'
          description: >
            Array of `Deal` (Section 3.2.12) objects that convey the specific
            deals applicable to this impression.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Producer:
      type: object
      title: Open RTB 25 Producer
      additionalProperties: true
      description: >
        This object defines the producer of the content in which the ad will be
        shown. This is particularly useful when the

        content is syndicated and may be distributed through different
        publishers and thus when the producer and publisher

        are not necessarily the same entity.
      properties:
        id:
          type: string
          description: >
            Content producer or originator ID. Useful if content is syndicated
            and may be posted on a site using embed

            tags.
        name:
          type: number
          description: Content producer or originator name (e.g., "Warner Bros").
        cat:
          type: array
          items:
            type: string
          description: >-
            Array of IAB content categories that describe the content producer.
            Refer to List 5.1.
        domain:
          type: string
          description: Highest level domain of the content producer (e.g., "producer.com").
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Publisher:
      type: object
      title: Open RTB 25 Publisher
      additionalProperties: true
      description: >
        This object describes the publisher of the media in which the ad will be
        displayed. The publisher is typically the

        seller in an OpenRTB transaction.
      properties:
        id:
          type: string
          description: Exchange-specific publisher ID.
        name:
          type: string
          description: Publisher name (may be aliased at the publisher's request).
        cat:
          type: array
          items:
            type: string
          description: >-
            Array of IAB content categories that describe the publisher. Refer
            to List 5.1.
        domain:
          type: string
          description: Highest level domain of the publisher (e.g., "publisher.com").
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Regs:
      type: object
      title: Open RTB 25 Regs
      additionalProperties: true
      description: >
        This object contains any legal, governmental, or industry regulations
        that apply to the request. The `coppa` flag

        signals whether or not the request falls under the United States Federal
        Trade Commission's regulations for the

        United States Children's Online Privacy Protection Act ("COPPA").
      properties:
        coppa:
          type: number
          description: >
            Flag indicating if this request is subject to the COPPA regulations
            established by the USA FTC, where 0 = no,

            1 = yes. Refer to Section 7.5 for more information.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25SeatBid:
      type: object
      title: Open RTB 25 Seat Bid
      description: >
        A bid response can contain multiple `SeatBid` objects, each on behalf of
        a different bidder seat and each

        containing one or more individual bids. If multiple impressions are
        presented in the request, the `group` attribute

        can be used to specify if a seat is willing to accept any impressions
        that it can win (default) or if it is only

        interested in winning any if it can win them all as a group.
      additionalProperties: true
      required:
        - bid
      properties:
        bid:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Bid'
          description: >
            Array of 1+ `Bid` objects (Section 4.2.3) each related to an
            impression. Multiple bids can relate to the same

            impression.
        seat:
          type: string
          description: >-
            ID of the buyer seat (e.g., advertiser, agency) on whose behalf this
            bid is made.
        group:
          type: number
          description: >-
            0 = impressions can be won individually; 1 = impressions must be won
            or lost as a group.
          default: 0
        ext:
          type: object
          description: Placeholder for bidder-specific extensions to OpenRTB.
    OpenRtb25Segment:
      type: object
      title: Open RTB 25 Segment
      additionalProperties: true
      description: >
        Segment objects are essentially key-value pairs that convey specific
        units of data. The parent `Data` object is a

        collection of such values from a given data provider. The specific
        segment names and value options must be

        published by the exchange a *priori* to its bidders.
      properties:
        id:
          type: string
          description: ID of the data segment specific to the data provider.
        name:
          type: string
          description: Name of the data segment specific to the data provider.
        value:
          type: string
          description: String representation of the data segment value.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Site:
      type: object
      title: Open RTB 25 Site
      additionalProperties: true
      description: >
        This object should be included if the ad supported content is a website
        as opposed to a non-browser application. A

        bid request must not contain both a `Site` and an `App` object. At a
        minimum, it is useful to provide a site ID or

        page URL, but this is not strictly required.
      properties:
        id:
          type: string
          description: Exchange-specific site ID.
        name:
          type: string
          description: Site name (may be aliased at the publisher's request).
        domain:
          type: string
          description: Domain of the site (e.g., "mysite.foo.com").
        cat:
          type: array
          items:
            type: string
          description: Array of IAB content categories of the site. Refer to List 5.1.
        sectioncat:
          type: array
          items:
            type: string
          description: >-
            Array of IAB content categories that describe the current section of
            the site. Refer to List 5.1.
        pagecat:
          type: array
          items:
            type: string
          description: >
            Array of IAB content categories that describe the current page or
            view of the site. Refer to List 5.1.
        page:
          type: string
          description: URL of the page where the impression will be shown.
        ref:
          type: string
          description: Referrer URL that caused navigation to the current page.
        search:
          type: string
          description: Search string that caused navigation to the current page.
        mobile:
          type: number
          description: >
            Indicates if the site has been programmed to optimize layout when
            viewed on mobile devices, where 0 = no,

            1 = yes.
        privacypolicy:
          type: number
          description: Indicates if the site has a privacy policy, where 0 = no, 1 = yes.
        publisher:
          $ref: '#/components/schemas/OpenRtb25Publisher'
          description: Details about the Publisher (Section 3.2.15) of the site.
        content:
          $ref: '#/components/schemas/OpenRtb25Content'
          description: Details about the Content (Section 3.2.16) within the site.
        keywords:
          type: string
          description: Comma separated list of keywords about the site.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Source:
      type: object
      title: Open RTB 25 Source
      additionalProperties: true
      description: >
        This object describes the nature and behavior of the entity that is the
        source of the bid request upstream from the

        exchange. The primary purpose of this object is to define post-auction
        or upstream decisioning when the exchange

        itself does not control the final decision. A common example of this is
        header bidding, but it can also apply to

        upstream server entities such as another RTB exchange, a mediation
        platform, or an ad server combines direct

        campaigns with 3rd party demand in decisioning.
      properties:
        fd:
          type: number
          description: >-
            Entity responsible for the final impression sale decision, where 0 =
            exchange, 1 = upstream source.
        tid:
          type: string
          description: >
            Transaction ID that must be common across all participants in this
            bid request (e.g., potentially multiple

            exchanges).
        pchain:
          type: string
          description: >-
            Payment ID chain string containing embedded syntax described in the
            TAG Payment ID Protocol v1.0.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25User:
      type: object
      title: Open RTB 25 User
      additionalProperties: true
      description: >
        This object contains information known or derived about the human user
        of the device (i.e., the audience for

        advertising). The user `id` is an exchange artifact and may be subject
        to rotation or other privacy policies.

        However, this user ID must be stable long enough to serve reasonably as
        the basis for frequency capping and

        retargeting.
      properties:
        id:
          type: string
          description: >-
            Exchange-specific ID for the user. At least one of id or `buyeruid`
            is recommended.
        ifa:
          type: string
          description: >-
            Frame ID (unique identifier for all UK frames as defined by Space).
            Optional param that is not a part of OpenRTB spec, added to support
            requests from Dax SSP.
        buyeruid:
          type: string
          description: >
            Buyer-specific ID for the user as mapped by the exchange for the
            buyer. At least one of `buyeruid` or `id` is

            recommended.
        yob:
          type: number
          description: Year of birth as a 4-digit integer.
        gender:
          type: string
          description: >-
            Gender, where "M" = male, "F" = female, "O" = known to be other
            (i.e., omitted is unknown).
        keywords:
          type: string
          description: Comma separated list of keywords, interests, or intent.
        customdata:
          type: string
          description: >
            Optional feature to pass bidder data that was set in the exchange's
            cookie. The string must be in base85 cookie

            safe characters and be in any format. Proper JSON encoding must be
            used to include "escaped" quotation marks.
        geo:
          $ref: '#/components/schemas/OpenRtb25Geo'
          description: >
            Location of the user's home base defined by a `Geo` object (Section
            3.2.19). This is not necessarily their

            current location.
        data:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Data'
          description: >-
            Additional user data. Each `Data` object (Section 3.2.21) represents
            a different data source.
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtb25Video:
      type: object
      title: Open RTB 25 Video
      additionalProperties: true
      description: >
        This object represents an in-stream video impression. Many of the fields
        are non-essential for minimally viable

        transactions, but are included to offer fine control when needed. Video
        in OpenRTB generally assumes compliance

        with the VAST standard. As such, the notion of companion ads is
        supported by optionally including an array of

        `Banner` objects (refer to the `Banner` object in Section 3.2.6) that
        define these companion ads.


        The presence of a `Video` as a subordinate of the `Imp` object indicates
        that this impression is offered as a video

        type impression. At the publisher's discretion, that same impression may
        also be offered as banner, audio, and/or

        native by also including as `Imp` subordinates objects of those types.
        However, any given bid for the impression

        must conform to one of the offered types.
      properties:
        mimes:
          type: array
          items:
            type: string
          description: >-
            Content MIME types supported (e.g., "`video/x-ms-wmv`",
            "`video/mp4`").
        minduration:
          type: number
          description: Minimum video ad duration in seconds.
        maxduration:
          type: number
          description: Maximum video ad duration in seconds.
        protocols:
          type: array
          items:
            type: number
          description: >
            Array of supported video protocols. Refer to List 5.8. At least one
            supported protocol must be specified in

            either the `protocol` or `protocols` attribute.
        protocol:
          type: number
          description: >
            *NOTE: Deprecated in favor of `protocols`.*

            Supported video protocol. Refer to List 5.8. At least one supported
            protocol must be specified in either the

            `protocol` or `protocols` attribute.
        w:
          type: number
          description: Width of the video player in device independent pixels (DIPS).
        h:
          type: number
          description: Height of the video player in device independent pixels (DIPS).
        startdelay:
          type: number
          description: >
            Indicates the start delay in seconds for pre-roll, mid-roll, or
            post-roll ad placements. Refer to List 5.12 for

            additional generic values.
        placement:
          type: number
          description: Placement type for the impression. Refer to List 5.9.
        linearity:
          type: number
          description: >
            Indicates if the impression must be linear, nonlinear, etc. If none
            specified, assume all are allowed. Refer to

            List 5.7.
        skip:
          type: number
          description: >
            Indicates if the player will allow the video to be skipped, where 0
            = no, 1 = yes.


            If a bidder sends markup/creative that is itself skippable, the Bid
            object should include the `attr` array with

            an element of 16 indicating skippable video. Refer to List 5.3.
        skipmin:
          type: number
          description: >
            Videos of total duration greater than this number of seconds can be
            skippable; only applicable if the ad is

            skippable.
          default: 0
        skipafter:
          type: number
          description: >
            Number of seconds a video must play before skipping is enabled; only
            applicable if the ad is skippable.
          default: 0
        sequence:
          type: number
          description: >
            If multiple ad impressions are offered in the same bid request, the
            sequence number will allow for the

            coordinated delivery of multiple creatives.
        battr:
          type: array
          items:
            type: number
          description: Blocked creative attributes. Refer to List 5.3.
        maxextended:
          type: number
          description: >
            Maximum extended ad duration if extension is allowed. If blank or 0,
            extension is not allowed. If -1, extension

            is allowed, and there is no time limit imposed. If greater than 0,
            then the value represents the number of

            seconds of extended play supported beyond the `maxduration` value.
        minbitrate:
          type: number
          description: Minimum bit rate in Kbps.
        maxbitrate:
          type: number
          description: Maximum bit rate in Kbps.
        boxingallowed:
          type: number
          description: >-
            Indicates if letter-boxing of 4:3 content into a 16:9 window is
            allowed, where 0 = no, 1 = yes.
          default: 1
        playbackmethod:
          type: array
          items:
            type: number
          description: >
            Playback methods that may be in use. If none are specified, any
            method may be used. Refer to List 5.10. Only

            one method is typically used in practice. As a result, this array
            may be converted to an integer in a future

            version of the specification. It is strongly advised to use only the
            first element of this array in preparation

            for this change.
        playbackend:
          type: number
          description: The event that causes playback to end. Refer to List 5.11.
        delivery:
          type: array
          items:
            type: number
          description: >
            Supported delivery methods (e.g., streaming, progressive). If none
            specified, assume all are supported. Refer

            to List 5.15.
        pos:
          type: number
          description: Ad position on screen. Refer to List 5.4.
        companionad:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtb25Banner'
          description: >-
            Array of `Banner` objects (Section 3.2.6) if companion ads are
            available.
        api:
          type: array
          items:
            type: number
          description: >
            List of supported API frameworks for this impression. Refer to List
            5.6. If an API is not explicitly listed, it is assumed not to be
            supported.
        companiontype:
          type: array
          items:
            type: number
          description: >
            Supported VAST companion ad types. Refer to List 5.14. Recommended
            if companion `Banner` objects are included via

            the `companionad` array. If one of these banners will be rendered as
            an end-card, this can be specified using

            the `vcm` attribute with the particular banner (Section 3.2.6).
        ext:
          type: object
          description: Placeholder for exchange-specific extensions to OpenRTB.
    OpenRtbCompositeTransactionRecord:
      title: Open Rtb Composite Transaction Record
      type: object
      allOf:
        - $ref: '#/components/schemas/OpenRtbCompositeTransactionRecordRequestSection'
        - $ref: >-
            #/components/schemas/OpenRtbCompositeTransactionRecordResponseSection
        - $ref: >-
            #/components/schemas/OpenRtbCompositeTransactionRecordWinLossNotificationSection
        - $ref: >-
            #/components/schemas/OpenRtbCompositeTransactionRecordPlaySyncSection
        - $ref: '#/components/schemas/OpenRtbCompositeTransactionRecordIndexSection'
    OpenRtbCompositeTransactionRecordDealEntry:
      title: Open Rtb Composite Transaction Record Deal Entry
      type: object
      allOf:
        - $ref: >-
            #/components/schemas/OpenRtbCompositeTransactionRecordDealEntrySourceData
        - type: object
          properties:
            bidFloorCpmUsd:
              type: number
    OpenRtbCompositeTransactionRecordDealEntrySourceData:
      title: Open Rtb Composite Transaction Record Deal Entry Source Data
      type: object
      properties:
        dealId:
          type: string
        currencyCode:
          type: string
        bidFloorCpmInSrcCurrency:
          type: number
        bidFloorSspUnits:
          type: number
    OpenRtbCompositeTransactionRecordIndexSection:
      title: Open Rtb Composite Transaction Record Index Section
      type: object
      description: This piece is build just for rapid indexing in the table
      properties:
        expiresEpochSeconds:
          type: number
          description: Point at which DynamoDB may auto-delete this record
        requestDateHourMinuteUtcSpread:
          type: string
          description: Indexed, 3-place hex spread to prevent hotkey
        purchaseTypeAndIdSpread:
          type: string
          description: >-
            Indexed.  If the response is part of a purchase, this is the
            purchase id in format TYPE_ID_SPREAD (e.g., CAMPAIGN_12345_00D,
            ORDER_2234_0E1)
        minBidFloorCpmUsd:
          type: number
          description: Of all the deals, this is the minimum one
        maxBidFloorCpmUsd:
          type: number
          description: Of all the deals, this is the maximum one
        averageBidFloorCpmUsd:
          type: number
          description: Of all the deals, this is the average one
    OpenRtbCompositeTransactionRecordPlaySyncSection:
      title: Open Rtb Composite Transaction Record PlaySync Section
      type: object
      description: Just the PlaySync section of the tx record
      properties:
        playRecordedTimestampEpochMS:
          type: number
          description: >-
            Placeholder - to be updated when the play comes in - already have
            the hash so should be able to deref
    OpenRtbCompositeTransactionRecordRequestSection:
      title: Open Rtb Composite Transaction Record Request Section
      type: object
      description: Just the request section of the tx record
      properties:
        deviceId:
          type: number
          description: >-
            Adomni device id, hash key, no server type since this is all prod
            anyway by construction
        requestTimestampEpochMS:
          type: number
          description: Range key
        integrationKey:
          type: string
          description: Indexed
        providerId:
          $ref: '#/components/schemas/OpenRtbSupplySideProviderId'
          description: Not indexed since it would be hot, and of limited value
        auctionId:
          type: string
          description: Indexed, is request.id
        impressionMultiplier:
          type: number
        cpmToSspUnitsMultiplier:
          type: number
          description: >-
            If the bid floor is not provided in CPM, multiply by this number to
            make it CPM (default 1, assumes bid floor IS cpm)
        currency:
          $ref: '#/components/schemas/CurrencyConversion'
          description: Both the currency and the conversion to USD at auction time
        availableDeals:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtbCompositeTransactionRecordDealEntry'
        rawImpressionSource:
          type: object
        rawRequest:
          $ref: '#/components/schemas/OpenRtb25BidRequest'
    OpenRtbCompositeTransactionRecordResponseSection:
      title: Open Rtb Composite Transaction Record Response Section
      type: object
      description: Just the response section of the tx record
      properties:
        noBid:
          $ref: '#/components/schemas/OpenRtbNoBidDescriptor'
        selectedDealId:
          type: string
        openRtbAuctionType:
          type: number
          description: >-
            From OpenRtb, 1=first price, 2=second price, etc - in response since
            may be deal specific
        bidCpmUsd:
          type: number
        bidSspUnits:
          type: number
        purchaseTypeAndId:
          type: string
        bidContentId:
          type: number
          description: Not indexed since typically easily calculable from purchaseTypeAndId
        metrics:
          $ref: '#/components/schemas/SinglePlayMetrics'
        rawResponse:
          $ref: '#/components/schemas/OpenRtb25BidResponse'
    OpenRtbCompositeTransactionRecordSearchResponse:
      title: Open Rtb Composite Transaction Record Search Response
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/OpenRtbCompositeTransactionRecord'
        nextToken:
          type: string
    OpenRtbCompositeTransactionRecordWinLossNotificationSection:
      title: Open Rtb Composite Transaction Record WinLossNotification Section
      type: object
      description: Just the WinLossNotification section of the tx record
      properties:
        winLossResult:
          $ref: '#/components/schemas/OpenRtbNotification'
        finalPriceCpmUsd:
          type: number
          description: Set at bid time for first price, win time for second price auctions
    OpenRtbNoBidDescriptor:
      type: object
      title: OpenRtb No Bid Descriptor
      properties:
        reason:
          $ref: '#/components/schemas/OpenRtbNoBidReason'
        details:
          type: object
    OpenRtbNoBidReason:
      type: string
      title: Open Rtb No Bid Reason
      enum:
        - NoBiddableImpression
        - NothingScheduled
        - InCoolDownPeriod
        - BlockedBySyncLock
        - NoBidFoundInResponse
        - NoMatchingAdomniDevice
        - NoReasonFound
        - ExceptionThrown
        - BidFloorTooHigh
        - InvalidPrivateAuction
        - MissingThirdPartyId
        - NoPlaysPending
        - DealIdSuppliedButMatchNotFound
        - NoDealIdSuppliedAndNoOpenDealAvailable
        - ContentConstraintRulesOutAvailablePlay
    OpenRtbNotification:
      type: object
      title: OpenRtb Notification
      properties:
        receivedEpochMS:
          type: number
        notificationType:
          type: string
        auctionPrice:
          type: number
        auctionId:
          type: string
        auctionImpId:
          type: string
        auctionBidId:
          type: string
        auctionAdId:
          type: string
        auctionSeatId:
          type: string
        auctionCurrency:
          type: string
        impressionId:
          type: string
        impressionCount:
          type: number
          description: >-
            Overrides impression value from the request - not a default
            OpenRTB2.5 field
        lossCode:
          type: string
        lossDetail:
          type: string
          description: >-
            If the SSP supports loss details, stick em in here - not a default
            OpenRTB2.5 field
        recordImpressionOnWin:
          type: boolean
          description: >-
            If set to true, the system will record the impression at win time,
            and ignore the impression (burl) events
    OpenRtbSupplySideProviderId:
      title: Open Rtb Supply Side Provider Id
      type: string
      enum:
        - BroadsignReach
        - Hivestack
        - Viooh
        - Vistar
        - PlaceExchange
        - Dax
    OperatingHours:
      type: string
      description: >-
        24/7, custom, or inherit. The inherit option only applies to subdevices
        in a network
      enum:
        - AlwaysOn
        - Custom
        - Inherit
    PaginationObject:
      title: Pagination Object
      type: object
      allOf:
        - $ref: '#/components/schemas/SimplePaginationObject'
        - type: object
          properties:
            orderBy:
              type: string
            sortDirection:
              $ref: '#/components/schemas/PaginationSortDirection'
    PaginationObjectWithTotal:
      title: Pagination Object With Total
      type: object
      allOf:
        - $ref: '#/components/schemas/PaginationObject'
        - type: object
          properties:
            total:
              type: number
    PaginationSortDirection:
      title: Pagination Sort Direction
      type: string
      enum:
        - Asc
        - Desc
    PlayRecordBridgeRequest:
      type: object
      title: Play Record Bridge Request
      description: A request to the play record bridge
      properties:
        payload:
          type: string
        timestampEpochMS:
          type: number
        localNowEpochMS:
          type: number
        debug:
          type: boolean
    PlayRecordKeyFields:
      type: object
      title: Play Record Key Fields
      description: Just the key fields of a record in the player-played-record table
      properties:
        serverBoardId:
          type: string
          description: |
            The server type (dev/prod) + __ + device id (Default hash key)
        timestamp:
          type: number
          description: >
            This is the time the row was recorded, NOT the time the play started
            or ended (Default range key)
    PlayRecordSearchRequest:
      type: object
      title: Play Record Search Request
      properties:
        searchType:
          type: string
          enum:
            - PurchaseEntity
            - ExchangeTransaction
            - DeviceId
            - ManualImport
        requestTimeStartWindowInclusiveEpochMS:
          type: number
        requestTimeEndWindowExclusiveEpochMS:
          type: number
        purchaseEntityFilter:
          $ref: '#/components/schemas/PurchaseEntity'
        deviceIdFilter:
          $ref: '#/components/schemas/PlayRecordSearchRequestDeviceIdFilter'
        limit:
          type: number
        sort:
          $ref: '#/components/schemas/PaginationSortDirection'
    PlayRecordSearchRequestDeviceIdFilter:
      type: object
      title: Play Record Search Request Device Id Params
      properties:
        deviceId:
          type: number
        exchangeData:
          $ref: '#/components/schemas/PlayRecordSearchRequestExchangeDataFilter'
        manualImportId:
          type: string
        payloadGuid:
          type: string
        playRecordType:
          type: string
          enum:
            - Programmatic
            - Non-Programmatic
          x-enum-varnames:
            - Programmatic
            - NonProgrammatic
        purchaseEntity:
          $ref: '#/components/schemas/PurchaseEntity'
    PlayRecordSearchRequestExchangeDataFilter:
      type: object
      title: Play Record Search Request Exchange Data Filter
      description: You must also set device id if you use this
      properties:
        exchangeGuid:
          type: string
        exchangeDspId:
          type: number
    PlayRecordSearchResponse:
      type: object
      title: Play Record Search Response
      properties:
        request:
          $ref: '#/components/schemas/PlayRecordSearchRequest'
        results:
          type: array
          items:
            $ref: '#/components/schemas/V2PlayRecord'
    PlayRecordSendBack:
      type: object
      title: Play Record Send Back
      properties:
        notes:
          type: string
        purchaseTypeAndId:
          type: string
        adPlays:
          type: number
        purchaseId:
          type: number
        typeId:
          type: number
        networkId:
          type: number
        metrics:
          $ref: '#/components/schemas/SinglePlayMetrics'
        impressions:
          type: number
        auth0TeamId:
          type: string
        purchaseType:
          $ref: '#/components/schemas/PurchaseType'
    PlayRecordStatus:
      type: string
      description: The status of this play
      enum:
        - Complete
        - Incomplete
    PlayRecordV1V2Fields:
      type: object
      title: Play Record V1V2 Fields
      description: >-
        All the fields that are common between both V1 and V2 of the
        player-played-table records
      allOf:
        - $ref: '#/components/schemas/PlayRecordKeyFields'
        - type: object
          properties:
            calc:
              $ref: '#/components/schemas/V2PlayRecordCalculatedFields'
            status:
              $ref: '#/components/schemas/PlayRecordStatus'
            manualImportId:
              type: string
            localIP:
              type: string
            payloadGuid:
              type: string
              description: >
                This is the GUID from the VAST payload (checked to prevent
                duplicate submission).  This is also used as the hash key in the
                vast-async-impression-queue table
    PointsOfInterestCreateRequest:
      type: object
      title: Points Of Interest Create Request
      properties:
        fileKey:
          type: string
        radiusMiles:
          type: number
        skipGeocoding:
          type: boolean
          default: false
        pointsOfInterest:
          type: array
          items:
            $ref: '#/components/schemas/PointsOfInterestEntry'
        safeGraphSearch:
          $ref: '#/components/schemas/SafeGraphSearchParameters'
    PointsOfInterestCreateResponse:
      type: object
      title: Points Of Interest Create Response
      properties:
        pointsOfInterestListId:
          type: number
        progressPercent:
          type: number
        progressMessage:
          type: string
        progressError:
          type: string
    PointsOfInterestEntry:
      type: object
      title: Points Of Interest Entry
      properties:
        pointsOfInterestId:
          type: integer
        address:
          type: string
        lat:
          type: number
        lng:
          type: number
        label:
          type: string
        processed:
          type: boolean
        dateCreated:
          type: string
        dateUpdated:
          type: string
        geocodeResponse:
          type: string
        geocodeResponseCode:
          type: number
        metaData:
          type: string
        pointsOfInterestListId:
          type: integer
        radiusMiles:
          type: number
        s2Key:
          type: string
    PointsOfInterestGetResponse:
      title: Points Of Interest Get Response
      type: object
      properties:
        progressPercent:
          type: number
        progressMessage:
          type: string
        progressError:
          type: string
        pointsOfInterestCsvDownloadLink:
          type: string
        pointsOfInterestJsonData:
          type: array
          items:
            $ref: '#/components/schemas/PointsOfInterestEntry'
        pointsOfInterestDeviceFinder:
          type: array
          items:
            $ref: '#/components/schemas/DeviceFinder'
    PointsOfInterestIncludesEnum:
      title: Points Of Interest Includes Enum
      type: string
      enum:
        - CSV
        - Meta
        - DeviceFinder
        - Pois
      x-enum-varnames:
        - Csv
        - Meta
        - DeviceFinder
        - Pois
    PointsOfInterestListDataSourceEnum:
      title: POI list data source
      type: string
      enum:
        - SafeGraph
        - Upload
        - ReportGenerated
      default: Upload
    PointsOfInterestListDuplicateRequest:
      type: object
      title: Points Of Interest List Duplicate Request
      properties:
        pointsOfInterestListId:
          type: number
    PointsOfInterestListEntry:
      type: object
      title: Points Of Interest List Entry
      properties:
        pointsOfInterestListId:
          type: integer
        name:
          type: string
        dateCreated:
          type: string
        dateUpdated:
          type: string
        dataSource:
          $ref: '#/components/schemas/PointsOfInterestListDataSourceEnum'
        deleted:
          type: boolean
    PointsOfInterestListUploadRequest:
      type: object
      title: Points of Interest List Upload Request
      required:
        - fileName
        - contentType
      properties:
        fileName:
          type: string
          description: Original file name
        contentType:
          type: string
          description: Mimetype of the file
    PointsOfInterestUpdateRadiusRequest:
      type: object
      title: Points Of Interest Update Radius Request
      properties:
        pointsOfInterestListId:
          type: number
        pointsOfInterest:
          type: array
          items:
            $ref: '#/components/schemas/PointsOfInterestEntry'
        radiusMiles:
          type: number
    PricingDeal:
      title: Pricing Deal
      type: object
      properties:
        dealId:
          type: number
        publicKey:
          type: string
        label:
          type: string
        downstreamKey:
          type: string
        ownerAuth0TeamId:
          type: string
        deviceFilterSavedSearchId:
          type: string
        cpmUsdFloor:
          type: number
        startDateHourInclusiveUtc:
          type: string
        endDateHourExclusiveUtc:
          type: string
        advertiserAuth0TeamIdList:
          type: array
          items:
            type: string
        offerType:
          $ref: '#/components/schemas/PricingDealOfferType'
        state:
          $ref: '#/components/schemas/PricingDealState'
        biddingMode:
          $ref: '#/components/schemas/PricingDealBiddingMode'
        createdEpochMS:
          type: number
        updatedEpochMS:
          type: number
    PricingDealBiddingMode:
      type: string
      enum:
        - Standard
        - Overbid
        - ProgrammaticGuaranteed
      default: Standard
    PricingDealBundle:
      type: object
      title: Pricing Deal Bundle
      allOf:
        - $ref: '#/components/schemas/PricingDeal'
        - type: object
          properties:
            deviceIdList:
              type: array
              items:
                type: number
            venueTypeIdList:
              type: array
              items:
                type: number
            deviceIdListUpdatedEpochMS:
              type: number
            mediaOwnerLabel:
              type: string
            advertiserTeamPublicList:
              type: array
              items:
                $ref: '#/components/schemas/AdomniTeamPublic'
    PricingDealBundleList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/PricingDealBundle'
    PricingDealInclude:
      type: string
      enum:
        - MediaOwnerLabel
        - AdvertiserUserPublicList
        - DeviceIdList
        - VenueTypeIdList
    PricingDealOfferType:
      type: string
      enum:
        - Open
        - ListedAdvertisers
    PricingDealSearchRequest:
      title: Pricing Deal Search Request
      type: object
      description: Input to search for PMP deals - we can expand as necessary
      properties:
        ownerAuth0TeamIdList:
          type: array
          items:
            type: string
        advertiserAuth0TeamIdList:
          type: array
          items:
            type: string
        labelContains:
          type: string
        states:
          type: array
          items:
            $ref: '#/components/schemas/PricingDealState'
        offerTypes:
          type: array
          items:
            $ref: '#/components/schemas/PricingDealOfferType'
        dealIds:
          type: array
          items:
            type: number
        publicKeys:
          type: array
          items:
            type: string
        downstreamKeys:
          type: array
          items:
            type: string
        anyMatch:
          type: string
        includes:
          type: array
          items:
            $ref: '#/components/schemas/PricingDealInclude'
        startDateHourInclusiveUtcFilter:
          $ref: '#/components/schemas/DateHourFilter'
        endDateHourExclusiveUtcFilter:
          $ref: '#/components/schemas/DateHourFilter'
        pagination:
          $ref: '#/components/schemas/PaginationObjectWithTotal'
    PricingDealSearchResponse:
      title: Pricing Deal Search Response
      type: object
      description: Input to search for PMP deals - we can expand as necessary
      allOf:
        - $ref: '#/components/schemas/PricingDealBundleList'
        - type: object
          properties:
            request:
              $ref: '#/components/schemas/PricingDealSearchRequest'
            pagination:
              $ref: '#/components/schemas/PaginationObjectWithTotal'
    PricingDealState:
      type: string
      enum:
        - Ready
        - Deleted
        - Paused
        - Archived
        - InvalidDealSize
    PublicOwnerLabelRequest:
      type: object
      description: retrieves a list of public media owner labels
      properties:
        ownerAuth0Ids:
          type: array
          items:
            type: string
    PurchaseEntity:
      title: Purchase Entity
      description: >-
        Each purchase is mapped to an identification number and type of purchase
        (See PurchaseType)
      type: object
      required:
        - purchaseId
        - purchaseType
      properties:
        purchaseId:
          type: number
        purchaseType:
          $ref: '#/components/schemas/PurchaseType'
    PurchaseType:
      type: string
      title: Purchase Type
      enum:
        - ORDER
        - CAMPAIGN
        - EXCHANGECONTENT
        - FILLER
        - SPOTLIGHT
      x-enum-varnames:
        - Order
        - Campaign
        - ExchangeContent
        - Filler
        - Spotlight
    QueuePlayerContent:
      type: object
      title: Queue Player Content
      description: TBD
      properties:
        id:
          type: string
        url:
          type: string
        contentType:
          type: string
        durationMS:
          type: number
        height:
          type: number
        width:
          type: number
        thirdPartyId:
          type: string
        iabCodes:
          type: array
          items:
            type: string
    QueuePlayerEntry:
      type: object
      title: Queue Player Entry
      description: TBD
      properties:
        serverTagId:
          type: string
        purchaseId:
          type: string
        advertiserAuth0TeamId:
          type: string
        deviceOwnerAuth0TeamId:
          type: string
          description: ID of the owner of the target device
        notBeforeEpochMS:
          type: number
        remainingPlays:
          type: number
          description: How many plays remain before this row should be deleted
        playOffsetMS:
          type: number
        nextPlayNotBeforeEpochMS:
          type: number
        priority:
          type: number
        pacingMode:
          $ref: '#/components/schemas/DynamicSchedulePacingMode'
        guid:
          type: string
        contentType:
          type: string
          description: >-
            Content type for this play.  All content (in either content or
            multiContent) must match this type.  Calculated.
        content:
          $ref: '#/components/schemas/QueuePlayerContent'
        impTrackers:
          type: array
          items:
            type: string
        multiContent:
          type: array
          items:
            $ref: '#/components/schemas/QueuePlayerMultiContentEntry'
        expiresEpochSeconds:
          type: number
        processors:
          type: array
          items:
            $ref: '#/components/schemas/VastPayloadProc'
        maxBidPerAdPlayCents:
          type: number
          description: Deprecated 2020-12-30, use expectedCpmCents instead
        expectedCostCpmCents:
          type: number
        expectedImpressions:
          type: number
        biddingMode:
          $ref: '#/components/schemas/PricingDealBiddingMode'
        adomniCommissionPercent:
          description: >-
            What percent of each sale is given to Adomni - cannot be 100, or the
            owner gets nothing
          type: number
          minimum: 0
          maximum: 99.999
        billingType:
          $ref: '#/components/schemas/EnterpriseCampaignBillingType'
        billingMode:
          $ref: '#/components/schemas/EnterpriseCampaignBillingMode'
        sendBack:
          $ref: '#/components/schemas/PlayRecordSendBack'
        overrideOpenRtbAdDomain:
          type: string
        downstreamDealId:
          type: string
        contentIabCodes:
          type: array
          items:
            type: string
        flags:
          type: array
          items:
            type: string
    QueuePlayerEntryKey:
      type: object
      title: Queue Player Keys Entry
      description: TBD
      properties:
        serverTagId:
          type: string
        notBeforeEpochMS:
          type: number
    QueuePlayerKeysResponse:
      type: object
      title: Queue Player Keys Response
      description: Lists records created as part of a queue player keys request
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/QueuePlayerEntryKey'
        nextToken:
          type: string
    QueuePlayerMultiContentEntry:
      type: object
      title: Queue Player Multi Content Entry
      description: TBD
      properties:
        content:
          $ref: '#/components/schemas/QueuePlayerContent'
        weight:
          type: number
    QueuePlayerPurgeRequest:
      type: object
      title: Queue Player Purge Request
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/QueuePlayerPurgeRequestEntry'
        startEpochMS:
          type: number
        endEpochMS:
          type: number
        serverType:
          type: string
        dryRun:
          type: boolean
    QueuePlayerPurgeRequestEntry:
      type: object
      title: Queue Player Purge Request Entry
      properties:
        value:
          type: string
        entryType:
          type: string
          enum:
            - CampaignId
            - DeviceId
            - NetworkId
            - Tag
        allFlags:
          description: If set, plays are only removed if they have all the flags marked
          type: array
          items:
            type: string
        anyFlags:
          description: >-
            If set, plays are only removed if they have at least one of the
            flags marked
          type: array
          items:
            type: string
    QueuePlayerPurgeResponse:
      type: object
      title: Queue Player Purge Response
      properties:
        request:
          $ref: '#/components/schemas/QueuePlayerPurgeRequest'
        removed:
          type: number
    QueuePlayerRequest:
      type: object
      title: Queue Player Request
      description: >-
        Creates play requests.  Only one of entries or entry may be set.  If
        entries is set, then count and offset will be ignored
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/QueuePlayerRequestEntry'
        entry:
          $ref: '#/components/schemas/QueuePlayerRequestEntry'
        count:
          type: integer
          default: 1
          minimum: 1
          maximum: 200
        offsetMS:
          type: integer
          default: 1
          minimum: 1
        explicitRequestTimes:
          type: array
          items:
            $ref: '#/components/schemas/QueuePlayerRequestTimeAndCount'
    QueuePlayerRequestEntry:
      type: object
      title: Queue Player Request Entry
      description: TBD
      properties:
        tagId:
          type: string
        purchaseId:
          type: string
        advertiserAuth0TeamId:
          type: string
        deviceOwnerAuth0TeamId:
          type: string
        notBeforeEpochMS:
          type: number
        content:
          $ref: '#/components/schemas/QueuePlayerContent'
        impTrackers:
          type: array
          items:
            type: string
        multiContent:
          type: array
          items:
            $ref: '#/components/schemas/QueuePlayerMultiContentEntry'
        playCount:
          type: number
        playOffsetMS:
          type: number
        nextPlayNotBeforeEpochMS:
          type: number
        priority:
          type: number
        pacingMode:
          $ref: '#/components/schemas/DynamicSchedulePacingMode'
        expiresEpochSeconds:
          type: number
        processors:
          type: array
          items:
            $ref: '#/components/schemas/VastPayloadProc'
        maxBidPerAdPlayCents:
          type: number
          description: Deprecated 2020-12-30, use expectedCpmCents instead
        expectedCostCpmCents:
          type: number
        expectedImpressions:
          type: number
        biddingMode:
          $ref: '#/components/schemas/PricingDealBiddingMode'
        adomniCommissionPercent:
          description: >-
            What percent of each sale is given to Adomni - cannot be 100, or the
            owner gets nothing
          type: number
          minimum: 0
          maximum: 99.999
        billingType:
          $ref: '#/components/schemas/EnterpriseCampaignBillingType'
        billingMode:
          $ref: '#/components/schemas/EnterpriseCampaignBillingMode'
        sendBack:
          $ref: '#/components/schemas/PlayRecordSendBack'
        overrideOpenRtbAdDomain:
          type: string
        downstreamDealId:
          type: string
        flags:
          type: array
          items:
            type: string
    QueuePlayerRequestTimeAndCount:
      type: object
      title: Queue Player Request Time And Count
      description: >-
        EpochMS to set the as the notBefore, and the number of plays at that
        time
      properties:
        notBeforeEpochMS:
          type: integer
          minimum: 1
        playCount:
          type: integer
          default: 1
          minimum: 1
    QueuePlayerResponse:
      type: object
      title: Queue Player Response
      description: Lists records created as part of a queue player request
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/QueuePlayerEntry'
        nextToken:
          type: string
    ReportFormat:
      type: string
      enum:
        - Csv
        - Json
        - Custom
    ReportServiceMeta:
      type: object
      title: Report Service Meta
      properties:
        bufferedTypes:
          type: array
          items:
            type: string
        streamingTypes:
          type: array
          items:
            type: string
    ReportSummaryLevel:
      title: Report Summary Level
      type: string
      enum:
        - Hour
        - Day
    ReportType:
      type: string
      enum:
        - AccountingCampaignGroupsProgressReport
        - AccountingCampaignsProgressReport
        - AdRequestsBreakdownReport
        - AmobeeMaid
        - ApdDailyCampaignSummaryReport
        - ApdDailySummaryReport
        - AudienceComparative
        - AudienceSegmentScoreReport
        - BroadsignDevicesReport
        - BuyersPerformanceReport
        - CampaignContentOmniView
        - CampaignDevicePerformanceReport
        - CampaignExecutionStatisticsReport
        - CampaignGroupsReport
        - CampaignGroupContentSize
        - CampaignTargetedDevicesReport
        - CampaignsDevicesPerformanceReport
        - CampaignsPerformanceHourly
        - CampaignsPlayRecords
        - CampaignsReport
        - ContentSummaryProcessor
        - ContentPerformanceReport
        - DeviceAdRequests
        - DeviceBidRequestDealBreakdownReport
        - DeviceBreakdownReport
        - DeviceDealsReport
        - DeviceLevelAdRequestsBreakdownReport
        - DeviceOwnersRevenue
        - DevicesOpenRtbBidRequests
        - DevicesPerformanceReport
        - EnterpriseCampaignContentSize
        - EnterpriseCampaignsReport
        - EnterpriseCampaignsLaunchedCampaignsWithContentHolesReport
        - EnterprisePerformance
        - DailyBreakdown
        - ExchangeDspRequestHourSummaryReport
        - ExchangeDspRequestsReport
        - GenericAggregatedPlayDataReport
        - GenericFlexDeviceSearchReport
        - GeoTargetBreakdownReport
        - HourlyAllPlaysReport
        - LocationPoiReport
        - Maid
        - MarketPerformanceCSBAReport
        - MarketPerformanceDMAReport
        - MediaOwnerCampaignExecutionTargetedDevices
        - MediaOwnerSavedSearchDevicesReport
        - MediaOwnersBreakdownReport
        - OwnerPulse
        - OwnerRevenuePerCampaignPerDeviceReport
        - PlaceExchangeInventoryReport
        - PlayedInventoryReport
        - PoiDetailsWithDeviceCountReport
        - SalesRepAssignmentsReport
        - SalesRepCommissionsReport
        - SavedSearchDevicesReport
        - SavedSearchDevicesWithPoisBasicReport
        - SavedSearchDevicesWithPoisReport
        - TargetedDevicesBreakdownReport
        - TeamAdvertiserReport
        - TeamMediaOwnersReport
        - TikTokPerformanceReport
        - USStatePerformanceReport
        - VastRequestLogReport
        - VenueTypeAndCbsaPerformanceReport
        - VenueTypeAndDmaPerformanceReport
        - VenueTypeAndMarketPerformanceReport
        - VenueTypeAndUSStatePerformanceReport
        - VenueTypesBreakdownReport
        - VenueTypesPerformanceReport
        - VistarDevicesReport
        - WalmartEnterprisePerformance
        - ZipPerformanceReport
        - SpotlightDeviceHealthMetricsReport
        - SpotlightEventDeviceGeoMapReport
        - SpotlightDevicePerformanceReport
        - SpotlightOrderPerformanceReport
        - SpotlightOrderPlayPerformanceMetricsReport
        - SpotlightOrderReport
        - ShoutableDevicesPerformanceReport
        - SpotlightDeviceSettingsReport
        - AdvertiserDailyCampaignPerformanceReport
    RequestPasswordResetRequestPublic:
      type: object
      title: Request Password Reset Request Public
      description: >-
        This accepts an email and an account type and sends and Auth0 Password
        request email.
      required:
        - email
      properties:
        email:
          type: string
        accountType:
          $ref: '#/components/schemas/AdomniTeamAccountType'
    ResendEmailVerificationEmailRequest:
      type: object
      title: Resend Email Verification Email Request
      description: This accepts an email and will resend an email verification
      properties:
        email:
          type: string
    SafeGraphSearchParameters:
      type: object
      title: SafeGraph Search Parameters
      description: >-
        These fields are what exist on the GET request for pulling POIs from our
        SafeGraph table.
      properties:
        states:
          type: array
          items:
            type: string
        cbsa:
          type: array
          items:
            type: number
        categoryKeys:
          type: array
          items:
            type: string
        brandKeys:
          type: array
          items:
            type: string
        search:
          type: string
        limit:
          type: number
    SavedSearchAudienceScoreConfiguration:
      type: object
      title: Saved Search Audience Score Configuration
      properties:
        algorithm:
          $ref: '#/components/schemas/AudienceScoreAlgorithm'
        segmentIds:
          type: array
          items:
            type: number
    SavedSearchBreakdownResponse:
      type: object
      title: Saved Search Breakdown Response
      allOf:
        - $ref: '#/components/schemas/AbstractBreakdownResponse'
        - type: object
          properties:
            searchId:
              type: number
    SavedSearchControlMeta:
      type: object
      title: Saved Search Control Meta
      description: >
        Controls the aspects of search performance that are handled by Adomni
        internally.
      properties:
        includeDeviceAvailabilityStates:
          type: array
          items:
            $ref: '#/components/schemas/DeviceAvailabilityState'
        includeDeviceStreamingType:
          type: array
          items:
            $ref: '#/components/schemas/StreamingType'
        includeNetworkEntries:
          type: boolean
          default: false
          description: If set to true, inventory that is a network is included
        includeDevicesWithNoDefaultDeal:
          type: boolean
          default: false
          description: >-
            If set to true, devices with no default deal (0 price) will be
            included
        includeNonProgrammaticInventory:
          type: boolean
          default: false
        purchaseMethodsFilter:
          type: array
          items:
            $ref: '#/components/schemas/DevicePurchaseMethod'
    SavedSearchDeviceResultEntry:
      title: Saved Search Device Result Entry
      allOf:
        - $ref: '#/components/schemas/SavedSearchMetricsEntry'
        - type: object
          properties:
            id:
              type: number
            name:
              type: string
            aspectRatio:
              type: string
            dwellTimeSeconds:
              type: number
            heightPx:
              type: number
            widthPx:
              type: number
            location:
              $ref: '#/components/schemas/AdomniGeoLocation'
            contentTypesAllowed:
              type: array
              items:
                type: string
            venueTypeIds:
              type: array
              items:
                type: number
            networkId:
              type: number
            audienceScore:
              type: number
    SavedSearchDevicesReportParameters:
      title: Saved Search Devices Report Parameters
      type: object
      properties:
        search:
          $ref: '#/components/schemas/SavedSearchRequest'
    SavedSearchDuplicateRequest:
      type: object
      title: Saved Search Duplicate Request
      properties:
        auth0TeamId:
          type: string
          description: The team that created the search
    SavedSearchDuplicateResponse:
      type: object
      title: Saved Search Duplicate Response
      properties:
        newSavedSearchId:
          type: string
          description: The new ID of the duplicated Saved Search
    SavedSearchFinancialConfiguration:
      type: object
      title: Saved Search Financial Configuration
      properties:
        appliedDealIds:
          type: array
          items:
            type: number
        restrictSearchToDevicesWithPrivateDeal:
          type: boolean
        adomniCommissionPercent:
          description: >-
            What percent of each sale is given to Adomni - cannot be 100, or the
            owner gets nothing
          type: number
          minimum: 0
          maximum: 99.999
    SavedSearchFormat:
      type: string
      title: Saved Search Format
      enum:
        - JSON
        - GeoJSON
      x-enum-varnames:
        - Json
        - GeoJson
      default: JSON
    SavedSearchGeoJsonData:
      type: object
      title: Saved Search GeoJson Data - Device & POI
      properties:
        devices:
          $ref: '#/components/schemas/GeoJson'
        pointsOfInterest:
          $ref: '#/components/schemas/GeoJson'
        tilesetUrls:
          type: array
          items:
            type: string
    SavedSearchGeofenceBreakdownResponse:
      type: object
      title: Saved Search Geofence Breakdown Response
      allOf:
        - $ref: '#/components/schemas/AbstractGeofenceBreakdownResponse'
        - type: object
          properties:
            searchId:
              type: number
    SavedSearchGroupedResultEntry:
      title: Saved Search Grouped Result Entry
      allOf:
        - $ref: '#/components/schemas/SavedSearchMetricsEntry'
        - type: object
          properties:
            id:
              type: number
            name:
              type: string
            location:
              $ref: '#/components/schemas/AdomniGeoLocation'
            venueTypeBreakdown:
              type: array
              items:
                $ref: '#/components/schemas/VenueTypeMetricsEntry'
    SavedSearchGroupings:
      type: string
      title: Saved Search Groupings
      enum:
        - Country
        - State
        - None
        - AutoCluster
    SavedSearchIncludes:
      type: string
      title: Saved Search Includes
      enum:
        - GeofenceCounts
        - Map
        - PointsOfInterest
    SavedSearchLookupData:
      title: Saved Search Lookup Data
      type: object
      properties:
        dma:
          type: array
          items:
            $ref: '#/components/schemas/DesignatedMarketArea'
        cbsa:
          type: array
          items:
            $ref: '#/components/schemas/CoreBasedStatisticalArea'
        country:
          type: array
          items:
            $ref: '#/components/schemas/GenericNumericIdAndLabel'
        state:
          type: array
          items:
            $ref: '#/components/schemas/GenericNumericIdAndLabel'
        mediaOwners:
          type: array
          items:
            $ref: '#/components/schemas/AdomniUserPublic'
        mediaOwnerTeams:
          type: array
          items:
            $ref: '#/components/schemas/AdomniTeamPublic'
        county:
          type: array
          items:
            $ref: '#/components/schemas/GenericNumericIdAndLabel'
    SavedSearchMediaFormatSummary:
      type: object
      title: Saved Search Media Format Summary
      description: TBD
      properties:
        totalDeviceCount:
          type: number
        entries:
          type: array
          items:
            $ref: '#/components/schemas/SavedSearchMediaFormatSummaryEntry'
    SavedSearchMediaFormatSummaryEntry:
      type: object
      title: Saved Search Media Format Summary Entry
      description: TBD
      properties:
        format:
          description: >
            Deprecated - this is broken because it incorrectly uses the content
            type field to hold a comma delimited list.  Use mediaFormats
            instead.  Once unicorn is updated to use mediaFormats (approx March
            2023) this field will be removed
          $ref: '#/components/schemas/MediaFormat'
        mediaFormats:
          type: array
          items:
            $ref: '#/components/schemas/MediaFormat'
        templates:
          type: array
          items:
            $ref: '#/components/schemas/SavedSearchMediaFormatTemplateEntry'
        deviceCount:
          type: number
        faceCount:
          type: number
        devicesByOwner:
          type: array
          items:
            $ref: >-
              #/components/schemas/SavedSearchMediaFormatSummaryEntryDevicesByOwner
        venueTypeIds:
          type: array
          items:
            type: number
        autoDerivedFormats:
          type: array
          items:
            $ref: '#/components/schemas/MediaFormat'
    SavedSearchMediaFormatSummaryEntryDevicesByOwner:
      type: object
      title: Saved Search Media Format Summary Entry Devices By Owner
      description: TBD
      properties:
        ownerAuth0TeamId:
          type: string
        deviceIds:
          type: array
          items:
            type: number
    SavedSearchMediaFormatSummaryRequest:
      type: object
      title: ddd
      description: ddd
      properties:
        auth0TeamId:
          type: string
          description: >-
            The id of the team you wish searches for - if not provided, the
            logged in user is used
        includes:
          type: array
          items:
            $ref: '#/components/schemas/SavedSearchMediaFormatSummaryRequestIncludes'
        conversionOptions:
          $ref: '#/components/schemas/ContentExtendedConversionOptions'
          description: >-
            Allowed automatic conversions - if not supplied, the Adomni Default
            set will be used
    SavedSearchMediaFormatSummaryRequestIncludes:
      type: string
      enum:
        - DevicesByOwner
    SavedSearchMediaFormatTemplateEntry:
      type: object
      title: Saved Search Media Format Template Entry
      properties:
        templateType:
          type: string
          enum:
            - Photoshop
        url:
          type: string
    SavedSearchMetricsEntry:
      type: object
      title: Saved Search Metrics
      properties:
        deviceCount:
          type: number
        screenCount:
          type: number
        impressions:
          $ref: '#/components/schemas/ImpressionData'
        averageCpmUSD:
          type: number
        minCpmUSD:
          type: number
        maxCpmUSD:
          type: number
        totalSpendCents:
          type: number
        aggregationMethod:
          $ref: '#/components/schemas/MetricsAggregationMethod'
    SavedSearchMultiSupplySourceConfiguration:
      type: object
      title: >-
        if playerSoftwareId is set and avaliable for the media owner, use this
        provider instead of the default
      properties:
        applyMultiSupplySourceFilter:
          type: boolean
        preferredSupplySourceConfig:
          $ref: '#/components/schemas/SavedSearchPreferredSupplySourceConfiguration'
    SavedSearchPointsOfInterest:
      type: object
      title: Saved Search Points of Interest
      properties:
        json:
          type: array
          items:
            $ref: '#/components/schemas/PointsOfInterestEntry'
        geoJson:
          $ref: '#/components/schemas/GeoJson'
    SavedSearchPreferredSupplySourceConfiguration:
      type: object
      title: >-
        if playerSoftwareId is set and avaliable for the media owner, use this
        provider instead of the default
      properties:
        playerSoftwareId:
          type: number
        excludeOtherSupplySources:
          type: boolean
    SavedSearchRequest:
      type: object
      title: Saved Search Request
      properties:
        appliedAdvertiserAuth0TeamId:
          type: string
          description: >-
            The advertiser auth0 team id used for price calculations - typically
            the same as the owner of the search but overrideable by global users
        customerLabel:
          type: string
          description: A user generated name for this search
        deviceFinders:
          type: array
          items:
            $ref: '#/components/schemas/DeviceFinder'
        deviceFilters:
          type: array
          items:
            $ref: '#/components/schemas/DeviceFilter'
        financialConfig:
          $ref: '#/components/schemas/SavedSearchFinancialConfiguration'
        multiSupplySourceConfig:
          $ref: '#/components/schemas/SavedSearchMultiSupplySourceConfiguration'
        audienceScoreConfig:
          $ref: '#/components/schemas/SavedSearchAudienceScoreConfiguration'
        controlMeta:
          $ref: '#/components/schemas/SavedSearchControlMeta'
        sequence:
          type: number
          description: This is just here for the front-end to track which is most recent
    SavedSearchResponse:
      title: Saved Search Response
      allOf:
        - $ref: '#/components/schemas/InternalSearchResponse'
        - $ref: '#/components/schemas/SavedSearchResponseMeta'
    SavedSearchResponseMeta:
      title: Saved Search Response Meta
      type: object
      properties:
        id:
          type: string
        customerLabel:
          type: string
        createdByAuth0TeamId:
          type: string
        createdEpochMS:
          type: integer
        updatedEpochMS:
          type: integer
    SavedSearchResponseMetaList:
      type: object
      title: Saved Search Response Meta List
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/SavedSearchResponseMeta'
    ServerType:
      type: string
      enum:
        - prod
        - dev
        - local
        - next
      x-enum-varnames:
        - Prod
        - Dev
        - Local
        - Next
    SimpleKeyValuePair:
      type: object
      title: Simple Key Value Pair
      properties:
        key:
          type: string
        value:
          type: string
    SimplePaginationObject:
      title: Simple Pagination Object
      description: Page holder, only useful when the ordering and direction are fixed
      properties:
        offset:
          type: number
        limit:
          type: number
    SimpleResult:
      type: object
      title: Simple Result
      properties:
        success:
          type: boolean
        message:
          type: string
    SinglePlayMetrics:
      type: object
      title: Single Play Metrics
      properties:
        metricsEpochMS:
          type: number
          description: >-
            Epoch MS of when the metrics object was created (useful for
            debugging price changes)
        adomniCommission:
          type: number
          description: The Adomni commision (range from 0 - 1)
        srcCurrency:
          description: The currency code and the ratio for calculations at play time
          $ref: '#/components/schemas/CurrencyConversion'
        cpmCostCents:
          type: number
          description: The CPM paid to a third party for this particular play
        cpmValueCents:
          type: number
          description: The CPM paid by the advertiser to Adomni for this particular play
        impressionCount:
          type: number
          description: The impressions attributed to this particular play
        impressionCountMethod:
          type: string
          description: The method by which this impression count was reached
          enum:
            - Adomni
            - ThirdParty
            - Geopath
            - Owner
            - Admobilize
            - Linkett
            - AdomniRetrofit
        pricingMethod:
          type: string
          enum:
            - Adomni
            - OpenRtb
            - Other
            - AdomniRetrofit
    StartReportRequest:
      type: object
      title: Start Report Request
      description: Parameters to start running a report
      required:
        - reportType
        - reportFormat
        - parameters
      properties:
        reportType:
          $ref: '#/components/schemas/ReportType'
        reportFormat:
          $ref: '#/components/schemas/ReportFormat'
        title:
          type: string
        targetFileName:
          type: string
          description: >-
            Target file name for download (content-disposition field) - the
            extension will be applied automatically
        overrideCacheId:
          type: string
          description: >-
            If set, the report system will overwrite this id instead of
            generating a unique one - use with care
        requestingAuth0TeamId:
          type: string
        notificationEmailAddresses:
          type: array
          description: >-
            If set, an email containing the link of the report will be sent to
            these people upon completion
          items:
            type: string
        parameters:
          type: object
    StreamingType:
      type: string
      enum:
        - OnDemand
        - AlwaysOn
      description: The streaming type for a device
    StreetAddress:
      type: object
      description: A street address
      title: Street Address
      required:
        - address
        - city
        - state
        - zip
      properties:
        address:
          type: string
          description: The first line of the street address
        address2:
          type: string
          description: The second line of the street address
        city:
          type: string
          description: The city of the street address
        state:
          type: string
          description: The state abbreviation of the street address
        zip:
          type: string
          description: The zip code of the street address
        country:
          type: string
          description: The country name
    StreetAddressWithLatLng:
      type: object
      description: A street address with lat/lng
      allOf:
        - $ref: '#/components/schemas/StreetAddress'
        - type: object
          properties:
            lat:
              type: number
              description: Latitude of device location
            lng:
              type: number
              description: Longitude of device location
    SupplyPrediction:
      title: Supply Prediction
      type: object
      properties:
        deviceId:
          type: number
        method:
          $ref: '#/components/schemas/DevicePricingAndPlayDataMethod'
        updatedEpochMS:
          type: number
        valueCpmCents:
          type: number
        costCpmCents:
          type: number
        valuePerPlayCents:
          type: number
        costPerPlayCents:
          type: number
        impressionsPerPlay:
          type: number
        playsAvailable:
          type: number
    Tag:
      type: object
      title: Tag
      required:
        - tag
      properties:
        id:
          type: number
          description: Auto-incrementing identifier of the tag record
        groupId:
          type: number
          description: Tag Group identifier.
        tag:
          type: string
          description: String representation of the tag. This is displayed to end users.
          minLength: 1
        auth0TeamId:
          type: string
          description: Team that this tag is assigned to.
        location:
          $ref: '#/components/schemas/AdomniGeoLocation'
    TagAssignment:
      type: object
      title: Tag Assignment
      description: Entity/model that a tag is assigned to.
      properties:
        id:
          type: number
          description: Auto-incrementing identifier of the tag assignment record.
        model:
          type: string
          enum:
            - boards
            - orders
            - users
            - enterprise-campaigns
          x-enum-varnames:
            - Boards
            - Orders
            - Users
            - EnterpriseCampaigns
          description: This identifies which entity/model the modelId field belongs to.
        modelId:
          type: number
          description: This is the ID of the model the tag is assigned to.
        modelIdString:
          type: string
          description: >-
            This is the STRING ID of the model the tag is assigned to. This is
            to support of tags are assigned to a team directly.
        tagId:
          type: number
          description: This is the ID of the tag that is assigned to the model.
    TagMapping:
      type: object
      title: Tag Mapping
      description: Mapping of tags to entities
      properties:
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        modelId:
          type: number
    UnitedStatesCounty:
      type: object
      title: United States County
      properties:
        id:
          type: number
        name:
          type: string
        state:
          type: string
        dmaIds:
          type: array
          items:
            type: number
        polygon:
          type: string
        polygonName:
          type: string
        cbsaCode:
          type: number
        fipsCountyCode:
          type: number
        countyType:
          $ref: '#/components/schemas/CoreBasedCountyType'
    UserEmailReports:
      type: string
      enum:
        - MonthlyMediaOwnerRevenueReport
    V1PlayRecordPlayEntryAuxData:
      type: object
      title: V1 Play Record Play Entry Aux Data
      properties:
        src:
          type: string
        impressionCount:
          type: number
        impressionCountMethod:
          type: string
        openRtbRequestId:
          type: string
        dealId:
          type: string
        bidCpmUSD:
          type: number
        marginPercent:
          type: number
        raw:
          type: object
        cpmPaid:
          type: number
          description: Deprecated, prefer winCpmUSD
        winCpmUSD:
          type: number
          description: >-
            The winning price in CPM USD (may differ from bidCpmUSD, if a 2nd
            price auction)
        cpmUpdatedToWin:
          type: boolean
          description: >-
            True if the winCpmUSD field is set - used for easier dynamodb
            filtering than existence of the field
    V2PlayRecord:
      type: object
      title: V2 Play Record
      description: Play record with extensions to handle indexing
      allOf:
        - $ref: '#/components/schemas/PlayRecordV1V2Fields'
        - type: object
          properties:
            revision:
              type: number
            notes:
              type: string
            upstreamGuid:
              type: string
              description: >-
                If this play was caused by an upstream event (e.g., OpenRTB
                auction) its tracking ID will be here
            playStartEpochMS:
              type: number
              description: The timestamp, in epoch MS, of when the play started
            playFinishEpochMS:
              type: number
              description: The timestamp, in epoch MS, of when the play finished
            durationMS:
              type: number
              description: The length of the play, in MS
            location:
              $ref: '#/components/schemas/AdomniTimedGeoLocation'
            openRtbData:
              $ref: '#/components/schemas/V2PlayRecordOpenRtbData'
            adomniExchangeData:
              $ref: '#/components/schemas/V2PlayRecordAdomniExchangeData'
            metrics:
              $ref: '#/components/schemas/SinglePlayMetrics'
            advertiserAuth0TeamId:
              type: string
              description: The id of the advertiser that requested the play
            contentId:
              type: number
              description: The id of the content that played
            venueTypeId:
              type: number
              description: >-
                The venue type of the device (redundant, but may be useful for
                filtering)
            deviceOwnerAuth0TeamId:
              type: string
              description: The id of the owner of the device that executed the play
            deviceNetworkId:
              type: number
              description: The id of the network of the device that executed the play
            purchaseType:
              $ref: '#/components/schemas/PurchaseType'
            purchaseId:
              type: number
              description: >-
                Just the number part of the purchase type and ID (To simplify
                some queries)
            purchaseTypeAndId:
              type: string
              description: >-
                The purchase type and identifier that caused this play (e.g.,
                CAMPAIGN_12345, ORDER_2234)
            contentIdSpreadIndex:
              type: string
            purchaseTypeAndIdSpreadIndex:
              type: string
            recordedMinuteUtcSpreadIndex:
              type: string
            playStartMinuteUtcSpreadIndex:
              type: string
            deviceOwnerIdSpreadIndex:
              type: string
            deviceNetworkIdSpreadIndex:
              type: string
    V2PlayRecordAdomniExchangeData:
      type: object
      title: V2 Play Record Adomni Exchange Data
      properties:
        exchangeGuid:
          type: string
        exchangeDspId:
          type: string
    V2PlayRecordCalculatedFields:
      type: object
      title: V2 Play Record Calculated Fields
      description: >-
        Fields that arent stored in the database, but are calculated on the way
        out
      properties:
        deviceId:
          type: number
          description: |
            adomni device id
        serverType:
          type: string
    V2PlayRecordOpenRtbData:
      type: object
      title: V2 Play Record Open Rtb Data
      properties:
        src:
          type: string
          description: Which OpenRTB source (eg, Broadsign)
        requestId:
          type: string
        dealId:
          type: string
        bidCpmUSD:
          type: number
        raw:
          type: object
        winCpmUSD:
          type: number
          description: >-
            The winning price in CPM USD (may differ from bidCpmUSD, if a 2nd
            price auction)
        cpmUpdatedToWin:
          type: boolean
          description: >-
            True if the winCpmUSD field is set - used for easier dynamodb
            filtering than existence of the field
    VastErrorDescriptor:
      type: object
      title: Vast Error Descriptor
      description: Describes a specific VAST error
      properties:
        code:
          type: number
          description: The VAST error code
        fatal:
          type: boolean
          description: If this error prevents advertisement display
        description:
          type: string
          description: Text description of the error
    VastErrorDescriptorList:
      type: object
      title: Vast Error Descriptor List
      description: List of all VAST error descriptors
      properties:
        sourceUrl:
          type: string
          description: Source of the error list
        results:
          type: array
          items:
            $ref: '#/components/schemas/VastErrorDescriptor'
    VastPayload:
      title: Vast Payload
      type: object
      properties:
        guid:
          type: string
        contentId:
          type: number
        advertiserAuth0TeamId:
          type: string
        deviceOwnerAuth0TeamId:
          type: string
          description: ID of the owner of the target device
        sendBack:
          $ref: '#/components/schemas/PlayRecordSendBack'
        stay:
          type: number
        markIncomplete:
          type: boolean
        keys:
          type: array
          items:
            $ref: '#/components/schemas/VastPayloadBoardInfo'
        useGenerationTimeAsPlayTimestamp:
          type: boolean
          description: If true, uses iat as the timestamp
        idempotenceKey:
          type: string
          description: >
            Uniquely identifies this VAST payload.  If this is from an OpenRTB
            source, this will be the id of the auction that spawned the VAST
            item (combine with openRtbProcessorId below to find the auction in
            question)
        openRtbProviderId:
          $ref: '#/components/schemas/OpenRtbSupplySideProviderId'
        processors:
          type: array
          items:
            $ref: '#/components/schemas/VastPayloadProc'
        meta:
          $ref: '#/components/schemas/VastPayloadMeta'
        exp:
          type: number
        iss:
          type: string
        iat:
          type: number
    VastPayloadBoardInfo:
      title: Vast Payload Board Info
      type: object
      properties:
        id:
          type: number
        k:
          type: string
        location:
          $ref: '#/components/schemas/AdomniTimedGeoLocation'
    VastPayloadMeta:
      title: Vast Payload Meta
      type: object
      description: for propagation of data thru to the play record
      properties:
        aux:
          $ref: '#/components/schemas/V1PlayRecordPlayEntryAuxData'
    VastPayloadProc:
      type: object
      title: Adomni GeoLocation
      description: TBD
      properties:
        id:
          type: string
        trigger:
          type: string
          enum:
            - PreRecordPlay
            - PostRecordPlay
            - PreRecordError
            - PostRecordError
            - PreRecordBoth
            - PostRecordBoth
    VenueTypeMetricsEntry:
      title: VenueTypeMetricsEntry
      allOf:
        - $ref: '#/components/schemas/MetricBreakdownEntry'
        - type: object
          properties:
            venueTypeId:
              type: number
            averageDailyAdPlaysPerDevice:
              type: number
    VenueTypeMetricsEntryList:
      title: Venue Type Metrics Entry List
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/VenueTypeMetricsEntry'
