openapi: 3.1.0
info:
  title: Synup Developer Platform API
  version: '2026-07-06'
  description: Auto-generated REST facade over Synup's federated GraphQL services. Generated by sdk/openapi.
servers:
  - url: https://listingsapi.com
    description: Production
security:
  - apiKey: []
tags:
  - name: locations
    description: Operations from the locations service.
  - name: posts
    description: Operations from the posts service.
  - name: interactions
    description: Operations from the interactions service.
  - name: insights
    description: Operations from the insights service.
  - name: v2app
    description: Operations from the v2app service.
  - name: crawler
    description: Operations from the crawler service.
  - name: media-manager
    description: Operations from the media-manager service.
paths:
  /api/v4/countries:
    get:
      operationId: supportedCountries
      summary: List of supported countries.
      tags:
        - locations
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CountryType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/sub-categories:
    get:
      operationId: subcategories
      summary: List of sub-categories.
      tags:
        - locations
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SubCategoryType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations-by-store-codes:
    get:
      operationId: getLocationsByStoreCodes
      summary: Get locations by the Store Codes.
      tags:
        - locations
      parameters:
        - name: storeCodes
          in: query
          required: true
          schema:
            type: string
            description: JSON-encoded filter object
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LocationSummaryType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations:
    get:
      operationId: allLocations
      summary: All locations that belong to an account.
      tags:
        - locations
      parameters:
        - name: first
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: after
          in: query
          required: false
          schema:
            type: string
        - name: last
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: before
          in: query
          required: false
          schema:
            type: string
        - name: filter
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                required:
                  - edges
                  - pageInfo
                properties:
                  edges:
                    type: array
                    items:
                      type: object
                      required:
                        - node
                        - cursor
                      properties:
                        node:
                          $ref: '#/components/schemas/LocationSummaryConnectionType'
                        cursor:
                          type: string
                  pageInfo:
                    type: object
                    required:
                      - hasNextPage
                      - hasPreviousPage
                    properties:
                      hasNextPage:
                        type: boolean
                      hasPreviousPage:
                        type: boolean
                      startCursor:
                        type:
                          - string
                          - 'null'
                      endCursor:
                        type:
                          - string
                          - 'null'
                  totalCount:
                    type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: createLocation
      summary: Create a new location.
      tags:
        - locations
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateLocationPayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  $ref: '#/components/schemas/CreateLocationInput'
              required:
                - input
  /api/v4/locations/search:
    get:
      operationId: searchLocations
      summary: Search for locations.
      tags:
        - locations
      parameters:
        - name: query
          in: query
          required: false
          schema:
            type: string
        - name: filter
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: first
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: after
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                required:
                  - edges
                  - pageInfo
                properties:
                  edges:
                    type: array
                    items:
                      type: object
                      required:
                        - node
                        - cursor
                      properties:
                        node:
                          $ref: '#/components/schemas/LocationSummaryConnectionType'
                        cursor:
                          type: string
                  pageInfo:
                    type: object
                    required:
                      - hasNextPage
                      - hasPreviousPage
                    properties:
                      hasNextPage:
                        type: boolean
                      hasPreviousPage:
                        type: boolean
                      startCursor:
                        type:
                          - string
                          - 'null'
                      endCursor:
                        type:
                          - string
                          - 'null'
                  totalCount:
                    type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations-by-ids:
    get:
      operationId: getLocationsByIds
      summary: Fetch location info via cursor ids.
      tags:
        - locations
      parameters:
        - name: locationIds
          in: query
          required: true
          schema:
            type: string
            description: JSON-encoded filter object
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LocationSummaryType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/update:
    post:
      operationId: updateLocation
      summary: Update information on a location.
      tags:
        - locations
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateLocationPayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  $ref: '#/components/schemas/UpdateLocationInput'
              required:
                - input
  /api/v4/locations/photos:
    post:
      operationId: media-manager_addLocationPhotos
      summary: Attach media files to a location as photos (stitched via schemastitcher).
      tags:
        - media-manager
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddLocationPhotosPayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  $ref: '#/components/schemas/LocationMediaInputType'
              required:
                - input
  /api/v4/locations/photos/remove:
    post:
      operationId: media-manager_removeLocationPhotos
      summary: Remove photos from a location.
      tags:
        - media-manager
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoveLocationPhotosPayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  $ref: '#/components/schemas/LocationMediaInputType'
              required:
                - input
  /api/v4/locations/photos/star:
    post:
      operationId: starLocationPhotos
      summary: Mark photos as favourite.
      tags:
        - locations
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StarLocationPhotosPayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  $ref: '#/components/schemas/StarLocationPhotosInput'
              required:
                - input
  /api/v4/locations/archive:
    post:
      operationId: archiveLocations
      summary: Archive locations.
      tags:
        - locations
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArchiveLocationsPayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  $ref: '#/components/schemas/ArchiveLocationsInput'
              required:
                - input
  /api/v4/locations/cancel_archive:
    post:
      operationId: cancelLocationsArchive
      summary: Cancel archival of locations.
      tags:
        - locations
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelLocationsArchivePayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  $ref: '#/components/schemas/CancelLocationsArchiveInput'
              required:
                - input
  /api/v4/posts/{postId}:
    get:
      operationId: socialPostView
      summary: Individual social post view page.
      tags:
        - posts
      parameters:
        - name: postId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialPostView'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: deleteSocialPost
      summary: Delete a social post.
      tags:
        - posts
      parameters:
        - name: postId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteSocialPostMutation'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                clientMutationId:
                  type: string
  /api/v4/posts:
    post:
      operationId: createSocialPost
      summary: Create social posts for multiple locations.
      tags:
        - posts
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialPostMutation'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                postName:
                  type: string
                locationIds:
                  type: array
                  items:
                    type: string
                postType:
                  $ref: '#/components/schemas/SocialPostTypeEnum'
                postSites:
                  type: array
                  items:
                    $ref: '#/components/schemas/SitesType'
                postMessage:
                  type: array
                  items:
                    $ref: '#/components/schemas/PostMessageInput'
                postCta:
                  type: array
                  items:
                    $ref: '#/components/schemas/PostCtaInput'
                postMediaUrl:
                  type: array
                  items:
                    $ref: '#/components/schemas/SocialPostMediaInput'
                postScheduledDates:
                  $ref: '#/components/schemas/PostScheduledDatesInput'
                postContextInfo:
                  $ref: '#/components/schemas/PostContextInfoInput'
                componentIdentifier:
                  type: string
                componentType:
                  type: string
                products:
                  type: array
                  items:
                    $ref: '#/components/schemas/ProductInfoInput'
                clientMutationId:
                  type: string
              required:
                - postName
                - locationIds
                - postType
                - postSites
  /api/v4/locations/{locationId}/reviews:
    get:
      operationId: interactions
      summary: Paginated list of interactions (reviews / Q&A / social) for a single location, with filters.
      tags:
        - interactions
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
        - name: tag
          in: query
          required: false
          schema:
            type: string
        - name: siteUrls
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: startDate
          in: query
          required: false
          schema:
            type: string
        - name: searchString
          in: query
          required: false
          schema:
            type: string
        - name: endDate
          in: query
          required: false
          schema:
            type: string
        - name: category
          in: query
          required: false
          schema:
            type: string
        - name: categories
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: ratingFilters
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: ratingFilter
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: responseStatus
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: sortOrder
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: first
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: after
          in: query
          required: false
          schema:
            type: string
        - name: last
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: before
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                required:
                  - edges
                  - pageInfo
                properties:
                  edges:
                    type: array
                    items:
                      type: object
                      required:
                        - node
                        - cursor
                      properties:
                        node:
                          $ref: '#/components/schemas/InteractionConnection'
                        cursor:
                          type: string
                  pageInfo:
                    type: object
                    required:
                      - hasNextPage
                      - hasPreviousPage
                    properties:
                      hasNextPage:
                        type: boolean
                      hasPreviousPage:
                        type: boolean
                      startCursor:
                        type:
                          - string
                          - 'null'
                      endCursor:
                        type:
                          - string
                          - 'null'
                  totalCount:
                    type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/rollup_interactions:
    get:
      operationId: rollupInteractions
      summary: Paginated list of interactions across many locations (rollup scope).
      tags:
        - interactions
      parameters:
        - name: tag
          in: query
          required: false
          schema:
            type: string
        - name: locationFilters
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: siteUrls
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: startDate
          in: query
          required: false
          schema:
            type: string
        - name: endDate
          in: query
          required: false
          schema:
            type: string
        - name: searchString
          in: query
          required: false
          schema:
            type: string
        - name: category
          in: query
          required: false
          schema:
            type: string
        - name: categories
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: ratingFilters
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: ratingFilter
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: responseStatus
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: sortOrder
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: first
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: after
          in: query
          required: false
          schema:
            type: string
        - name: last
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: before
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                required:
                  - edges
                  - pageInfo
                properties:
                  edges:
                    type: array
                    items:
                      type: object
                      required:
                        - node
                        - cursor
                      properties:
                        node:
                          $ref: '#/components/schemas/InteractionConnection'
                        cursor:
                          type: string
                  pageInfo:
                    type: object
                    required:
                      - hasNextPage
                      - hasPreviousPage
                    properties:
                      hasNextPage:
                        type: boolean
                      hasPreviousPage:
                        type: boolean
                      startCursor:
                        type:
                          - string
                          - 'null'
                      endCursor:
                        type:
                          - string
                          - 'null'
                  totalCount:
                    type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/reviewDetails:
    get:
      operationId: interactionDetails
      summary: Fetch full interaction records by ID.
      tags:
        - interactions
      parameters:
        - name: interactionIds
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InteractionsDetail'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/{locationId}/reviews/settings:
    get:
      operationId: interactionsSetting
      summary: Per-location interactions settings (connected sites, thresholds).
      tags:
        - interactions
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InteractionsSetting'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/{locationId}/review-analytics-overview:
    get:
      operationId: interactionsAnalyticsStats
      summary: Analytics KPIs for a single location over a date range.
      tags:
        - interactions
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
        - name: startDate
          in: query
          required: false
          schema:
            type: string
            format: date
        - name: endDate
          in: query
          required: false
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InteractionsAnalyticsStats'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/reviews/site-config:
    get:
      operationId: interactionSiteConfig
      summary: Per-site metadata (colors, icons, plan support).
      tags:
        - interactions
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/InteractionSiteConfig'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/reviews/respond:
    post:
      operationId: respondToInteraction
      summary: Post a response to a review / Q&A / social interaction on the source site.
      tags:
        - interactions
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RespondToInteractionPayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                responseContent:
                  type: string
                interactionId:
                  oneOf:
                    - type: integer
                      description: Raw numeric ID
                    - type: string
                      description: Base64-encoded Relay ID
                  format: base64-or-int
                respondedWith:
                  type: string
              required:
                - responseContent
                - interactionId
  /api/v4/locations/reviews/settings/edit:
    post:
      operationId: editInteractionsSetting
      summary: Update per-location interactions settings (connected sites, positive threshold).
      tags:
        - interactions
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EditInteractionsSettingPayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                locationId:
                  oneOf:
                    - type: integer
                      description: Raw numeric ID
                    - type: string
                      description: Base64-encoded Relay ID
                  format: base64-or-int
                siteUrls:
                  type: array
                  items:
                    $ref: '#/components/schemas/SiteSettingInputType'
                positiveInteractionThreshold:
                  type: integer
                  format: int32
              required:
                - locationId
  /api/v4/locations/{locationId}/facebook-analytics:
    get:
      operationId: facebookInsights
      summary: Facebook v4 metrics for a single location over a date range.
      tags:
        - insights
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
        - name: fromDate
          in: query
          required: false
          schema:
            type: string
        - name: toDate
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FacebookMetricV4'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/{locationId}/google-analytics:
    get:
      operationId: googleInsights
      summary: Google My Business v4 metrics for a single location over a date range.
      tags:
        - insights
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
        - name: fromDate
          in: query
          required: false
          schema:
            type: string
        - name: toDate
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleMetricV4'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/{locationId}/bing-analytics:
    get:
      operationId: bingInsights
      summary: Bing Places v4 metrics for a single location over a date range.
      tags:
        - insights
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
        - name: fromDate
          in: query
          required: false
          schema:
            type: string
        - name: toDate
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BingMetricV4'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/connected-accounts:
    get:
      operationId: connectedAccountsInfo
      summary: connectedAccountsInfo
      tags:
        - v2app
      parameters:
        - name: accountId
          in: query
          required: false
          schema:
            type: string
        - name: filters
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: sort
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: pageInfo
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountsPaginated'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/connected-accounts/{connectedAccountId}/details:
    get:
      operationId: connectedAccountDetails
      summary: connectedAccountDetails
      tags:
        - v2app
      parameters:
        - name: connectedAccountId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountDetails'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/connected-accounts/connected-account-listings:
    post:
      operationId: connectedAccountListings
      summary: Listings belonging to a connected account.
      tags:
        - v2app
      parameters:
        - name: connectedAccountId
          in: query
          required: true
          schema:
            type: string
        - name: filters
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: pageInfo
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountListingsPaginated'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/connected-accounts/{connectedAccountId}/connection-suggestions:
    get:
      operationId: connectionSuggestionsForAccount
      summary: connectionSuggestionsForAccount
      tags:
        - v2app
      parameters:
        - name: connectedAccountId
          in: path
          required: true
          schema:
            type: string
        - name: accountId
          in: query
          required: false
          schema:
            type: string
        - name: filters
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: sortBy
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: pageInfo
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectionSuggestionsForAccount'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/plan-sites:
    get:
      operationId: planSites
      summary: planSites
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PlanSite'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/subscriptions:
    get:
      operationId: activeSubscriptions
      summary: Active billing subscriptions for an account.
      tags:
        - v2app
      parameters:
        - name: accountId
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActiveSubscription'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/connected-accounts/{connectedAccountId}/folders:
    get:
      operationId: getFoldersUnderGoogleAccount
      summary: getFoldersUnderGoogleAccount
      tags:
        - v2app
      parameters:
        - name: connectedAccountId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/GmbFolder'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/connected-accounts/connect-google:
    post:
      operationId: bulkConnectLinkForGoogle
      summary: bulkConnectLinkForGoogle
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectUrl'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                accountId:
                  type: string
              required:
                - accountId
  /api/v4/connected-accounts/connect-facebook:
    post:
      operationId: bulkConnectLinkForFacebook
      summary: bulkConnectLinkForFacebook
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectUrl'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                accountId:
                  type: string
              required:
                - accountId
  /api/v4/connected-accounts/trigger-matches:
    post:
      operationId: connectedAccountsTriggerMatches
      summary: connectedAccountsTriggerMatches
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountsTriggerMatchesResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                connectedAccountIds:
                  type: array
                  items:
                    type: string
  /api/v4/connected-accounts/confirm-matches:
    post:
      operationId: confirmConnectMatches
      summary: confirmConnectMatches
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmConnectMatchesResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                connectedAccountId:
                  type: string
                matchIds:
                  type: array
                  items:
                    type: string
              required:
                - connectedAccountId
  /api/v4/connected-accounts/disconnect-google:
    post:
      operationId: gmbBulkDisconnect
      summary: gmbBulkDisconnect
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDisconnectResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                connectedAccountId:
                  type: string
                locationIds:
                  type: array
                  items:
                    type: string
              required:
                - connectedAccountId
  /api/v4/connected-accounts/disconnect-facebook:
    post:
      operationId: fbBulkDisconnect
      summary: fbBulkDisconnect
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDisconnectResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                connectedAccountId:
                  type: string
                locationIds:
                  type: array
                  items:
                    type: string
              required:
                - connectedAccountId
  /api/v4/connected-accounts/connect-listing:
    post:
      operationId: connectListing
      summary: connectListing
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectListingResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                locationId:
                  oneOf:
                    - type: integer
                      description: Raw numeric ID
                    - type: string
                      description: Base64-encoded Relay ID
                  format: base64-or-int
                listingId:
                  type: string
              required:
                - locationId
                - listingId
  /api/v4/connected-accounts/create-location-from-listing:
    post:
      operationId: createLocationFromConnectedAccountListing
      summary: createLocationFromConnectedAccountListing
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                listingId:
                  type: string
              required:
                - listingId
  /api/v4/locations/create/gmb-listing:
    post:
      operationId: createGmbListingForLocation
      summary: createGmbListingForLocation
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MutationResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                locationId:
                  oneOf:
                    - type: integer
                      description: Raw numeric ID
                    - type: string
                      description: Base64-encoded Relay ID
                  format: base64-or-int
                connectedAccountId:
                  type: string
              required:
                - locationId
                - connectedAccountId
  /api/v4/locations/{locationId}/listings/duplicates:
    get:
      operationId: duplicateListingsForLocation
      summary: Get duplicate listings for the given location.
      tags:
        - crawler
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CustomSiteType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/{locationId}/voice-assistants:
    get:
      operationId: voiceAssistantsForLocation
      summary: Get voice assistants for a location.
      tags:
        - crawler
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VoiceAssistantType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/listings/duplicates:
    get:
      operationId: duplicateListingsRollup
      summary: Duplicate listing rollup for tag.
      tags:
        - crawler
      parameters:
        - name: tag
          in: query
          required: true
          schema:
            type: string
        - name: filters
          in: query
          required: true
          schema:
            type: string
            description: JSON-encoded filter object
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: perPage
          in: query
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateListingRollupType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/listings/mark-as-duplicate:
    post:
      operationId: markAsDuplicate
      summary: Marking the duplicate listing item.
      tags:
        - crawler
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MutationResultType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                listingItemIds:
                  type: array
                  items:
                    type: string
                locationId:
                  type: string
              required:
                - listingItemIds
  /api/v4/locations/listings/mark-as-not-duplicate:
    post:
      operationId: markAsNotDuplicate
      summary: Marking the non duplicate listing item.
      tags:
        - crawler
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MutationResultType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                listingItemIds:
                  type: array
                  items:
                    type: string
                locationId:
                  type: string
              required:
                - listingItemIds
  /api/v4/locations/{locationId}/photos:
    get:
      operationId: mediaFilesOfLocation
      summary: List media files attached to a single location (starred + unstarred).
      tags:
        - media-manager
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaFileOfLocationType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/photos/requests/{requestId}:
    get:
      operationId: getLocationPhotosUploadStatus
      summary: Return the status of a bulk add-media-to-location request.
      tags:
        - media-manager
      parameters:
        - name: requestId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationPhotosUploadStatusType'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/bulk-posts:
    post:
      operationId: createBulkSocialPost
      summary: Create social posts for multiple locations.
      tags:
        - posts
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialPostMutation'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                postName:
                  type: string
                locationIds:
                  type: array
                  items:
                    type: string
                postType:
                  $ref: '#/components/schemas/SocialPostTypeEnum'
                postSites:
                  type: array
                  items:
                    $ref: '#/components/schemas/SitesType'
                postMessage:
                  type: array
                  items:
                    $ref: '#/components/schemas/PostMessageInput'
                postCta:
                  type: array
                  items:
                    $ref: '#/components/schemas/PostCtaInput'
                postMediaUrl:
                  type: array
                  items:
                    $ref: '#/components/schemas/SocialPostMediaInput'
                postScheduledDates:
                  $ref: '#/components/schemas/PostScheduledDatesInput'
                postContextInfo:
                  $ref: '#/components/schemas/PostContextInfoInput'
                componentIdentifier:
                  type: string
                componentType:
                  type: string
                products:
                  type: array
                  items:
                    $ref: '#/components/schemas/ProductInfoInput'
                clientMutationId:
                  type: string
              required:
                - postName
                - locationIds
                - postType
                - postSites
  /api/v4/bulk-posts/{postId}:
    get:
      operationId: socialPostViewBulk
      summary: Individual social post view page.
      tags:
        - posts
      parameters:
        - name: postId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialPostView'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/{locationId}/posts:
    get:
      operationId: rollupSocialPostsByLocation
      summary: List of post campaigns for tags/locations.
      tags:
        - posts
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            type: string
        - name: locationIds
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: tag
          in: query
          required: false
          schema:
            type: string
        - name: filters
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: perPage
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: sortFields
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: componentIdentifier
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialPostPaginated'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/{locationId}/bulk-posts:
    get:
      operationId: rollupSocialPostsBulk
      summary: List of post campaigns for tags/locations.
      tags:
        - posts
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            type: string
        - name: locationIds
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: tag
          in: query
          required: false
          schema:
            type: string
        - name: filters
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: perPage
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: sortFields
          in: query
          required: false
          schema:
            type: string
            description: JSON-encoded filter object
        - name: componentIdentifier
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialPostPaginated'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/locations/{locationId}/listings/premium:
    get:
      operationId: listingsForLocationPremium
      summary: Get listings for a location.
      tags:
        - crawler
      parameters:
        - name: locationId
          in: path
          required: true
          schema:
            oneOf:
              - type: integer
                description: Raw numeric ID
              - type: string
                description: Base64-encoded Relay ID
            format: base64-or-int
        - name: listingType
          in: query
          required: true
          schema:
            type: string
            description: JSON-encoded filter object
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListingUnion'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v4/connected-accounts/disconnect-listing:
    post:
      operationId: disconnectConnectedAccountListing
      summary: disconnectConnectedAccountListing
      tags:
        - v2app
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteConnectedAccountsLocationsResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                locationIds:
                  type: array
                  items:
                    type: string
              required:
                - locationIds
  /api/v4/locations/reviews/respond/edit:
    post:
      operationId: editReviewResponse
      summary: Edit a previously posted response to a review.
      tags:
        - interactions
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EditResponsePayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                responseId:
                  type: string
                reviewId:
                  type: string
                responseContent:
                  type: string
                templateId:
                  type: string
              required:
                - responseId
                - reviewId
                - responseContent
  /api/v4/locations/reviews/respond/archive:
    post:
      operationId: archiveReviewResponse
      summary: Archive a response item by ID (soft-delete from the local cache).
      tags:
        - interactions
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArchiveInteractionPayload'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                responseId:
                  type: string
              required:
                - responseId
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: 'Authenticate with `Authorization: API <your-key>`.'
  schemas:
    Node:
      type: object
      description: >-
        Relay Node interface with a globally unique ID. (also defined by posts) (also defined by pages) (also defined by
        rankings) (also defined by scantool) (also defined by thirdeye) (also defined by media-manager)
      properties:
        id:
          type: string
      required:
        - id
    LocationSummaryType:
      type: object
      description: Summary view of a business location.
      properties:
        id:
          type: string
        databaseId:
          type: integer
          format: int32
        storeId:
          type: string
        name:
          type: string
        street:
          type: string
        city:
          type: string
        stateIso:
          type: string
        countryIso:
          type: string
        postalCode:
          type: string
        latitude:
          type: number
          format: float
        longitude:
          type: number
          format: float
        phone:
          type: string
        website:
          type: string
        status:
          $ref: '#/components/schemas/LocationStatusType'
        primaryGbpSiteCategoryId:
          type: string
        additionalGbpSiteCategoryIds:
          type: array
          items:
            type: string
        serviceArea:
          type: array
          items:
            $ref: '#/components/schemas/ServiceAreaType'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagType'
        folders:
          type: array
          items:
            $ref: '#/components/schemas/FolderType'
      required:
        - id
        - name
    LocationSummaryConnectionType:
      type: object
      description: A Relay connection over LocationSummary.
      properties:
        edges:
          type: array
          items:
            $ref: '#/components/schemas/LocationSummaryEdgeType'
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/LocationSummaryType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
        totalCount:
          type: integer
          format: int32
      required:
        - pageInfo
    LocationSummaryEdgeType:
      type: object
      properties:
        cursor:
          type: string
        node:
          $ref: '#/components/schemas/LocationSummaryType'
      required:
        - cursor
    PageInfoType:
      type: object
      description: >-
        (also defined by notifications) (also defined by reviewfunnel) (also defined by contests) (also defined by
        social-media)
      properties:
        hasNextPage:
          type: boolean
        hasPreviousPage:
          type: boolean
        startCursor:
          type: string
        endCursor:
          type: string
      required:
        - hasNextPage
        - hasPreviousPage
    FolderType:
      type: object
      description: A folder used to group locations.
      properties:
        id:
          type: string
        databaseId:
          type: integer
          format: int32
        name:
          type: string
        parentId:
          type: string
        root:
          type: boolean
        path:
          type: string
        depth:
          type: integer
          format: int32
        locationCount:
          type: integer
          format: int32
      required:
        - id
        - name
    FolderTreeType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        children:
          type: array
          items:
            $ref: '#/components/schemas/FolderTreeType'
        root:
          type: boolean
        locationCount:
          type: integer
          format: int32
      required:
        - id
        - name
    FolderDetailType:
      type: object
      properties:
        folder:
          $ref: '#/components/schemas/FolderType'
        locationCount:
          type: integer
          format: int32
        subFolders:
          type: array
          items:
            $ref: '#/components/schemas/FolderType'
    FolderLocationDetailType:
      type: object
      properties:
        folderId:
          type: string
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationSummaryType'
        totalCount:
          type: integer
          format: int32
    UserFolderType:
      type: object
      properties:
        folder:
          $ref: '#/components/schemas/FolderType'
        isDefault:
          type: boolean
    UserForFolderType:
      type: object
      properties:
        userId:
          type: string
        email:
          type: string
        role:
          type: string
      required:
        - userId
    CountryType:
      type: object
      description: A country supported by Synup.
      properties:
        iso:
          type: string
        name:
          type: string
        dialCode:
          type: string
        states:
          type: array
          items:
            $ref: '#/components/schemas/StateType'
      required:
        - iso
        - name
    StateType:
      type: object
      properties:
        iso:
          type: string
        name:
          type: string
      required:
        - iso
        - name
    SubCategoryType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        category:
          type: string
      required:
        - id
        - name
    GbpCategoryType:
      type: object
      properties:
        gcid:
          type: string
        name:
          type: string
        countryIso:
          type: string
      required:
        - gcid
        - name
    GbpCategoriesByCountryType:
      type: object
      properties:
        countryIso:
          type: string
        categories:
          type: array
          items:
            $ref: '#/components/schemas/GbpCategoryType'
      required:
        - countryIso
    AccessibleLocationType:
      type: object
      properties:
        locationIds:
          type: array
          items:
            type: string
        totalCount:
          type: integer
          format: int32
    AccessibleFolderAndLocationType:
      type: object
      properties:
        folderIds:
          type: array
          items:
            type: string
        locationIds:
          type: array
          items:
            type: string
    AccountConfigsType:
      type: object
      properties:
        accountId:
          type: string
        packageType:
          type: string
        optimizationType:
          $ref: '#/components/schemas/AccountLocationsOptimizationTypeEnum'
        configs:
          type: string
      required:
        - accountId
    LocationVersionType:
      type: object
      properties:
        locationId:
          type: string
        version:
          type: integer
          format: int32
        data:
          type: string
      required:
        - locationId
    LocationTimezone:
      type: object
      properties:
        locationId:
          type: string
        timezone:
          type: string
      required:
        - locationId
    LanguageType:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
      required:
        - code
        - name
    AttributeCopyType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          $ref: '#/components/schemas/CustomAttributeInputTypeEnum'
        levelType:
          $ref: '#/components/schemas/CustomAttributeLevelTypeEnum'
      required:
        - id
        - name
    AttributeFilterType:
      type: object
      properties:
        attributeId:
          type: string
        values:
          type: array
          items:
            type: string
      required:
        - attributeId
    CustomAttributeType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        value:
          type: string
        type:
          $ref: '#/components/schemas/CustomAttributeInputTypeEnum'
      required:
        - id
        - name
    OfferingsForLocation:
      type: object
      properties:
        locationId:
          type: string
        offeringsLists:
          type: array
          items:
            $ref: '#/components/schemas/OfferingsListType'
      required:
        - locationId
    OfferingsListType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        sections:
          type: array
          items:
            $ref: '#/components/schemas/OfferingsSectionType'
        position:
          type: integer
          format: int32
        currencyCode:
          type: string
      required:
        - id
        - name
    OfferingsSectionType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/OfferingsItemType'
        position:
          type: integer
          format: int32
      required:
        - id
        - name
    OfferingsItemType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        price:
          type: number
          format: float
        currencyCode:
          type: string
        photoUrl:
          type: string
        position:
          type: integer
          format: int32
      required:
        - id
        - name
    PaginatedOfferingsListsForLocation:
      type: object
      properties:
        offeringsLists:
          type: array
          items:
            $ref: '#/components/schemas/OfferingsListType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
        totalCount:
          type: integer
          format: int32
    OfferingsListsForAccount:
      type: object
      properties:
        offeringsLists:
          type: array
          items:
            $ref: '#/components/schemas/OfferingsListType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
        totalCount:
          type: integer
          format: int32
    LocationCountForOfferingsList:
      type: object
      properties:
        offeringsListId:
          type: string
        count:
          type: integer
          format: int32
      required:
        - offeringsListId
        - count
    FaqType:
      type: object
      description: A frequently asked question entry for a location.
      properties:
        id:
          type: string
        question:
          type: string
        answer:
          type: string
        language:
          type: string
        locationId:
          type: string
      required:
        - id
        - question
        - answer
    FaqDetailType:
      type: object
      properties:
        faq:
          $ref: '#/components/schemas/FaqType'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationSummaryType'
    TagType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
    SubmittableTagType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        site:
          type: string
      required:
        - id
        - name
    RecentSearchType:
      type: object
      properties:
        id:
          type: string
        query:
          type: string
        entity:
          $ref: '#/components/schemas/RecentSearchEntityType'
        createdAt:
          type: string
      required:
        - id
        - query
    WildcardType:
      type: object
      properties:
        key:
          type: string
        sampleValue:
          type: string
      required:
        - key
    LocationAccessorType:
      type: object
      properties:
        locationId:
          type: string
        userIds:
          type: array
          items:
            type: string
      required:
        - locationId
    ResourceResultType:
      type: object
      properties:
        resourceId:
          type: string
        resourceType:
          type: string
        name:
          type: string
      required:
        - resourceId
    BulkUploadType:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        fileUrl:
          type: string
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - id
    BulkEditType:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        totalCount:
          type: integer
          format: int32
        successCount:
          type: integer
          format: int32
        failureCount:
          type: integer
          format: int32
      required:
        - id
    DownloadLocationsInBulkType:
      type: object
      properties:
        csvUrl:
          type: string
        status:
          type: string
    CanAddLocationType:
      type: object
      properties:
        canAdd:
          type: boolean
        reason:
          type: string
      required:
        - canAdd
    LocationsCountResultType:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        activeCount:
          type: integer
          format: int32
        archivedCount:
          type: integer
          format: int32
      required:
        - totalCount
    FilterLocationsBySubCategoryType:
      type: object
      properties:
        locationIds:
          type: array
          items:
            type: string
        totalCount:
          type: integer
          format: int32
    OnboardingLocationCreateStatusType:
      type: object
      properties:
        locationId:
          type: string
        status:
          type: string
        inProgress:
          type: boolean
    CurrencyCodesType:
      type: object
      properties:
        codes:
          type: array
          items:
            type: string
    CurrencyCodeType:
      type: object
      properties:
        code:
          type: string
        countryIso:
          type: string
      required:
        - code
    ServiceAreaType:
      type: object
      properties:
        businessType:
          type: string
        regionCode:
          type: string
        placeInfos:
          type: array
          items:
            $ref: '#/components/schemas/PlaceInfoType'
    PlaceInfoType:
      type: object
      properties:
        placeId:
          type: string
        placeName:
          type: string
      required:
        - placeId
    ServiceItemType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        price:
          type: number
          format: float
        currencyCode:
          type: string
        categoryId:
          type: string
      required:
        - id
        - name
    PhotoType:
      type: object
      properties:
        id:
          type: string
        url:
          type: string
        caption:
          type: string
        starred:
          type: boolean
      required:
        - id
        - url
    BusinessHoursType:
      type: object
      properties:
        days:
          type: array
          items:
            $ref: '#/components/schemas/BusinessHoursDayType'
    BusinessHoursDayType:
      type: object
      properties:
        day:
          $ref: '#/components/schemas/DayOfTheWeekType'
        slots:
          type: array
          items:
            $ref: '#/components/schemas/BusinessHoursSlotType'
        closed:
          type: boolean
    BusinessHoursSlotType:
      type: object
      properties:
        openTime:
          type: string
        closeTime:
          type: string
    MoreHourType:
      type: object
      properties:
        type:
          type: string
        days:
          type: array
          items:
            $ref: '#/components/schemas/MoreHourDayType'
    MoreHourDayType:
      type: object
      properties:
        day:
          $ref: '#/components/schemas/DayOfTheWeekType'
        openTime:
          type: string
        closeTime:
          type: string
    MutationErrorType:
      type: object
      description: (also defined by notifications) (also defined by reviewfunnel) (also defined by crawler)
      properties:
        code:
          type: string
        message:
          type: string
        path:
          type: array
          items:
            type: string
      required:
        - message
    MutationWarningType:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
      required:
        - message
    CreateLocationPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        location:
          $ref: '#/components/schemas/LocationSummaryType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        success:
          type: boolean
    UpdateLocationPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        location:
          $ref: '#/components/schemas/LocationSummaryType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        success:
          type: boolean
    AssociateOfferingsListToLocationPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsList:
          $ref: '#/components/schemas/OfferingsListType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    DissociateOfferingsListFromLocationPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CreateOfferingsListPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsList:
          $ref: '#/components/schemas/OfferingsListType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UpdateOfferingsListPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsList:
          $ref: '#/components/schemas/OfferingsListType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ArchiveOfferingsListPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CreateOfferingsSectionPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsSection:
          $ref: '#/components/schemas/OfferingsSectionType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UpdateOfferingsSectionPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsSection:
          $ref: '#/components/schemas/OfferingsSectionType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ArchiveOfferingsSectionPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CreateOfferingsItemPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsItem:
          $ref: '#/components/schemas/OfferingsItemType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UpdateOfferingsItemPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsItem:
          $ref: '#/components/schemas/OfferingsItemType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ArchiveOfferingsItemPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CloneSectionsToListPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsList:
          $ref: '#/components/schemas/OfferingsListType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CloneItemsToSectionPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsSection:
          $ref: '#/components/schemas/OfferingsSectionType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    BulkArchiveOfferingsPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        archivedCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ReorderOfferingsListPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsList:
          $ref: '#/components/schemas/OfferingsListType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ReorderOfferingsSectionPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsSection:
          $ref: '#/components/schemas/OfferingsSectionType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ReorderOfferingsItemPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsItem:
          $ref: '#/components/schemas/OfferingsItemType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    RequestPackageUpgradePayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    AddLocationPhotosPayload:
      type: object
      description: (also defined by media-manager)
      properties:
        clientMutationId:
          type: string
        photos:
          type: array
          items:
            $ref: '#/components/schemas/PhotoType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    RemoveLocationPhotosPayload:
      type: object
      description: (also defined by media-manager)
      properties:
        clientMutationId:
          type: string
        removedCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    StarLocationPhotosPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        photos:
          type: array
          items:
            $ref: '#/components/schemas/PhotoType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UnstarLocationPhotosPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        photos:
          type: array
          items:
            $ref: '#/components/schemas/PhotoType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    StarUnstarLocationPhotosPayload:
      type: object
      description: (also defined by media-manager)
      properties:
        clientMutationId:
          type: string
        photos:
          type: array
          items:
            $ref: '#/components/schemas/PhotoType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ArchiveLocationsPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        archivedCount:
          type: integer
          format: int32
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationSummaryType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
      required:
        - archivedCount
    ScheduleLocationsForArchivePayload:
      type: object
      properties:
        clientMutationId:
          type: string
        scheduledCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ActivateLocationsPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        activatedCount:
          type: integer
          format: int32
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationSummaryType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CreateLocationResourceMutationPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        resource:
          $ref: '#/components/schemas/ResourceResultType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    AddTagPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        tag:
          $ref: '#/components/schemas/TagType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    RemoveTagPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    BulkAddTagsPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        addedCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CancelLocationsArchivePayload:
      type: object
      properties:
        clientMutationId:
          type: string
        cancelledCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CreateFolderPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        folder:
          $ref: '#/components/schemas/FolderType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    DeleteFolderPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    AddLocationsToFolderPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        folder:
          $ref: '#/components/schemas/FolderType'
        addedCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    DeleteLocationsFromFolderPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        removedCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    RenameFolderPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        folder:
          $ref: '#/components/schemas/FolderType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    AddFoldersForUserPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        status:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    AddFoldersForUsersPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    AddLocationsForUserPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        status:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    RemoveFoldersForUserPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    RemoveDefaultFolderForUserPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    RemoveLocationsForUserPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UpdateLocationsInBulkPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        bulkEdit:
          $ref: '#/components/schemas/BulkEditType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    DeleteConnectedAccountsLocationsPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        deletedCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CreateLocationsInBulkPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        bulkUpload:
          $ref: '#/components/schemas/BulkUploadType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    HideBulkUploadPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ArchiveCustomAttributePayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    EditCustomAttributePayload:
      type: object
      properties:
        clientMutationId:
          type: string
        attribute:
          $ref: '#/components/schemas/AttributeCopyType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    AddAttributePayload:
      type: object
      properties:
        clientMutationId:
          type: string
        attribute:
          $ref: '#/components/schemas/CustomAttributeType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    EditFolderNodesPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        folders:
          type: array
          items:
            $ref: '#/components/schemas/FolderType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CreateRecentSearchPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        recentSearch:
          $ref: '#/components/schemas/RecentSearchType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CreateFaqPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        faqs:
          type: array
          items:
            $ref: '#/components/schemas/FaqType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    EditFaqPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        faqs:
          type: array
          items:
            $ref: '#/components/schemas/FaqType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    DeleteFaqPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    EnableVoiceForLocationPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    RequestVoiceForLocationPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UpgradePackagePayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        packageType:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    EnableDisableAddOnPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ReviseSubmittableTagsPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        tags:
          type: array
          items:
            $ref: '#/components/schemas/SubmittableTagType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UpsertServiceItemPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        succeededServices:
          type: array
          items:
            $ref: '#/components/schemas/ServiceItemType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UpsertServiceItemsPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        succeededServices:
          type: array
          items:
            $ref: '#/components/schemas/ServiceItemType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    DeleteServiceItemsPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        deletedCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UpdateAdditionalCategoriesPayload:
      type: object
      properties:
        clientMutationId:
          type: string
        location:
          $ref: '#/components/schemas/LocationSummaryType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    SyncLocationCustomAttributesFromGooglePayload:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    SearchFilterInput:
      type: object
      description: Location search filter.
      properties:
        query:
          type: string
        countryIsos:
          type: array
          items:
            type: string
        stateIsos:
          type: array
          items:
            type: string
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/LocationStatusType'
        folderIds:
          type: array
          items:
            type: string
        tagIds:
          type: array
          items:
            type: string
        subCategoryIds:
          type: array
          items:
            type: string
        customAttributeFilters:
          type: array
          items:
            $ref: '#/components/schemas/CustomAttributeFilterInput'
    ConditionsFilterInput:
      type: object
      properties:
        locationIds:
          type: array
          items:
            type: string
        folderIds:
          type: array
          items:
            type: string
        countryIsos:
          type: array
          items:
            type: string
    CustomAttributeFilterInput:
      type: object
      properties:
        attributeId:
          type: string
        values:
          type: array
          items:
            type: string
        operator:
          $ref: '#/components/schemas/OperatorType'
      required:
        - attributeId
    BusinessHoursDayInput:
      type: object
      properties:
        day:
          $ref: '#/components/schemas/DayOfTheWeekType'
        slots:
          type: array
          items:
            $ref: '#/components/schemas/BusinessHoursSlotInput'
        closed:
          type: boolean
      required:
        - day
    BusinessHoursSlotInput:
      type: object
      properties:
        openTime:
          type: string
        closeTime:
          type: string
      required:
        - openTime
        - closeTime
    MoreHourInput:
      type: object
      properties:
        type:
          type: string
        days:
          type: array
          items:
            $ref: '#/components/schemas/MoreHourDayInput'
      required:
        - type
    MoreHourDayInput:
      type: object
      properties:
        day:
          $ref: '#/components/schemas/DayOfTheWeekType'
        openTime:
          type: string
        closeTime:
          type: string
      required:
        - day
    CountryStateInput:
      type: object
      properties:
        countryIso:
          type: string
        stateIso:
          type: string
      required:
        - countryIso
    ServiceAreaInput:
      type: object
      properties:
        businessType:
          type: string
        regionCode:
          type: string
        placeInfos:
          type: array
          items:
            $ref: '#/components/schemas/PlaceInfoInput'
    PlaceInfoInput:
      type: object
      properties:
        placeId:
          type: string
        placeName:
          type: string
      required:
        - placeId
    LocationPhotoInput:
      type: object
      properties:
        url:
          type: string
        caption:
          type: string
        type:
          type: string
      required:
        - url
    FaqInput:
      type: object
      properties:
        question:
          type: string
        answer:
          type: string
        language:
          type: string
      required:
        - question
        - answer
    CreateFaqOperation:
      type: object
      properties:
        locationIds:
          type: array
          items:
            type: string
        faqs:
          type: array
          items:
            $ref: '#/components/schemas/FaqInput'
      required:
        - locationIds
        - faqs
    EditFaqOperation:
      type: object
      properties:
        faqId:
          type: string
        question:
          type: string
        answer:
          type: string
      required:
        - faqId
    FolderTreeInputType:
      type: object
      properties:
        folderId:
          type: string
        parentId:
          type: string
        name:
          type: string
      required:
        - folderId
    BulkUpdateLocationInputType:
      type: object
      properties:
        locationIds:
          type: array
          items:
            type: string
        updates:
          type: string
      required:
        - locationIds
    OfferingsItemInput:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        price:
          type: number
          format: float
        currencyCode:
          type: string
        photoUrl:
          type: string
      required:
        - name
    OfferingsItemUpdateInput:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        price:
          type: number
          format: float
      required:
        - id
    OfferingsSectionInput:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
      required:
        - name
    RevisedSubmittableTagInput:
      type: object
      properties:
        tagId:
          type: string
        site:
          type: string
        submit:
          type: boolean
      required:
        - tagId
        - site
        - submit
    SyncCustomAttributeFromGoogleInput:
      type: object
      properties:
        locationId:
          type: string
        attributeIds:
          type: array
          items:
            type: string
      required:
        - locationId
    ServiceItemInputType:
      type: object
      properties:
        name:
          type: string
        categoryId:
          type: string
        price:
          type: number
          format: float
        description:
          type: string
        currencyCode:
          type: string
      required:
        - name
    ServiceItemUpsertInputType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        categoryId:
          type: string
        price:
          type: number
          format: float
        description:
          type: string
        currencyCode:
          type: string
      required:
        - name
    CustomAttributeInputType:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
        type:
          $ref: '#/components/schemas/CustomAttributeInputTypeEnum'
        levelType:
          $ref: '#/components/schemas/CustomAttributeLevelTypeEnum'
      required:
        - name
    PublisherAttributesInputType:
      type: object
      properties:
        publisher:
          $ref: '#/components/schemas/PublisherNameInputTypeEnum'
        attributes:
          type: string
      required:
        - publisher
    CreateLocationInput:
      type: object
      properties:
        clientMutationId:
          type: string
        name:
          type: string
        storeId:
          type: string
        street:
          type: string
        city:
          type: string
        stateIso:
          type: string
        postalCode:
          type: string
        countryIso:
          type: string
        subCategoryId:
          type: integer
          format: int32
        phone:
          type: string
        website:
          type: string
        folderIds:
          type: array
          items:
            type: string
        businessHours:
          type: array
          items:
            $ref: '#/components/schemas/BusinessHoursDayInput'
        serviceArea:
          $ref: '#/components/schemas/ServiceAreaInput'
        customPlanId:
          type: string
      required:
        - name
    UpdateLocationInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        name:
          type: string
        street:
          type: string
        city:
          type: string
        stateIso:
          type: string
        postalCode:
          type: string
        countryIso:
          type: string
        phone:
          type: string
        website:
          type: string
        businessHours:
          type: array
          items:
            $ref: '#/components/schemas/BusinessHoursDayInput'
        moreHours:
          type: array
          items:
            $ref: '#/components/schemas/MoreHourInput'
        serviceArea:
          $ref: '#/components/schemas/ServiceAreaInput'
        customAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CustomAttributeInputType'
      required:
        - locationId
    AssociateOfferingsListToLocationInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        offeringsListId:
          type: string
      required:
        - locationId
        - offeringsListId
    DissociateOfferingsListFromLocationInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        offeringsListId:
          type: string
      required:
        - locationId
        - offeringsListId
    CreateOfferingsListInput:
      type: object
      properties:
        clientMutationId:
          type: string
        name:
          type: string
        description:
          type: string
        currencyCode:
          type: string
        locationIds:
          type: array
          items:
            type: string
      required:
        - name
    UpdateOfferingsListInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsListId:
          type: string
        name:
          type: string
        description:
          type: string
      required:
        - offeringsListId
    ArchiveOfferingsListInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsListId:
          type: string
      required:
        - offeringsListId
    CreateOfferingsSectionInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsListId:
          type: string
        section:
          $ref: '#/components/schemas/OfferingsSectionInput'
      required:
        - offeringsListId
        - section
    UpdateOfferingsSectionInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsSectionId:
          type: string
        name:
          type: string
        description:
          type: string
      required:
        - offeringsSectionId
    ArchiveOfferingsSectionInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsSectionId:
          type: string
      required:
        - offeringsSectionId
    CreateOfferingsItemInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsSectionId:
          type: string
        item:
          $ref: '#/components/schemas/OfferingsItemInput'
      required:
        - offeringsSectionId
        - item
    UpdateOfferingsItemInput:
      type: object
      properties:
        clientMutationId:
          type: string
        item:
          $ref: '#/components/schemas/OfferingsItemUpdateInput'
      required:
        - item
    ArchiveOfferingsItemInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsItemId:
          type: string
      required:
        - offeringsItemId
    CloneSectionsToListInput:
      type: object
      properties:
        clientMutationId:
          type: string
        targetListId:
          type: string
        sectionIds:
          type: array
          items:
            type: string
      required:
        - targetListId
        - sectionIds
    CloneItemsToSectionInput:
      type: object
      properties:
        clientMutationId:
          type: string
        targetSectionId:
          type: string
        itemIds:
          type: array
          items:
            type: string
      required:
        - targetSectionId
        - itemIds
    BulkArchiveOfferingsInput:
      type: object
      properties:
        clientMutationId:
          type: string
        listIds:
          type: array
          items:
            type: string
        sectionIds:
          type: array
          items:
            type: string
        itemIds:
          type: array
          items:
            type: string
    ReorderOfferingsListInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsListId:
          type: string
        position:
          type: integer
          format: int32
      required:
        - offeringsListId
        - position
    ReorderOfferingsSectionInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsSectionId:
          type: string
        position:
          type: integer
          format: int32
      required:
        - offeringsSectionId
        - position
    ReorderOfferingsItemInput:
      type: object
      properties:
        clientMutationId:
          type: string
        offeringsItemId:
          type: string
        position:
          type: integer
          format: int32
      required:
        - offeringsItemId
        - position
    RequestPackageUpgradeInput:
      type: object
      properties:
        clientMutationId:
          type: string
        accountId:
          type: string
        packageType:
          type: string
      required:
        - accountId
    AddLocationPhotosInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        photos:
          type: array
          items:
            $ref: '#/components/schemas/LocationPhotoInput'
      required:
        - locationId
        - photos
    RemoveLocationPhotosInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        photoIds:
          type: array
          items:
            type: string
      required:
        - locationId
        - photoIds
    StarLocationPhotosInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        photoIds:
          type: array
          items:
            type: string
      required:
        - locationId
        - photoIds
    UnstarLocationPhotosInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        photoIds:
          type: array
          items:
            type: string
      required:
        - locationId
        - photoIds
    StarUnstarLocationPhotosInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        starIds:
          type: array
          items:
            type: string
        unstarIds:
          type: array
          items:
            type: string
      required:
        - locationId
    ArchiveLocationsInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationIds:
          type: array
          items:
            type: string
        reason:
          type: string
      required:
        - locationIds
    ScheduleLocationsForArchiveInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationIds:
          type: array
          items:
            type: string
        scheduledAt:
          type: string
      required:
        - locationIds
        - scheduledAt
    ActivateLocationsInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationIds:
          type: array
          items:
            type: string
      required:
        - locationIds
    CreateLocationResourceMutationInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        resourceType:
          type: string
      required:
        - locationId
    AddTagInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        tagName:
          type: string
      required:
        - locationId
        - tagName
    RemoveTagInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        tagId:
          type: string
      required:
        - locationId
        - tagId
    BulkAddTagsInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationIds:
          type: array
          items:
            type: string
        tagNames:
          type: array
          items:
            type: string
      required:
        - locationIds
        - tagNames
    CancelLocationsArchiveInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationIds:
          type: array
          items:
            type: string
      required:
        - locationIds
    CreateFolderInput:
      type: object
      properties:
        clientMutationId:
          type: string
        name:
          type: string
        parentId:
          type: string
      required:
        - name
    DeleteFolderInput:
      type: object
      properties:
        clientMutationId:
          type: string
        folderId:
          type: string
      required:
        - folderId
    AddLocationsToFolderInput:
      type: object
      properties:
        clientMutationId:
          type: string
        folderId:
          type: string
        locationIds:
          type: array
          items:
            type: string
      required:
        - folderId
        - locationIds
    DeleteLocationsFromFolderInput:
      type: object
      properties:
        clientMutationId:
          type: string
        folderId:
          type: string
        locationIds:
          type: array
          items:
            type: string
      required:
        - folderId
        - locationIds
    RenameFolderInput:
      type: object
      properties:
        clientMutationId:
          type: string
        folderId:
          type: string
        name:
          type: string
      required:
        - folderId
        - name
    AddFoldersForUserInput:
      type: object
      properties:
        clientMutationId:
          type: string
        userId:
          type: string
        folderIds:
          type: array
          items:
            type: string
      required:
        - userId
        - folderIds
    AddFoldersForUsersInput:
      type: object
      properties:
        clientMutationId:
          type: string
        userIds:
          type: array
          items:
            type: string
        folderIds:
          type: array
          items:
            type: string
      required:
        - userIds
        - folderIds
    AddLocationsForUserInput:
      type: object
      properties:
        clientMutationId:
          type: string
        userId:
          type: string
        locationIds:
          type: array
          items:
            type: string
      required:
        - userId
        - locationIds
    RemoveFoldersForUserInput:
      type: object
      properties:
        clientMutationId:
          type: string
        userId:
          type: string
        folderIds:
          type: array
          items:
            type: string
      required:
        - userId
        - folderIds
    RemoveDefaultFolderForUserInput:
      type: object
      properties:
        clientMutationId:
          type: string
        userId:
          type: string
      required:
        - userId
    RemoveLocationsForUserInput:
      type: object
      properties:
        clientMutationId:
          type: string
        userId:
          type: string
        locationIds:
          type: array
          items:
            type: string
      required:
        - userId
        - locationIds
    UpdateLocationsInBulkInput:
      type: object
      properties:
        clientMutationId:
          type: string
        updates:
          $ref: '#/components/schemas/BulkUpdateLocationInputType'
      required:
        - updates
    DeleteConnectedAccountsLocationsInput:
      type: object
      properties:
        clientMutationId:
          type: string
        connectedAccountId:
          type: string
        locationIds:
          type: array
          items:
            type: string
      required:
        - connectedAccountId
    CreateLocationsInBulkInput:
      type: object
      properties:
        clientMutationId:
          type: string
        csvUrl:
          type: string
        folderId:
          type: string
      required:
        - csvUrl
    HideBulkUploadInput:
      type: object
      properties:
        clientMutationId:
          type: string
        bulkUploadId:
          type: string
      required:
        - bulkUploadId
    ArchiveCustomAttributeInput:
      type: object
      properties:
        clientMutationId:
          type: string
        attributeId:
          type: string
      required:
        - attributeId
    EditCustomAttributeInput:
      type: object
      properties:
        clientMutationId:
          type: string
        attributeId:
          type: string
        name:
          type: string
        type:
          $ref: '#/components/schemas/CustomAttributeInputTypeEnum'
      required:
        - attributeId
    AddAttributeInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        attribute:
          $ref: '#/components/schemas/CustomAttributeInputType'
      required:
        - locationId
        - attribute
    EditFolderNodesInput:
      type: object
      properties:
        clientMutationId:
          type: string
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/FolderTreeInputType'
      required:
        - nodes
    CreateRecentSearchInput:
      type: object
      properties:
        clientMutationId:
          type: string
        query:
          type: string
        entity:
          $ref: '#/components/schemas/RecentSearchEntityType'
      required:
        - query
    CreateFaqInput:
      type: object
      properties:
        clientMutationId:
          type: string
        operations:
          type: array
          items:
            $ref: '#/components/schemas/CreateFaqOperation'
      required:
        - operations
    EditFaqInput:
      type: object
      properties:
        clientMutationId:
          type: string
        operations:
          type: array
          items:
            $ref: '#/components/schemas/EditFaqOperation'
      required:
        - operations
    DeleteFaqInput:
      type: object
      properties:
        clientMutationId:
          type: string
        faqIds:
          type: array
          items:
            type: string
      required:
        - faqIds
    EnableVoiceForLocationInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
      required:
        - locationId
    RequestVoiceForLocationInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
      required:
        - locationId
    UpgradePackageInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationIds:
          type: array
          items:
            type: string
        packageType:
          type: string
      required:
        - locationIds
        - packageType
    EnableDisableAddOnInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationIds:
          type: array
          items:
            type: string
        addOnType:
          type: string
        action:
          $ref: '#/components/schemas/AddOnActionTypeEnum'
      required:
        - locationIds
        - addOnType
        - action
    ReviseSubmittableTagsInput:
      type: object
      properties:
        clientMutationId:
          type: string
        tags:
          type: array
          items:
            $ref: '#/components/schemas/RevisedSubmittableTagInput'
      required:
        - tags
    UpsertServiceItemInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        serviceItems:
          type: array
          items:
            $ref: '#/components/schemas/ServiceItemUpsertInputType'
      required:
        - locationId
        - serviceItems
    UpsertServiceItemsInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        serviceItems:
          type: array
          items:
            $ref: '#/components/schemas/ServiceItemUpsertInputType'
      required:
        - locationId
        - serviceItems
    DeleteServiceItemsInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        serviceItemIds:
          type: array
          items:
            type: string
      required:
        - locationId
        - serviceItemIds
    UpdateAdditionalCategoriesInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        additionalGbpSiteCategoryIds:
          type: array
          items:
            type: string
      required:
        - locationId
    SyncLocationCustomAttributesFromGoogleInput:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        attributeIds:
          type: array
          items:
            type: string
      required:
        - locationId
    LocationStatusType:
      type: string
      enum:
        - ACTIVE
        - ARCHIVED
        - PENDING
        - TEMPORARILY_CLOSED
        - SCHEDULED_FOR_ARCHIVE
      description: Lifecycle states of a location.
    DayOfTheWeekType:
      type: string
      enum:
        - MONDAY
        - TUESDAY
        - WEDNESDAY
        - THURSDAY
        - FRIDAY
        - SATURDAY
        - SUNDAY
    CustomAttributeInputTypeEnum:
      type: string
      enum:
        - STRING
        - NUMBER
        - BOOLEAN
        - DATE
        - ENUM
        - URL
    CustomAttributeLevelTypeEnum:
      type: string
      enum:
        - ACCOUNT
        - LOCATION
    AccountLocationsOptimizationTypeEnum:
      type: string
      enum:
        - DEFAULT
        - OPTIMIZED
        - CUSTOM
    AddOnActionTypeEnum:
      type: string
      enum:
        - ENABLE
        - DISABLE
    CsvFormatTypeEnum:
      type: string
      enum:
        - STANDARD
        - EXTENDED
        - GOOGLE
    BulkLocationsActionEnum:
      type: string
      enum:
        - ARCHIVE
        - ACTIVATE
        - CANCEL_ARCHIVE
        - SCHEDULE_ARCHIVE
    SelectionTypeEnum:
      type: string
      enum:
        - ALL
        - INCLUDE
        - EXCLUDE
      description: (also defined by media-manager)
    SitesForTagTypeEnum:
      type: string
      enum:
        - GOOGLE
        - FACEBOOK
        - BING
        - APPLE
        - YELP
    PublisherNameInputTypeEnum:
      type: string
      enum:
        - GOOGLE
        - FACEBOOK
        - BING
        - APPLE
        - YELP
    LanguageEnumType:
      type: string
      enum:
        - EN
        - ES
        - FR
        - DE
        - IT
        - PT
        - JA
    OperatorType:
      type: string
      enum:
        - EQUALS
        - NOT_EQUALS
        - CONTAINS
        - NOT_CONTAINS
        - IN
        - NOT_IN
    RecentSearchEntityType:
      type: string
      enum:
        - LOCATION
        - FOLDER
        - TAG
    Post:
      type: object
      description: A GMB-era post record attached to a single location.
      properties:
        id:
          type: string
        databaseId:
          type: string
        content:
          type: string
        locationId:
          type: integer
          format: int32
        repost:
          type: boolean
        photo:
          type: string
        event:
          $ref: '#/components/schemas/Event'
        cta:
          $ref: '#/components/schemas/Cta'
        offer:
          $ref: '#/components/schemas/Offer'
        views:
          type: integer
          format: int32
        clicks:
          type: integer
          format: int32
        state:
          type: string
        submissionStatus:
          type: string
        postCreateTime:
          type: string
          format: date
        promotional:
          type: boolean
        statusInfoMessage:
          type: string
        scheduledDate:
          type: string
          format: date
      required:
        - id
        - databaseId
        - locationId
        - repost
        - state
        - submissionStatus
        - promotional
    PostElastic:
      type: object
      description: Elasticsearch-indexed post document used for paginated listings.
      properties:
        id:
          type: string
        databaseId:
          type: string
        content:
          type: string
        locationId:
          type: integer
          format: int32
        repost:
          type: boolean
        event:
          $ref: '#/components/schemas/Event'
        cta:
          $ref: '#/components/schemas/Cta'
        offer:
          $ref: '#/components/schemas/Offer'
        postType:
          type: string
        views:
          type: integer
          format: int32
        clicks:
          type: integer
          format: int32
        state:
          type: string
        submissionStatus:
          type: string
        postCreateTime:
          type: string
          format: date
        promotional:
          type: boolean
        photo:
          type: string
        scheduledDate:
          type: string
          format: date
        postErrorCategory:
          type: string
        postError:
          type: string
      required:
        - id
        - databaseId
        - locationId
        - repost
        - state
        - submissionStatus
        - promotional
    PostConnection:
      type: object
      description: Cursor-based connection of posts.
      properties:
        edges:
          type: array
          items:
            $ref: '#/components/schemas/PostEdge'
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
      required:
        - edges
        - pageInfo
    PostEdge:
      type: object
      properties:
        node:
          $ref: '#/components/schemas/PostElastic'
        cursor:
          type: string
      required:
        - node
        - cursor
    PageInfo:
      type: object
      description: (also defined by interactions) (also defined by v2app) (also defined by scantool) (also defined by thirdeye)
      properties:
        hasNextPage:
          type: boolean
        hasPreviousPage:
          type: boolean
    OffsetBasedPageInfo:
      type: object
      properties:
        totalPages:
          type: integer
          format: int32
        hasNextPage:
          type: boolean
        hasPreviousPage:
          type: boolean
        totalRecords:
          type: integer
          format: int32
      required:
        - totalPages
        - totalRecords
    Event:
      type: object
      properties:
        title:
          type: string
        startDay:
          type: string
          format: date
        startTime:
          type: string
        endDay:
          type: string
          format: date
        endTime:
          type: string
    Cta:
      type: object
      properties:
        type:
          type: string
        url:
          type: string
    Offer:
      type: object
      properties:
        couponCode:
          type: string
        redeemUrl:
          type: string
        termsConditions:
          type: string
    PostStat:
      type: object
      description: Aggregated post stats with current value and delta.
      properties:
        activePostCount:
          $ref: '#/components/schemas/Stat'
        totalViews:
          $ref: '#/components/schemas/Stat'
        totalClicks:
          $ref: '#/components/schemas/Stat'
      required:
        - activePostCount
        - totalViews
        - totalClicks
    Stat:
      type: object
      properties:
        value:
          type: integer
          format: int32
        delta:
          type: string
    PostCount:
      type: object
      description: Count of posts per lifecycle state.
      properties:
        active:
          type: integer
          format: int32
        scheduled:
          type: integer
          format: int32
        deleted:
          type: integer
          format: int32
        expired:
          type: integer
          format: int32
      required:
        - active
        - scheduled
        - deleted
        - expired
    PostDateStat:
      type: object
      properties:
        date:
          type: string
        activePostCount:
          type: integer
          format: int32
        totalViews:
          type: integer
          format: int32
        totalClicks:
          type: integer
          format: int32
      required:
        - date
    PostLocationStat:
      type: object
      properties:
        locationId:
          type: integer
          format: int32
        value:
          type: integer
          format: int32
        delta:
          type: string
      required:
        - locationId
    SocialPost:
      type: object
      description: A newer multi-site/multi-location post campaign.
      properties:
        id:
          type: string
        name:
          type: string
        status:
          $ref: '#/components/schemas/SocialPostStatusEnum'
        type:
          $ref: '#/components/schemas/SocialPostTypeEnum'
        createdAt:
          type: string
          format: date
        deletedAt:
          type: string
          format: date
        expiredAt:
          type: string
          format: date
        scheduledStartDate:
          type: string
          format: date
        scheduledEndDate:
          type: string
          format: date
        views:
          type: integer
          format: int32
        clicks:
          type: integer
          format: int32
        shares:
          type: integer
          format: int32
        reactions:
          type: integer
          format: int32
        comments:
          type: integer
          format: int32
        sites:
          type: array
          items:
            $ref: '#/components/schemas/SitesType'
        message:
          type: array
          items:
            $ref: '#/components/schemas/PostMessage'
        cta:
          type: array
          items:
            $ref: '#/components/schemas/PostCta'
        contextInfo:
          $ref: '#/components/schemas/PostContextInfo'
        mediaUrl:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostMedia'
        publishDetails:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostPublishDetail'
        postLinks:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostPublishedLink'
        locationIds:
          type: array
          items:
            type: integer
            format: int32
      required:
        - id
        - name
        - status
        - type
        - createdAt
        - sites
        - locationIds
    SocialPostEs:
      type: object
      description: Elasticsearch-indexed social post record used in rollup listings.
      properties:
        id:
          type: string
        name:
          type: string
        status:
          $ref: '#/components/schemas/SocialPostStatusEnum'
        type:
          $ref: '#/components/schemas/SocialPostTypeEnum'
        createdAt:
          type: string
          format: date
        deletedAt:
          type: string
          format: date
        expiredAt:
          type: string
          format: date
        scheduledStartDate:
          type: string
          format: date
        scheduledEndDate:
          type: string
          format: date
        views:
          type: integer
          format: int32
        clicks:
          type: integer
          format: int32
        shares:
          type: integer
          format: int32
        reactions:
          type: integer
          format: int32
        comments:
          type: integer
          format: int32
        sites:
          type: array
          items:
            $ref: '#/components/schemas/SitesType'
        message:
          type: array
          items:
            $ref: '#/components/schemas/PostMessage'
        cta:
          type: array
          items:
            $ref: '#/components/schemas/PostCta'
        contextInfo:
          $ref: '#/components/schemas/PostContextInfo'
        mediaUrl:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostMedia'
        publishDetails:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostPublishDetail'
        postLinks:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostPublishedLink'
        locationIds:
          type: array
          items:
            type: integer
            format: int32
        clientName:
          type: string
      required:
        - id
        - name
        - status
        - type
        - createdAt
        - sites
        - locationIds
    SocialPostPaginated:
      type: object
      properties:
        records:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostEs'
        locationDetails:
          type: array
          items:
            $ref: '#/components/schemas/LocationDetails'
        pageInfo:
          $ref: '#/components/schemas/OffsetBasedPageInfo'
      required:
        - pageInfo
    LocationDetails:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        street:
          type: string
        street2:
          type: string
        city:
          type: string
        postalCode:
          type: string
        countryIso:
          type: string
        stateIso:
          type: string
        stateName:
          type: string
        storeId:
          type: string
      required:
        - id
    SocialPostView:
      type: object
      properties:
        socialPostId:
          type: string
        socialPostInfo:
          $ref: '#/components/schemas/SocialPost'
        publishedLocationsCount:
          type: integer
          format: int32
        socialPostAnalyticsBySite:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostAnalyticsSitewise'
        socialPostAnalyticsByLocationId:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostAnalyticsLocationwise'
    SocialPostAnalyticsSitewise:
      type: object
      properties:
        clicks:
          type: integer
          format: int32
        views:
          type: integer
          format: int32
        reactions:
          type: integer
          format: int32
        shares:
          type: integer
          format: int32
        comments:
          type: integer
          format: int32
        site:
          $ref: '#/components/schemas/SitesType'
    SocialPostAnalyticsLocationwise:
      type: object
      properties:
        locationId:
          type: integer
          format: int32
        siteStats:
          type: array
          items:
            $ref: '#/components/schemas/StatsAndStatus'
    StatsAndStatus:
      type: object
      properties:
        clicks:
          type: integer
          format: int32
        views:
          type: integer
          format: int32
        reactions:
          type: integer
          format: int32
        shares:
          type: integer
          format: int32
        comments:
          type: integer
          format: int32
        status:
          type: string
        site:
          $ref: '#/components/schemas/SitesType'
    SocialPostCtaTypes:
      type: object
      properties:
        google:
          type: array
          items:
            $ref: '#/components/schemas/SiteCtaTypes'
        facebook:
          type: array
          items:
            $ref: '#/components/schemas/SiteCtaTypes'
    SiteCtaTypes:
      type: object
      properties:
        value:
          type: string
        label:
          type: string
    PostMessage:
      type: object
      properties:
        message:
          type: string
        site:
          $ref: '#/components/schemas/SitesType'
    PostCta:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/SiteCtaTypes'
        url:
          type: string
        site:
          $ref: '#/components/schemas/SitesType'
        tinyUrl:
          type: string
    PostContextInfo:
      type: object
      properties:
        couponCode:
          type: string
        redeemUrl:
          type: string
        termsConditions:
          type: string
        title:
          type: string
        discount:
          type: string
        locationType:
          type: string
        startDay:
          type: string
          format: date
        startTime:
          type: string
        endDay:
          type: string
          format: date
        endTime:
          type: string
    SocialPostMedia:
      type: object
      properties:
        url:
          type: string
        site:
          $ref: '#/components/schemas/SitesType'
        type:
          $ref: '#/components/schemas/MediaTypeEnum'
    SocialPostPublishDetail:
      type: object
      properties:
        site:
          $ref: '#/components/schemas/SitesType'
        status:
          $ref: '#/components/schemas/PublishStatusEnum'
        createdDate:
          type: string
          format: date
        publishedDate:
          type: string
          format: date
        deletedDate:
          type: string
          format: date
        expiredDate:
          type: string
          format: date
        submissionError:
          type: string
    SocialPostPublishedLink:
      type: object
      properties:
        site:
          $ref: '#/components/schemas/SitesType'
        link:
          type: string
    MetricInsightList:
      type: object
      properties:
        metricName:
          $ref: '#/components/schemas/SiteMetricType'
        locationData:
          type: array
          items:
            $ref: '#/components/schemas/LocationwiseMetric'
    LocationwiseMetric:
      type: object
      properties:
        locationId:
          type: string
        data:
          type: array
          items:
            $ref: '#/components/schemas/DatewiseMetric'
    DatewiseMetric:
      type: object
      properties:
        value:
          type: integer
          format: int32
        date:
          type: string
          format: date
    LocationLevelSocialPostStats:
      type: object
      properties:
        totalPosts:
          type: integer
          format: int32
        totalPostViews:
          type: integer
          format: int32
        totalPostClicks:
          type: integer
          format: int32
      required:
        - totalPosts
        - totalPostViews
        - totalPostClicks
    DownloadPostsInBulk:
      type: object
      properties:
        success:
          type: boolean
        csvUrl:
          type: string
      required:
        - success
    MutationError:
      type: object
      description: (also defined by insights) (also defined by v2app)
      properties:
        message:
          type: string
        code:
          type: string
        contextInfo:
          type: array
          items:
            $ref: '#/components/schemas/ContextError'
    ContextError:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
    PostMutation:
      type: object
      description: Result of a single-post create/edit/delete/repost mutation.
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
        post:
          $ref: '#/components/schemas/Post'
      required:
        - success
    BulkPostMutation:
      type: object
      description: Result of a bulk post mutation.
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
        posts:
          type: array
          items:
            $ref: '#/components/schemas/Post'
      required:
        - success
    RepostMutation:
      type: object
      description: Result of a repost mutation.
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
        post:
          $ref: '#/components/schemas/Post'
        scheduledPost:
          $ref: '#/components/schemas/Post'
      required:
        - success
    SocialPostMutation:
      type: object
      description: Result of a social post create/edit mutation.
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
        socialPost:
          $ref: '#/components/schemas/SocialPost'
      required:
        - success
    DeleteSocialPostMutation:
      type: object
      properties:
        success:
          type: boolean
        socialPostId:
          type: string
      required:
        - success
        - socialPostId
    DeleteBulkSocialPostMutation:
      type: object
      properties:
        success:
          type: boolean
        socialPostIds:
          type: array
          items:
            type: string
        failedSocialPostIds:
          type: array
          items:
            type: string
      required:
        - success
        - socialPostIds
        - failedSocialPostIds
    DateFilterInput:
      type: object
      properties:
        startDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
      required:
        - startDate
        - endDate
    CtaInput:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/CTAType'
        url:
          type: string
      required:
        - type
        - url
    EventInput:
      type: object
      properties:
        title:
          type: string
        startDay:
          type: string
          format: date
        startTime:
          type: string
        endDay:
          type: string
          format: date
        endTime:
          type: string
      required:
        - title
        - startDay
        - startTime
        - endDay
        - endTime
    OfferInput:
      type: object
      properties:
        couponCode:
          type: string
        redeemUrl:
          type: string
        termsConditions:
          type: string
    PostInput:
      type: object
      properties:
        content:
          type: string
        cta:
          $ref: '#/components/schemas/CtaInput'
        event:
          $ref: '#/components/schemas/EventInput'
        repost:
          type: boolean
        scheduleDate:
          type: string
        promotional:
          type: boolean
      required:
        - content
    PostMessageInput:
      type: object
      properties:
        site:
          $ref: '#/components/schemas/SitesType'
        message:
          type: string
      required:
        - site
        - message
    PostCtaInput:
      type: object
      properties:
        site:
          $ref: '#/components/schemas/SitesType'
        type:
          type: string
        url:
          type: string
      required:
        - site
        - type
        - url
    PostContextInfoInput:
      type: object
      description: Additional details for post based on post_type.
      properties:
        couponCode:
          type: string
        redeemUrl:
          type: string
        termsConditions:
          type: string
        title:
          type: string
        discount:
          type: string
        locationType:
          type: string
        startDay:
          type: string
          format: date
        startTime:
          type: string
        endDay:
          type: string
          format: date
        endTime:
          type: string
    PostScheduledDatesInput:
      type: object
      properties:
        startDatetime:
          type: string
          description: Custom scalar Datetime
        endDatetime:
          type: string
          description: Custom scalar Datetime
        removalSites:
          type: array
          items:
            $ref: '#/components/schemas/SitesType'
      required:
        - startDatetime
        - endDatetime
    SocialPostMediaInput:
      type: object
      properties:
        site:
          $ref: '#/components/schemas/SitesType'
        url:
          type: string
        type:
          $ref: '#/components/schemas/MediaTypeEnum'
      required:
        - site
        - url
    ProductInfoInput:
      type: object
      properties:
        productId:
          type: string
        name:
          type: string
        category:
          type: string
        price:
          type: string
        minPrice:
          type: string
        maxPrice:
          type: string
        description:
          type: string
        photo:
          type: string
        cta:
          type: array
          items:
            $ref: '#/components/schemas/PostCtaInput'
        sites:
          type: array
          items:
            $ref: '#/components/schemas/SitesType'
    SocialPostFiltersInput:
      type: object
      description: Filters for social posts.
      properties:
        creationDateRange:
          $ref: '#/components/schemas/DateFilterInput'
        type:
          $ref: '#/components/schemas/SocialPostTypeEnum'
        status:
          $ref: '#/components/schemas/SocialPostStatusEnum'
        siteUrls:
          type: array
          items:
            $ref: '#/components/schemas/SitesType'
        name:
          type: string
        accountIds:
          type: array
          items:
            type: string
    SocialPostSortInput:
      type: object
      properties:
        field:
          $ref: '#/components/schemas/SocialPostSortableFieldsType'
        order:
          $ref: '#/components/schemas/PostSortOrderType'
      required:
        - field
        - order
    SortInput:
      type: object
      properties:
        sortLabel:
          type: string
        sortOrder:
          type: string
      required:
        - sortLabel
        - sortOrder
    PostStateType:
      type: string
      enum:
        - Active
        - Scheduled
        - Expired
        - Deleted
      description: Lifecycle states of a post.
    PostMetricType:
      type: string
      enum:
        - Posts
        - Clicks
        - Views
      description: Metric types for post location stats.
    PostSortOrderType:
      type: string
      enum:
        - Ascending
        - Descending
      description: Ascending or descending order.
    CTAType:
      type: string
      enum:
        - BOOK
        - ORDER
        - SHOP
        - LEARN_MORE
        - SIGN_UP
        - GET_OFFER
      description: Call-to-action button types.
    SitesType:
      type: string
      enum:
        - GOOGLE
        - FACEBOOK
      description: Sites a post can be published to.
    MediaTypeEnum:
      type: string
      enum:
        - IMAGE
        - VIDEO
      description: Media type for social posts.
    SocialPostTypeEnum:
      type: string
      enum:
        - EVENT
        - OFFER
        - ANNOUNCEMENT
        - COVID19
        - PRODUCT
      description: Social Post types.
    SocialPostStatusEnum:
      type: string
      enum:
        - INPROGRESS
        - SCHEDULED
        - SUCCESS
        - ERROR
        - DELETED
        - EXPIRED
      description: Social Post lifecycle statuses.
    PublishStatusEnum:
      type: string
      enum:
        - PUBLISHING
        - PUBLISHED
        - DELETED
        - EXPIRED
        - ERROR
      description: Publish statuses per site.
    SiteMetricType:
      type: string
      enum:
        - GOOGLE_CLICKS
        - GOOGLE_VIEWS
        - FACEBOOK_CLICKS
        - FACEBOOK_VIEWS
        - FACEBOOK_REACTIONS
        - FACEBOOK_SHARES
        - FACEBOOK_COMMENTS
        - TINYCC_FACEBOOK_CLICK
        - TINYCC_GMB_CLICKS
      description: Metric identifiers for daily flow insights.
    SocialPostSortableFieldsType:
      type: string
      enum:
        - name
        - type
        - status
        - created_at
        - schedule_start_date
        - schedule_end_date
        - client_name
        - clicks
        - views
        - shares
        - reactions
        - comments
      description: Sortable fields for social posts.
    Datetime:
      type: string
      description: Custom scalar Datetime
    InteractionInterface:
      type: object
      description: Shared fields between an interaction and a response to an interaction.
      properties:
        id:
          type: string
        interactionId:
          type: string
        source:
          type: string
        title:
          type: string
        content:
          type: string
        locationDbId:
          type: string
        locationEncodedId:
          type: string
        authorName:
          type: string
        authorAvatar:
          type: string
        authorUrl:
          type: string
        authorInfo:
          type: string
        accountId:
          type: string
        rating:
          type: integer
          format: int32
        date:
          type: string
        permalink:
          type: string
        category:
          type: string
        type:
          type: string
        photoUrl:
          type: string
        photoThumbnailUrl:
          type: string
        responded:
          type: boolean
        notes:
          type: string
        responses:
          type: array
          items:
            $ref: '#/components/schemas/InteractionResponse'
        responseCount:
          type: integer
          format: int32
        canRespond:
          type: boolean
        linkedAccountStatus:
          type: string
        email:
          type: string
        totalResponses:
          type: integer
          format: int32
        locationId:
          type: integer
          format: int32
        respondedWith:
          type: string
        respondedBy:
          type: integer
          format: int32
        flaggedReason:
          type: string
      discriminator:
        propertyName: type
    Interaction:
      type: object
      description: A single review, Q&A item, or social interaction collected from a source site.
      properties:
        id:
          type: string
        interactionId:
          type: string
        source:
          type: string
        title:
          type: string
        content:
          type: string
        authorName:
          type: string
        rating:
          type: integer
          format: int32
        date:
          type: string
        permalink:
          type: string
        category:
          type: string
        type:
          type: string
        responded:
          type: boolean
        notes:
          type: string
        responses:
          type: array
          items:
            $ref: '#/components/schemas/InteractionResponse'
        responseCount:
          type: integer
          format: int32
        canRespond:
          type: boolean
        locationId:
          type: integer
          format: int32
        flaggedReason:
          type: string
    InteractionResponse:
      type: object
      description: A response to an interaction (review reply, Q&A answer).
      properties:
        id:
          type: string
        interactionId:
          type: string
        content:
          type: string
        authorName:
          type: string
        date:
          type: string
        respondedWith:
          type: string
        respondedBy:
          type: integer
          format: int32
        interactionStatus:
          $ref: '#/components/schemas/InteractionResponseStatus'
        editedResponse:
          type: boolean
        remarks:
          type: string
    InteractionConnection:
      type: object
      description: Relay-style paginated list of interactions with aggregate stats.
      properties:
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
        edges:
          type: array
          items:
            $ref: '#/components/schemas/InteractionEdge'
        totalCount:
          type: integer
          format: int32
        interactionStats:
          $ref: '#/components/schemas/InteractionsCombinedStats'
      required:
        - pageInfo
    InteractionEdge:
      type: object
      properties:
        node:
          $ref: '#/components/schemas/Interaction'
        cursor:
          type: string
      required:
        - cursor
    InteractionsDetail:
      type: object
      properties:
        interactions:
          type: array
          items:
            $ref: '#/components/schemas/Interaction'
    InteractionStat:
      type: object
      properties:
        name:
          type: string
        value:
          type: number
          format: float
        delta:
          type: number
          format: float
        abs:
          type: number
          format: float
    LocationStat:
      type: object
      properties:
        locationId:
          type: string
        value:
          type: number
          format: float
        delta:
          type: number
          format: float
    InteractionsLocationsStat:
      type: object
      properties:
        stats:
          type: array
          items:
            $ref: '#/components/schemas/LocationStat'
    SiteInteractionCount:
      type: object
      properties:
        name:
          type: string
        interactionCount:
          type: integer
          format: int32
    InteractionsCombinedStats:
      type: object
      properties:
        sitesStats:
          type: array
          items:
            $ref: '#/components/schemas/SiteInteractionCount'
        otherStats:
          type: array
          items:
            $ref: '#/components/schemas/InteractionStat'
    InteractionsStats:
      type: object
      properties:
        stats:
          type: array
          items:
            $ref: '#/components/schemas/InteractionStat'
    BulkResponseInteractionData:
      type: object
      properties:
        name:
          type: string
        value:
          type: integer
          format: int32
    BulkResponseJobsData:
      type: object
      properties:
        jobId:
          type: string
        createdDate:
          type: string
        createdTime:
          type: string
        createdBy:
          type: integer
          format: int32
        responses:
          type: integer
          format: int32
        status:
          type: string
        failed:
          type: integer
          format: int32
        successful:
          type: integer
          format: int32
        skipped:
          type: integer
          format: int32
        responseContent:
          type: string
    BulkResponsesItems:
      type: object
      properties:
        responseItemId:
          type: string
        reviewId:
          type: string
        review:
          type: string
        source:
          type: string
        rating:
          type: number
          format: float
        location:
          type: string
        status:
          type: string
        failureReason:
          type: string
    NewReviewPhraseInfo:
      type: object
      properties:
        reviewPhrase:
          type: string
        phraseStats:
          $ref: '#/components/schemas/InteractionsStats'
    SiteSetting:
      type: object
      properties:
        name:
          type: string
        url:
          type: string
        connected:
          type: boolean
    ReviewWidget:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        widgetType:
          type: string
        reviewCount:
          type: integer
          format: int32
        minimumRating:
          type: integer
          format: int32
        widgetHeight:
          type: string
        widgetWidth:
          type: string
        sites:
          type: array
          items:
            type: string
        readOnly:
          type: boolean
        locationId:
          type: string
        archived:
          type: boolean
        updatedAt:
          type: string
        createdAt:
          type: string
    LocationReviewWidgets:
      type: object
      properties:
        widgets:
          type: array
          items:
            $ref: '#/components/schemas/ReviewWidget'
    InteractionsSetting:
      type: object
      properties:
        id:
          type: string
        positiveInteractionThreshold:
          type: integer
          format: int32
        siteSettings:
          type: array
          items:
            $ref: '#/components/schemas/SiteSetting'
        locationId:
          type: string
    InteractionsAnalyticsStats:
      type: object
      properties:
        stats:
          type: array
          items:
            $ref: '#/components/schemas/InteractionStat'
    ChartData:
      type: object
      properties:
        date:
          type: string
          format: date
        interactionCount:
          type: integer
          format: int32
        averageRating:
          type: number
          format: float
    InteractionsChartData:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ChartData'
    DeltaStat:
      type: object
      properties:
        value:
          type: number
          format: float
        delta:
          type: number
          format: float
    SiteStat:
      type: object
      properties:
        key:
          type: string
        siteUrl:
          type: string
        averageRating:
          $ref: '#/components/schemas/DeltaStat'
        totalInteractions:
          $ref: '#/components/schemas/DeltaStat'
        newInteractions:
          $ref: '#/components/schemas/DeltaStat'
        baseRating:
          type: number
          format: float
        baseInteractions:
          type: integer
          format: int32
        recency:
          type: string
        humanizedRecency:
          type: string
    RollupSiteStat:
      type: object
      properties:
        key:
          type: string
        siteUrl:
          type: string
        averageRating:
          $ref: '#/components/schemas/DeltaStat'
        totalInteractions:
          $ref: '#/components/schemas/DeltaStat'
        newInteractions:
          $ref: '#/components/schemas/DeltaStat'
        baseRating:
          type: number
          format: float
        baseInteractions:
          type: integer
          format: int32
        responseRate:
          $ref: '#/components/schemas/DeltaStat'
    InteractionsSitesStats:
      type: object
      properties:
        stats:
          type: array
          items:
            $ref: '#/components/schemas/SiteStat'
    InteractionsRollupSitesStats:
      type: object
      properties:
        stats:
          type: array
          items:
            $ref: '#/components/schemas/RollupSiteStat'
    ContextInfoType:
      type: object
      description: (also defined by packaging) (also defined by task-manager)
      properties:
        key:
          type: string
        value:
          type: string
    ErrorType:
      type: object
      description: >-
        (also defined by contests) (also defined by packaging) (also defined by task-manager) (also defined by
        social-media) (also defined by messenger) (also defined by crm-integration) (also defined by crawler) (also
        defined by media-manager)
      properties:
        message:
          type: string
        contextInfo:
          type: array
          items:
            $ref: '#/components/schemas/ContextInfoType'
        code:
          type: string
    ShouldDisplayBanner:
      type: object
      properties:
        status:
          type: string
        count:
          type: integer
          format: int32
        error:
          type: string
    InteractionSiteConfig:
      type: object
      properties:
        id:
          type: integer
          format: int32
        site:
          type: string
        color:
          type: string
        opacity:
          type: number
          format: float
        siteUrl:
          type: string
        image:
          type: string
        baseUrl:
          type: string
        supportedInPlan:
          type: boolean
    ResponseTemplate:
      type: object
      properties:
        id:
          type: string
        userId:
          type: integer
          format: int32
        name:
          type: string
        globalTemplate:
          type: boolean
        accountId:
          type: integer
          format: int32
        content:
          type: string
        locationIds:
          type: array
          items:
            type: string
        siteUrls:
          type: array
          items:
            type: string
        ratings:
          type: array
          items:
            type: integer
            format: int32
        archived:
          type: boolean
        updatedAt:
          type: string
        createdAt:
          type: string
    ResponseTemplateConnection:
      type: object
      properties:
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
        edges:
          type: array
          items:
            $ref: '#/components/schemas/ResponseTemplateEdge'
        count:
          type: integer
          format: int32
      required:
        - pageInfo
    ResponseTemplateEdge:
      type: object
      properties:
        node:
          $ref: '#/components/schemas/ResponseTemplate'
        cursor:
          type: string
      required:
        - cursor
    InteractionUserConfig:
      type: object
      properties:
        id:
          type: string
        userId:
          type: integer
          format: int32
        shownDemo:
          type: boolean
        wildcardsEnabled:
          type: boolean
        templatesEnabled:
          type: boolean
        updatedAt:
          type: string
        createdAt:
          type: string
    LocationsDetail:
      type: object
      properties:
        locationIds:
          type: array
          items:
            type: string
    TrustpilotRedirectionUrl:
      type: object
      properties:
        redirectUrl:
          type: string
    InteractionConnectedAccountInfo:
      type: object
      properties:
        connected:
          type: boolean
        reconnectRequired:
          type: boolean
    ReviewGenerationUrl:
      type: object
      properties:
        reviewUrl:
          type: string
    ReviewGenerationSource:
      type: object
      properties:
        exists:
          type: boolean
        sources:
          type: array
          items:
            type: string
        redirectUrl:
          type: string
        locationId:
          type: string
        tags:
          type: array
          items:
            type: string
    ReviewStatusResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ReviewStatusEnum'
        locationId:
          type: integer
          format: int32
    RespondToInteractionPayload:
      type: object
      properties:
        interaction:
          $ref: '#/components/schemas/InteractionResponse'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    EditResponsePayload:
      type: object
      properties:
        status:
          type: string
        reviewId:
          type: string
        responseId:
          type: string
    SendBulkResponsesPayload:
      type: object
      properties:
        status:
          type: string
    AddNoteToInteractionPayload:
      type: object
      properties:
        interaction:
          $ref: '#/components/schemas/Interaction'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    RemoveInteractionNotePayload:
      type: object
      properties:
        interaction:
          $ref: '#/components/schemas/Interaction'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    EditInteractionsSettingPayload:
      type: object
      properties:
        interactionSetting:
          $ref: '#/components/schemas/InteractionsSetting'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    AddReviewWidgetPayload:
      type: object
      properties:
        widget:
          $ref: '#/components/schemas/ReviewWidget'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    EditReviewWidgetPayload:
      type: object
      properties:
        widget:
          $ref: '#/components/schemas/ReviewWidget'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    RemoveReviewWidgetPayload:
      type: object
      properties:
        widget:
          $ref: '#/components/schemas/ReviewWidget'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    AddResponseTemplatePayload:
      type: object
      properties:
        template:
          $ref: '#/components/schemas/ResponseTemplate'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    UpdateResponseTemplatePayload:
      type: object
      properties:
        template:
          $ref: '#/components/schemas/ResponseTemplate'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    RemoveResponseTemplatePayload:
      type: object
      properties:
        template:
          $ref: '#/components/schemas/ResponseTemplate'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    UpdateInteractionUserConfigPayload:
      type: object
      properties:
        config:
          $ref: '#/components/schemas/InteractionUserConfig'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    AddQuestionPayload:
      type: object
      properties:
        interaction:
          $ref: '#/components/schemas/Interaction'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    AddAnswerPayload:
      type: object
      properties:
        interaction:
          $ref: '#/components/schemas/InteractionResponse'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    ArchiveInteractionPayload:
      type: object
      properties:
        status:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    ConnectTrustpilotPayload:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    DisconnectSitePayload:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    CacheLocationIdsOfAccountPayload:
      type: object
      properties:
        locationIds:
          type: array
          items:
            type: string
    FlagInteractionsPayload:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    SiteSettingInputType:
      type: object
      description: Input payload representing a single connected site entry on interactions settings.
      properties:
        name:
          type: string
        url:
          type: string
    LocationFilterConditions:
      type: object
      description: Filter condition applied to rollup queries, e.g. filter by tag, by field match, etc.
      properties:
        key:
          type: string
        operator:
          $ref: '#/components/schemas/LocationFilterEnum'
        values:
          type: array
          items:
            type: string
    InteractionResponseStatus:
      type: string
      enum:
        - CREATED
        - FAILED
        - COMPLETED
        - CONFIRMED
      description: Lifecycle state of a response item as it's posted out to the source site.
    ResponseStatusEnum:
      type: string
      enum:
        - RESPONDED
        - PENDING
      description: Filter for whether an interaction has been responded to.
    SortOrderEnum:
      type: string
      enum:
        - NEWEST_FIRST
        - OLDEST_FIRST
        - LAST_RESPONDED
        - LOWEST_RATING
        - HIGHEST_RATING
      description: Sort order for the interactions list.
    InteractionCategoryEnum:
      type: string
      enum:
        - REVIEW
        - SOCIAL
        - RECOMMENDATION
      description: High-level category an interaction belongs to.
    WidgetTypesEnum:
      type: string
      enum:
        - small
        - medium
        - large
        - medium_slider
        - large_slider
      description: Supported review-widget layout variants.
    LocationFilterEnum:
      type: string
      enum:
        - MATCH
        - NOMATCH
        - EQUAL
        - NOTEQUAL
      description: Comparison operators supported in LocationFilterConditions.
    FlaggedReasonEnum:
      type: string
      enum:
        - OFF_TOPIC
        - SPAM
        - CONFLICT_OF_INTEREST
        - PROFANITY
        - BULLYING_OR_HARASSMENT
        - DISCRIMINATION_OR_HATE_SPEECH
        - PERSONAL_INFORMATION
        - NOT_HELPFUL
      description: Supported moderation reason codes used by flagInteractions.
    ReviewStatusEnum:
      type: string
      enum:
        - PENDING
        - NOT_PENDING
      description: Status of a review fetched via the post-connect polling endpoint.
    FacebookMetricV4:
      type: object
      description: Facebook metrics with views and action breakdowns.
      properties:
        views:
          $ref: '#/components/schemas/MetricDelta'
        ctaAction:
          $ref: '#/components/schemas/MetricDelta'
        websiteAction:
          $ref: '#/components/schemas/MetricDelta'
        directionsAction:
          $ref: '#/components/schemas/MetricDelta'
        phoneAction:
          $ref: '#/components/schemas/MetricDelta'
    GoogleMetricV4:
      type: object
      description: Google My Business metrics including maps, search and actions.
      properties:
        total:
          $ref: '#/components/schemas/MetricDelta'
        maps:
          $ref: '#/components/schemas/MetricDelta'
        search:
          $ref: '#/components/schemas/MetricDelta'
        websiteAction:
          $ref: '#/components/schemas/MetricDelta'
        directionsAction:
          $ref: '#/components/schemas/MetricDelta'
        phoneAction:
          $ref: '#/components/schemas/MetricDelta'
        directSearch:
          $ref: '#/components/schemas/MetricDelta'
        indirectSearch:
          $ref: '#/components/schemas/MetricDelta'
        bookings:
          $ref: '#/components/schemas/MetricDelta'
        foodOrders:
          $ref: '#/components/schemas/MetricDelta'
        foodMenuClicks:
          $ref: '#/components/schemas/MetricDelta'
    BingMetricV4:
      type: object
      description: Bing Places metrics.
      properties:
        views:
          $ref: '#/components/schemas/MetricDelta'
    YelpMetricV4:
      type: object
      description: Yelp metrics.
      properties:
        views:
          $ref: '#/components/schemas/MetricDelta'
        ctaAction:
          $ref: '#/components/schemas/MetricDelta'
        websiteAction:
          $ref: '#/components/schemas/MetricDelta'
        directionsAction:
          $ref: '#/components/schemas/MetricDelta'
        phoneAction:
          $ref: '#/components/schemas/MetricDelta'
    MetricDelta:
      type: object
      description: Metric value with optional previous-period comparison.
      properties:
        current:
          type: integer
          format: int32
        previous:
          type: integer
          format: int32
        diff:
          type: integer
          format: int32
        diffPercentage:
          type: number
          format: float
        label:
          type: string
    InsightsForEmail:
      type: object
      description: Email-friendly summary of a single provider's metrics.
      properties:
        current:
          type: integer
          format: int32
        diff:
          type: integer
          format: int32
        label:
          type: string
        source:
          type: string
    RollupReport:
      type: object
      description: Rollup metrics across a tagged set of locations.
      properties:
        views:
          $ref: '#/components/schemas/MetricDelta'
        ctaAction:
          $ref: '#/components/schemas/MetricDelta'
        websiteAction:
          $ref: '#/components/schemas/MetricDelta'
        directionsAction:
          $ref: '#/components/schemas/MetricDelta'
        phoneAction:
          $ref: '#/components/schemas/MetricDelta'
    PeriodicRollupReport:
      type: object
      description: Rollup report grouped by period (daily/weekly/monthly).
      properties:
        groupBy:
          $ref: '#/components/schemas/GroupByEnum'
        source:
          $ref: '#/components/schemas/RollupInsightsSite'
        totals:
          $ref: '#/components/schemas/MetricKey'
        series:
          type: array
          items:
            $ref: '#/components/schemas/PeriodicRollupDetails'
    PeriodicRollupDetails:
      type: object
      properties:
        date:
          type: string
        metrics:
          $ref: '#/components/schemas/MetricKey'
    PeriodicRollupLocationDetails:
      type: object
      properties:
        locationId:
          type: string
        locationName:
          type: string
        storeId:
          type: string
        value:
          type: integer
          format: int32
        previousValue:
          type: integer
          format: int32
        changePercentage:
          type: number
          format: float
    MetricKey:
      type: object
      description: Flat per-provider metric totals.
      properties:
        googleViews:
          type: integer
          format: int32
        googleMapViews:
          type: integer
          format: int32
        googleSearchViews:
          type: integer
          format: int32
        googleWebsiteActions:
          type: integer
          format: int32
        googleDirectionActions:
          type: integer
          format: int32
        googlePhoneActions:
          type: integer
          format: int32
        facebookViews:
          type: integer
          format: int32
        facebookWebsiteActions:
          type: integer
          format: int32
        facebookDirectionActions:
          type: integer
          format: int32
        facebookPhoneActions:
          type: integer
          format: int32
        facebookCtaActions:
          type: integer
          format: int32
        bingViews:
          type: integer
          format: int32
    GooglePdfReport:
      type: object
      properties:
        total:
          type: integer
          format: int32
        maps:
          type: integer
          format: int32
        search:
          type: integer
          format: int32
        websiteAction:
          type: integer
          format: int32
        directionsAction:
          type: integer
          format: int32
        phoneAction:
          type: integer
          format: int32
    FacebookPdfReport:
      type: object
      properties:
        views:
          type: integer
          format: int32
        ctaAction:
          type: integer
          format: int32
        websiteAction:
          type: integer
          format: int32
        directionsAction:
          type: integer
          format: int32
        phoneAction:
          type: integer
          format: int32
    BingPdfReport:
      type: object
      properties:
        views:
          type: integer
          format: int32
    ConsolidatedPdfReport:
      type: object
      properties:
        websiteAction:
          type: integer
          format: int32
        directionsAction:
          type: integer
          format: int32
        phoneAction:
          type: integer
          format: int32
        google:
          $ref: '#/components/schemas/GooglePdfReport'
        facebook:
          $ref: '#/components/schemas/FacebookPdfReport'
    FlowsStats:
      type: object
      description: Flow impact comparison between the current and previous windows.
      properties:
        google:
          $ref: '#/components/schemas/MetricDelta'
        facebook:
          $ref: '#/components/schemas/MetricDelta'
        bing:
          $ref: '#/components/schemas/MetricDelta'
        yelp:
          $ref: '#/components/schemas/MetricDelta'
    ConnectionInfo:
      type: object
      description: Indicates which providers are connected for the queried scope.
      properties:
        providers:
          type: array
          items:
            type: string
    RollupDetails:
      type: object
      description: Paged location-level rollup result with totals.
      properties:
        totals:
          $ref: '#/components/schemas/MetricKey'
        rollupDetailsRecord:
          type: array
          items:
            $ref: '#/components/schemas/RollupDetailsRecord'
        pageInfo:
          $ref: '#/components/schemas/RollupDetailsPageInfo'
    RollupDetailsRecord:
      type: object
      properties:
        locationId:
          type: string
        storeId:
          type: string
        name:
          type: string
        street:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
        total:
          type: integer
          format: int32
        google:
          type: integer
          format: int32
        facebook:
          type: integer
          format: int32
        bing:
          type: integer
          format: int32
        yelp:
          type: integer
          format: int32
        revenue:
          type: number
          format: float
    RollupDetailsPageInfo:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        hasNextPage:
          type: boolean
        hasPreviousPage:
          type: boolean
    CsvDetails:
      type: object
      properties:
        csvUrl:
          type: string
    RoiMetric:
      type: object
      description: Map entry between a metric name and its ROI value.
      properties:
        metricName:
          $ref: '#/components/schemas/InsightsMetric'
        roiValue:
          type: number
          format: float
    MapRoiToMetricResult:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        roiMetrics:
          type: array
          items:
            $ref: '#/components/schemas/RoiMetric'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
    LocationRevenueMetricResult:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
    InsightsConditionsSet:
      type: object
      description: Filter clause used across rollup queries.
      properties:
        key:
          type: string
        values:
          type: array
          items:
            type: string
        operator:
          $ref: '#/components/schemas/ConditionsSetOperator'
    LocationLevelFilter:
      type: object
      properties:
        filters:
          type: array
          items:
            $ref: '#/components/schemas/InsightsConditionsSet'
        operator:
          $ref: '#/components/schemas/ConditionsSetOperator'
    InsightsRollupSort:
      type: object
      properties:
        field:
          type: string
        order:
          $ref: '#/components/schemas/InsightsRollupSortOrder'
    InsightsRollupPagination:
      type: object
      properties:
        first:
          type: integer
          format: int32
        after:
          type: integer
          format: int32
    RoiMetricInput:
      type: object
      properties:
        metricName:
          $ref: '#/components/schemas/InsightsMetric'
        roiValue:
          type: number
          format: float
      required:
        - metricName
        - roiValue
    LocationRevenueMetricInput:
      type: object
      properties:
        metricName:
          type: string
        value:
          type: number
          format: float
        locationId:
          type: string
        email:
          type: string
        timestamp:
          type: string
      required:
        - value
        - locationId
        - email
        - timestamp
    InsightsSite:
      type: string
      enum:
        - GOOGLE
        - BING
        - FACEBOOK
        - YELP
      description: Insight provider site for rollup queries.
    RollupInsightsSite:
      type: string
      enum:
        - GOOGLE
        - BING
        - FACEBOOK
        - YELP
    InsightsMetric:
      type: string
      enum:
        - VIEWS
        - DIRECTIONS
        - WEBSITES
        - CALLS
        - BUTTONCLICK
        - DIRECT_SEARCH
        - INDIRECT_SEARCH
      description: Metric name for rollup details drill-in.
    GroupByEnum:
      type: string
      enum:
        - DAILY
        - WEEKLY
        - MONTHLY
    InsightsRollupKpi:
      type: string
      enum:
        - PROFILE_VIEWS
        - WEBSITE_VISITS
        - PHONE_CALLS
        - DIRECTION_REQUESTS
        - BUTTON_CLICKS
        - DIRECT_SEARCH
        - INDIRECT_SEARCH
        - ALL_ACTIONS
        - BOOKINGS
        - FOOD_ORDERS
        - FOOD_MENU_CLICKS
    InsightsRollupGroupBy:
      type: string
      enum:
        - DAILY
        - WEEKLY
        - MONTHLY
    InsightsRollupSource:
      type: string
      enum:
        - ALL
        - GOOGLE
        - FACEBOOK
        - BING
        - YELP
    InsightsRollupSortOrder:
      type: string
      enum:
        - ASC
        - DESC
    ConditionsSetOperator:
      type: string
      enum:
        - EQUAL
        - NOTEQUAL
        - MATCH
        - NOTMATCH
    User:
      type: object
      description: A user in the Synup account.
      properties:
        id:
          type: string
        databaseId:
          type: integer
          format: int32
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        role:
          $ref: '#/components/schemas/AccountRole'
        inviteStatus:
          $ref: '#/components/schemas/InviteStatus'
        locale:
          $ref: '#/components/schemas/LocaleType'
        createdAt:
          type: string
      required:
        - id
        - email
    UserConnection:
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/User'
        edges:
          type: array
          items:
            $ref: '#/components/schemas/UserEdge'
        totalCount:
          type: integer
          format: int32
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
    UserEdge:
      type: object
      properties:
        cursor:
          type: string
        node:
          $ref: '#/components/schemas/User'
    UserProfile:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        phone:
          type: string
        preferences:
          $ref: '#/components/schemas/UserPreferences'
      required:
        - id
    UserPreferences:
      type: object
      properties:
        locale:
          $ref: '#/components/schemas/LocaleType'
        timezone:
          type: string
        notifications:
          type: array
          items:
            type: string
    ValidUsers:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        users:
          type: array
          items:
            $ref: '#/components/schemas/User'
      required:
        - totalCount
    AccountInfo:
      type: object
      properties:
        id:
          type: string
        databaseId:
          type: integer
          format: int32
        companyName:
          type: string
        status:
          $ref: '#/components/schemas/AccountStatus'
        accountType:
          $ref: '#/components/schemas/AccountType'
        subdomain:
          type: string
        timezone:
          $ref: '#/components/schemas/AccountTimezone'
        plan:
          $ref: '#/components/schemas/AccountPlan'
      required:
        - id
    AccountPlan:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    AccountTimezone:
      type: object
      properties:
        name:
          type: string
        offset:
          type: string
    AccountRole:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        userType:
          $ref: '#/components/schemas/UserType'
      required:
        - id
    CustomRole:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        archived:
          type: boolean
      required:
        - id
    CustomRoleDetail:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/FeatureSubfeature'
      required:
        - id
    AccountResellers:
      type: object
      properties:
        resellers:
          type: array
          items:
            $ref: '#/components/schemas/Reseller'
    Reseller:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        email:
          type: string
      required:
        - id
    Team:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        members:
          type: array
          items:
            $ref: '#/components/schemas/User'
      required:
        - id
    WebhooksUrl:
      type: object
      properties:
        url:
          type: string
    ApiKey:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        key:
          type: string
        createdAt:
          type: string
      required:
        - id
    ScantoolSetting:
      type: object
      properties:
        id:
          type: string
        businessName:
          type: string
        businessLogo:
          type: string
      required:
        - id
    DashboardSetting:
      type: object
      properties:
        id:
          type: string
        config:
          type: string
      required:
        - id
    ProductSettings:
      type: object
      properties:
        id:
          type: string
        settings:
          type: string
      required:
        - id
    UserBulkUploadTask:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        totalRows:
          type: integer
          format: int32
        processedRows:
          type: integer
          format: int32
      required:
        - id
    UploadProgressStatus:
      type: object
      properties:
        taskId:
          type: string
        status:
          type: string
        percent:
          type: number
          format: float
    UMFeature:
      type: object
      description: Nested feature permissions tree.
      properties:
        features:
          type: array
          items:
            $ref: '#/components/schemas/FeatureSubfeature'
    FeatureSubfeature:
      type: object
      properties:
        name:
          type: string
        enabled:
          type: boolean
        subfeatures:
          type: array
          items:
            $ref: '#/components/schemas/FeatureSubfeature'
    PermissionAccessor:
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/User'
    SamlSetting:
      type: object
      properties:
        id:
          type: string
        enabled:
          type: boolean
        idpUrl:
          type: string
    SamlTestResult:
      type: object
      properties:
        success:
          type: boolean
        errorMessage:
          type: string
    SetupPasswordStatus:
      type: object
      properties:
        valid:
          type: boolean
        email:
          type: string
    LocationConnectionInfo:
      type: object
      properties:
        locationId:
          type: string
        connectedAccounts:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedAccountInfo'
    LocationConnectedAccount:
      type: object
      properties:
        locationId:
          type: string
        type:
          type: string
        connectedAccount:
          $ref: '#/components/schemas/ConnectedAccountInfo'
    ConnectedAccountInfo:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
        type:
          $ref: '#/components/schemas/ConnectedSite'
        status:
          $ref: '#/components/schemas/ConnectedAccountStatus'
      required:
        - id
    UserConnectionUrl:
      type: object
      properties:
        url:
          type: string
      required:
        - url
    ConnectUrl:
      type: object
      properties:
        url:
          type: string
      required:
        - url
    ConnectedAccountsPaginated:
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedAccountInfo'
        totalCount:
          type: integer
          format: int32
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
    ConnectedAccountDetails:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
        type:
          $ref: '#/components/schemas/ConnectedSite'
        listings:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedAccountListing'
      required:
        - id
    ConnectedAccountListingsPaginated:
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedAccountListing'
        totalCount:
          type: integer
          format: int32
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
    ConnectedAccountListing:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        address:
          type: string
        status:
          $ref: '#/components/schemas/ConnectedAccountLocationStatus'
      required:
        - id
    ConnectedAccountsForAccount:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ConnectedSite'
        count:
          type: integer
          format: int32
    BulkConnectionInfo:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        items:
          type: array
          items:
            $ref: '#/components/schemas/BulkConnectionItemInfo'
    BulkConnectionItemInfo:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        status:
          $ref: '#/components/schemas/ConnectionInfoStatus'
    ConnectionSuggestionsForAccount:
      type: object
      properties:
        suggestions:
          type: array
          items:
            $ref: '#/components/schemas/ConnectionSuggestion'
        totalCount:
          type: integer
          format: int32
    ConnectionSuggestion:
      type: object
      properties:
        id:
          type: string
        location:
          $ref: '#/components/schemas/ConnectionSuggestionLocationInfo'
        listing:
          $ref: '#/components/schemas/ConnectedAccountListing'
      required:
        - id
    ConnectionSuggestionLocationInfo:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    GmbSearchResult:
      type: object
      properties:
        name:
          type: string
        address:
          type: string
        gmbLocationName:
          type: string
    FbSearchResult:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    ManualConnect:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        locations:
          type: array
          items:
            $ref: '#/components/schemas/ManualLocations'
    ManualLocations:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    LocationsConnectInfoPaginated:
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/LocationConnectInfo'
        totalCount:
          type: integer
          format: int32
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
    LocationConnectInfo:
      type: object
      properties:
        locationId:
          type: string
        name:
          type: string
        sites:
          type: array
          items:
            $ref: '#/components/schemas/SiteConnectionInfo'
    SiteConnectionInfo:
      type: object
      properties:
        site:
          $ref: '#/components/schemas/ConnectionSite'
        status:
          $ref: '#/components/schemas/ConnectionInfoStatus'
    LocationStats:
      type: object
      properties:
        totalLocations:
          type: integer
          format: int32
        connectedLocations:
          type: integer
          format: int32
    LocationGmbComparison:
      type: object
      properties:
        locationData:
          type: string
        gmbData:
          type: string
        notMatchedFields:
          type: array
          items:
            type: string
    SiteCategory:
      type: object
      properties:
        categories:
          type: array
          items:
            $ref: '#/components/schemas/SiteCategoryCountry'
    SiteCategoryCountry:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        countries:
          type: array
          items:
            type: string
    GmbAccount:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        locations:
          type: array
          items:
            $ref: '#/components/schemas/GmbLocation'
    GmbLocation:
      type: object
      properties:
        gmbLocationName:
          type: string
        title:
          type: string
    GmbFolder:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    GmbLocationDetails:
      type: object
      properties:
        gmbLocationName:
          type: string
        title:
          type: string
        address:
          $ref: '#/components/schemas/GmbLocAddress'
    GmbLocAddress:
      type: object
      properties:
        addressLines:
          type: array
          items:
            type: string
        locality:
          type: string
        regionCode:
          type: string
    OnboardingGoogleLocation:
      type: object
      properties:
        gmbLocationName:
          type: string
        title:
          type: string
    GoogleLocationsImport:
      type: object
      properties:
        status:
          type: string
        imported:
          type: integer
          format: int32
        total:
          type: integer
          format: int32
    Plan:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        price:
          type: number
          format: float
        period:
          $ref: '#/components/schemas/PaymentTerm'
      required:
        - id
    PlanFeature:
      type: object
      properties:
        planId:
          type: string
        subfeatures:
          type: array
          items:
            type: string
    PlanSite:
      type: object
      properties:
        site:
          type: string
        enabled:
          type: boolean
    CustomPlan:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        siteIds:
          type: array
          items:
            type: integer
            format: int32
      required:
        - id
        - name
        - siteIds
    CustomPlanResult:
      type: object
      properties:
        customPlanId:
          type: integer
          format: int32
        name:
          type: string
        siteIds:
          type: array
          items:
            type: integer
            format: int32
        errors:
          type: array
          items:
            type: string
    CreateCustomPlanInput:
      type: object
      properties:
        name:
          type: string
        siteIds:
          type: array
          items:
            type: integer
            format: int32
        clientMutationId:
          type: string
      required:
        - name
        - siteIds
    PlanAccounts:
      type: object
      properties:
        planId:
          type: string
        accountIds:
          type: array
          items:
            type: string
    SocialPlan:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        price:
          type: number
          format: float
    SubfeatureQuota:
      type: object
      properties:
        subfeature:
          $ref: '#/components/schemas/MeteredSubfeature'
        limit:
          type: integer
          format: int32
        used:
          type: integer
          format: int32
    ReviewSite:
      type: object
      properties:
        name:
          type: string
        enabled:
          type: boolean
    ActiveSubscription:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        plan:
          $ref: '#/components/schemas/Plan'
      required:
        - id
    Subscription:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        currentPeriodEnd:
          type: string
      required:
        - id
    SubscriptionEstimateResult:
      type: object
      properties:
        estimate:
          $ref: '#/components/schemas/SubscriptionEstimate'
        error:
          $ref: '#/components/schemas/BillingError'
    SubscriptionEstimate:
      type: object
      properties:
        amount:
          type: number
          format: float
        currency:
          type: string
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/LineItem'
    LineItem:
      type: object
      properties:
        description:
          type: string
        amount:
          type: number
          format: float
    BillingHistoryConnection:
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/BillingHistoryNode'
        totalCount:
          type: integer
          format: int32
    BillingHistoryNode:
      type: object
      properties:
        id:
          type: string
        amount:
          type: number
          format: float
        status:
          $ref: '#/components/schemas/PayStatus'
        date:
          type: string
      required:
        - id
    AddOnInfo:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        price:
          type: number
          format: float
    CardDetails:
      type: object
      properties:
        last4:
          type: string
        brand:
          type: string
        expiryMonth:
          type: integer
          format: int32
        expiryYear:
          type: integer
          format: int32
    AchResult:
      type: object
      properties:
        achDetails:
          $ref: '#/components/schemas/AchDetails'
        error:
          $ref: '#/components/schemas/BillingError'
    AchDetails:
      type: object
      properties:
        accountLast4:
          type: string
        bankName:
          type: string
    CouponDetails:
      type: object
      properties:
        code:
          type: string
        discount:
          type: number
          format: float
        valid:
          type: boolean
    RampUp:
      type: object
      properties:
        id:
          type: string
        steps:
          type: array
          items:
            type: string
    PlanUpgradeEstimateResult:
      type: object
      properties:
        estimate:
          $ref: '#/components/schemas/PlanUpgradeEstimate'
        error:
          $ref: '#/components/schemas/BillingError'
    PlanUpgradeEstimate:
      type: object
      properties:
        proratedAmount:
          type: number
          format: float
        nextBillingAmount:
          type: number
          format: float
    BillingError:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    HostedPageInfo:
      type: object
      properties:
        url:
          type: string
        expiresAt:
          type: string
      required:
        - url
    ChargebeePaymentUrl:
      type: object
      properties:
        url:
          type: string
        needsCard:
          type: boolean
    AppleCompanyId:
      type: object
      properties:
        companyId:
          type: string
    UserVerification:
      type: object
      properties:
        verified:
          type: boolean
        email:
          type: string
    Cancellation:
      type: object
      properties:
        id:
          type: string
        reason:
          type: string
        createdAt:
          type: string
    CancellationReason:
      type: object
      properties:
        id:
          type: string
        label:
          type: string
    MailLocationConnectionsCsv:
      type: object
      properties:
        csvUrl:
          type: string
    LatestLocationMailResult:
      type: object
      properties:
        mail:
          $ref: '#/components/schemas/LocationMail'
    LocationMail:
      type: object
      properties:
        id:
          type: string
        subject:
          type: string
        body:
          type: string
        receivedAt:
          type: string
    GooglePlaceDetails:
      type: object
      properties:
        placeId:
          type: string
        name:
          type: string
        address:
          type: string
    GooglePlaceSearchResult:
      type: object
      properties:
        placeId:
          type: string
        name:
          type: string
    GooglePlaceAutocompleteResult:
      type: object
      properties:
        description:
          type: string
        placeId:
          type: string
    GooglePlaceTimezone:
      type: object
      properties:
        timezoneId:
          type: string
        offset:
          type: integer
          format: int32
    Country:
      type: object
      properties:
        iso:
          type: string
        name:
          type: string
        states:
          type: array
          items:
            $ref: '#/components/schemas/State'
      required:
        - iso
    State:
      type: object
      properties:
        iso:
          type: string
        name:
          type: string
    Industry:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        subIndustries:
          type: array
          items:
            type: string
    Navigation:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/SidebarNavigationItem'
    SidebarNavigationItem:
      type: object
      properties:
        id:
          type: string
        label:
          type: string
        path:
          type: string
        children:
          type: array
          items:
            $ref: '#/components/schemas/SidebarNavigationItem'
    OsFeatureMetering:
      type: object
      properties:
        features:
          type: array
          items:
            $ref: '#/components/schemas/MeterType'
    MeterType:
      type: object
      properties:
        feature:
          $ref: '#/components/schemas/MeteredSubfeature'
        limit:
          type: integer
          format: int32
        used:
          type: integer
          format: int32
    UserWorkspace:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        subdomain:
          type: string
    IframeConfig:
      type: object
      properties:
        whitelistedIps:
          type: array
          items:
            type: string
    SovPerformanceOverTime:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/SovPerformanceValue'
    SovPerformanceValue:
      type: object
      properties:
        date:
          type: string
        sov:
          type: number
          format: float
        indexing:
          type: number
          format: float
    LocationIndexingRate:
      type: object
      properties:
        locationId:
          type: string
        rate:
          type: number
          format: float
    BulkUploadSubAccount:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
        companyName:
          type: string
        status:
          type: string
    CjResponse:
      type: object
      properties:
        accountId:
          type: string
        url:
          type: string
    Translation:
      type: object
      properties:
        component:
          type: string
        locale:
          type: string
        translations:
          type: string
    OnboardingUser:
      type: object
      properties:
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
    ConnectedAccountForOnboarding:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
        lastFetchedAt:
          type: string
    UpgradeSubscriptionSelection:
      type: object
      properties:
        selection:
          type: string
    PlatformOnboardingDetails:
      type: object
      properties:
        step:
          type: string
        completed:
          type: boolean
    PlatformOnboardingData:
      type: object
      properties:
        step:
          type: string
        data:
          type: string
    ClientOnboardingData:
      type: object
      properties:
        step:
          type: string
        completed:
          type: boolean
    BrandingDetails:
      type: object
      properties:
        logoUrl:
          type: string
        primaryColor:
          type: string
    FbConfirmedMatches:
      type: object
      properties:
        matches:
          type: array
          items:
            $ref: '#/components/schemas/FbMatches'
    ConfirmedMatches:
      type: object
      properties:
        matches:
          type: array
          items:
            $ref: '#/components/schemas/Matches'
    Matches:
      type: object
      properties:
        id:
          type: string
        locationId:
          type: string
        listingId:
          type: string
    FbMatches:
      type: object
      properties:
        id:
          type: string
        locationId:
          type: string
        listingId:
          type: string
    AddUserResult:
      type: object
      properties:
        clientMutationId:
          type: string
        user:
          $ref: '#/components/schemas/User'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
    AddUserAndFolderResult:
      type: object
      properties:
        clientMutationId:
          type: string
        user:
          $ref: '#/components/schemas/User'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
    UserMutationResult:
      type: object
      properties:
        clientMutationId:
          type: string
        user:
          $ref: '#/components/schemas/User'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
    AddUserNLocationsResult:
      type: object
      properties:
        clientMutationId:
          type: string
        successCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
    ArchiveUserNLocationsResult:
      type: object
      properties:
        clientMutationId:
          type: string
        archivedCount:
          type: integer
          format: int32
    BulkAddUsersMutationResult:
      type: object
      properties:
        clientMutationId:
          type: string
        added:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
    BulkUserActionResult:
      type: object
      properties:
        clientMutationId:
          type: string
        affected:
          type: integer
          format: int32
    BulkChangeRoleResult:
      type: object
      properties:
        clientMutationId:
          type: string
        affected:
          type: integer
          format: int32
    BulkUploadUsersResult:
      type: object
      properties:
        clientMutationId:
          type: string
        taskId:
          type: string
    MutationResult:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationError'
    AuthenticateUser:
      type: object
      properties:
        token:
          type: string
        user:
          $ref: '#/components/schemas/User'
    AssumeUserIdentityResult:
      type: object
      properties:
        token:
          type: string
    UpgradeFreemiumUserResult:
      type: object
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
    UpdateAccountResult:
      type: object
      properties:
        clientMutationId:
          type: string
        account:
          $ref: '#/components/schemas/AccountInfo'
    UpdateSamlSettingResult:
      type: object
      properties:
        samlSetting:
          $ref: '#/components/schemas/SamlSetting'
    GenerateSamlTestUrlResult:
      type: object
      properties:
        url:
          type: string
    CreateTeamResult:
      type: object
      properties:
        team:
          $ref: '#/components/schemas/Team'
    AddMembersToTeamsResult:
      type: object
      properties:
        success:
          type: boolean
    DeleteTeamsResult:
      type: object
      properties:
        deletedCount:
          type: integer
          format: int32
    ModifyTeamResult:
      type: object
      properties:
        team:
          $ref: '#/components/schemas/Team'
    CreateCustomRoleResult:
      type: object
      properties:
        role:
          $ref: '#/components/schemas/CustomRole'
    CreateApiKeyResult:
      type: object
      properties:
        apiKey:
          $ref: '#/components/schemas/ApiKey'
    RemoveApiKeyResult:
      type: object
      properties:
        success:
          type: boolean
    CreateSubdomainResult:
      type: object
      properties:
        subdomain:
          $ref: '#/components/schemas/Subdomain'
    Subdomain:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        verified:
          type: boolean
    VerifyCustomDomainResult:
      type: object
      properties:
        verified:
          type: boolean
    UpdateWebhooksUrlResult:
      type: object
      properties:
        webhooksUrl:
          $ref: '#/components/schemas/WebhooksUrl'
    CreateUpdateDashboardSettingResult:
      type: object
      properties:
        dashboardSetting:
          $ref: '#/components/schemas/DashboardSetting'
    CreateUpdateScantoolSettingResult:
      type: object
      properties:
        scantoolSetting:
          $ref: '#/components/schemas/ScantoolSetting'
    MutateResellerResult:
      type: object
      properties:
        reseller:
          $ref: '#/components/schemas/Reseller'
    SubscriptionResult:
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/Subscription'
        error:
          $ref: '#/components/schemas/BillingError'
    UpdateSubscriptionResult:
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/Subscription'
    UpgradeSubscriptionResult:
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/Subscription'
    UpgradeSubscriptionHostedPageResult:
      type: object
      properties:
        url:
          type: string
    PrivacyPolicyResult:
      type: object
      properties:
        accepted:
          type: boolean
    EditUserProfileResult:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/UserProfile'
    EditUserPreferencesResult:
      type: object
      properties:
        preferences:
          $ref: '#/components/schemas/UserPreferences'
    DeviceLogOutResult:
      type: object
      properties:
        success:
          type: boolean
    ChargeLocationForVoiceResult:
      type: object
      properties:
        success:
          type: boolean
    UpdateVoiceConnectResult:
      type: object
      properties:
        success:
          type: boolean
    UpdateAgencyVoiceSettingResult:
      type: object
      properties:
        enabled:
          type: boolean
    ConnectWithCustomerSupportResult:
      type: object
      properties:
        success:
          type: boolean
    BulkConnectMatchesResult:
      type: object
      properties:
        success:
          type: boolean
        connected:
          type: integer
          format: int32
    GmbTriggerMatchesResult:
      type: object
      properties:
        success:
          type: boolean
    FbTriggerMatchesResult:
      type: object
      properties:
        success:
          type: boolean
    ConnectedAccountsTriggerMatchesResult:
      type: object
      properties:
        success:
          type: boolean
    ConfirmConnectMatchesResult:
      type: object
      properties:
        confirmed:
          type: integer
          format: int32
    BulkDisconnectResult:
      type: object
      properties:
        disconnected:
          type: integer
          format: int32
    DeleteConnectedAccountsLocationsResult:
      type: object
      properties:
        deleted:
          type: integer
          format: int32
    ConnectListingResult:
      type: object
      properties:
        success:
          type: boolean
    LocationResult:
      type: object
      properties:
        clientMutationId:
          type: string
        locationId:
          type: string
        success:
          type: boolean
    UpdateLocationMailResult:
      type: object
      properties:
        success:
          type: boolean
    CustomerTranslationsResult:
      type: object
      properties:
        success:
          type: boolean
    RegistrationResult:
      type: object
      properties:
        success:
          type: boolean
    UserFilterInput:
      type: object
      properties:
        email:
          type: string
        userTypes:
          type: array
          items:
            $ref: '#/components/schemas/UserType'
        roleIds:
          type: array
          items:
            type: string
        folderIds:
          type: array
          items:
            type: string
        inviteStatuses:
          type: array
          items:
            $ref: '#/components/schemas/InviteStatus'
    UserInput:
      type: object
      properties:
        userId:
          type: string
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        roleId:
          type: string
        locationIds:
          type: array
          items:
            type: string
        folderIds:
          type: array
          items:
            type: string
        locale:
          $ref: '#/components/schemas/LocaleType'
        clientMutationId:
          type: string
    UserManagementInput:
      type: object
      properties:
        userIds:
          type: array
          items:
            type: string
        locationIds:
          type: array
          items:
            type: string
        folderIds:
          type: array
          items:
            type: string
        selectionType:
          $ref: '#/components/schemas/UserSelectionType'
        filters:
          $ref: '#/components/schemas/UserFilterInput'
        clientMutationId:
          type: string
    BulkActionInput:
      type: object
      properties:
        bulkAction:
          $ref: '#/components/schemas/BulkUserAction'
        selectionType:
          $ref: '#/components/schemas/UserSelectionType'
        userIds:
          type: array
          items:
            type: string
        filters:
          $ref: '#/components/schemas/UserFilterInput'
        roleId:
          type: string
      required:
        - bulkAction
        - selectionType
    PermissionInput:
      type: object
      properties:
        feature:
          type: string
        subfeature:
          type: string
        enabled:
          type: boolean
    CertificateInput:
      type: object
      properties:
        idpUrl:
          type: string
        certificate:
          type: string
        enabled:
          type: boolean
      required:
        - idpUrl
        - certificate
    BillingObject:
      type: object
      properties:
        bankName:
          type: string
        accountNumber:
          type: string
        routingNumber:
          type: string
        accountHolder:
          type: string
    AccountFeatureFlags:
      type: object
      properties:
        flags:
          type: string
    AccountReleaseFlags:
      type: object
      properties:
        flags:
          type: string
    ConnectedAccountsFilter:
      type: object
      properties:
        types:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedSite'
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedAccountStatus'
        query:
          type: string
    ConnectedAccountsSort:
      type: object
      properties:
        field:
          $ref: '#/components/schemas/ConnectedAccountSortBy'
        order:
          $ref: '#/components/schemas/SortOrder'
    ConnectedAccountListingsFilter:
      type: object
      properties:
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedAccountLocationStatus'
        query:
          type: string
    ConnectionSuggestionsFilter:
      type: object
      properties:
        connectedAccountIds:
          type: array
          items:
            type: string
        locationIds:
          type: array
          items:
            type: string
    LocationsConnectInfoFilters:
      type: object
      properties:
        sites:
          type: array
          items:
            $ref: '#/components/schemas/ConnectionSite'
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/ConnectionInfoStatus'
        query:
          type: string
    LocationsConnectInfoSort:
      type: object
      properties:
        field:
          $ref: '#/components/schemas/LocationsConnectInfoSortableFields'
        order:
          $ref: '#/components/schemas/SortOrder'
    PaginationPageInfo:
      type: object
      properties:
        first:
          type: integer
          format: int32
        after:
          type: string
        last:
          type: integer
          format: int32
        before:
          type: string
    BulkConnectMatchesInput:
      type: object
      properties:
        connectedAccountId:
          type: string
        matches:
          type: array
          items:
            type: string
      required:
        - connectedAccountId
    LocationInput:
      type: object
      properties:
        locationId:
          type: string
        locationMail:
          type: string
      required:
        - locationId
    SubAccountInput:
      type: object
      properties:
        email:
          type: string
        companyName:
          type: string
        firstName:
          type: string
        lastName:
          type: string
      required:
        - email
        - companyName
    UserType:
      type: string
      enum:
        - ADMIN
        - MANAGER
        - VIEWER
        - AGENCY
      description: (also defined by contests)
    UserSelectionType:
      type: string
      enum:
        - SELECTED
        - ALL
        - ALL_EXCEPT_SELECTED
    UserSortBy:
      type: string
      enum:
        - NAME_ASC
        - NAME_DESC
        - EMAIL_ASC
        - EMAIL_DESC
        - CREATED_AT_ASC
        - CREATED_AT_DESC
    BulkUserAction:
      type: string
      enum:
        - ARCHIVE
        - ACTIVATE
        - CHANGE_ROLE
        - RESEND_INVITE
        - DELETE
    InviteStatus:
      type: string
      enum:
        - INVITED
        - ACTIVE
        - PENDING
        - ARCHIVED
    LocaleType:
      type: string
      enum:
        - EN
        - FR
        - ES
        - DE
        - PT
        - JA
      description: (also defined by platform)
    AccountStatus:
      type: string
      enum:
        - ACTIVE
        - SUSPENDED
        - CANCELLED
        - TRIAL
    AccountType:
      type: string
      enum:
        - AGENCY
        - BRAND
        - PLATFORM
        - SUBACCOUNT
    ConnectedSite:
      type: string
      enum:
        - GOOGLE
        - FACEBOOK
        - YELP
        - LINKEDIN
        - APPLE
        - PINTEREST
        - TRIPADVISOR
    ConnectionSite:
      type: string
      enum:
        - GOOGLE
        - FACEBOOK
        - YELP
        - LINKEDIN
        - APPLE
        - TRIPADVISOR
    ConnectedAccountStatus:
      type: string
      enum:
        - ACTIVE
        - DISCONNECTED
        - EXPIRED
        - ERROR
    ConnectedAccountLocationStatus:
      type: string
      enum:
        - CONNECTED
        - DISCONNECTED
        - PENDING
        - ERROR
    ConnectionInfoStatus:
      type: string
      enum:
        - CONNECTED
        - DISCONNECTED
        - IN_PROGRESS
        - FAILED
    ConnectedAccountSortBy:
      type: string
      enum:
        - EMAIL
        - TYPE
        - LAST_FETCHED_AT
    ConnectionSuggestionSortBy:
      type: string
      enum:
        - CONFIDENCE_ASC
        - CONFIDENCE_DESC
        - CREATED_AT_DESC
    LocationsConnectInfoSortableFields:
      type: string
      enum:
        - NAME
        - CREATED_AT
        - STATUS
    SortOrder:
      type: string
      enum:
        - ASC
        - DESC
    LocationsFromGoogle:
      type: string
      enum:
        - ONBOARDING
        - BULK
    AddOnType:
      type: string
      enum:
        - VOICE
        - SOCIAL
        - REVIEWS
        - INSIGHTS
      description: (also defined by packaging)
    PaymentMethod:
      type: string
      enum:
        - CARD
        - ACH
        - INVOICE
    PaymentTerm:
      type: string
      enum:
        - MONTHLY
        - QUARTERLY
        - ANNUAL
    PayStatus:
      type: string
      enum:
        - PAID
        - PENDING
        - FAILED
        - REFUNDED
    MeteredSubfeature:
      type: string
      enum:
        - LOCATIONS
        - SOCIAL_POSTS
        - REVIEW_CAMPAIGNS
        - API_CALLS
    MailParseDomains:
      type: string
      enum:
        - GMAIL
        - OUTLOOK
        - YAHOO
    FromEmailSettingType:
      type: object
      description: DKIM / SPF / from-email settings for an agency.
      properties:
        accountId:
          type: integer
          format: int32
        databaseId:
          type: integer
          format: int32
        fromEmail:
          type: string
        fromName:
          type: string
        dkimVerified:
          type: boolean
        dkimValue:
          type: string
        dkimHost:
          type: string
        spfVerified:
          type: boolean
        spfHost:
          type: string
        spfValue:
          type: string
        confirmed:
          type: boolean
    EmailSetupType:
      type: object
      properties:
        setupComplete:
          type: boolean
        senderSignatureConfirmed:
          type: boolean
        dkimVerified:
          type: boolean
    AgencySettingType:
      type: object
      properties:
        databaseId:
          type: integer
          format: int32
        accountId:
          type: integer
          format: int32
        agencyName:
          type: string
        phone:
          type: string
        street:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        businessLogo:
          type: string
    EmailNotificationType:
      type: object
      properties:
        emailType:
          type: string
        schedule:
          type: string
        enabled:
          type: boolean
        subject:
          type: string
        body:
          type: string
        testData:
          type: string
    RecipientEmailsType:
      type: object
      properties:
        recipientEmails:
          type: array
          items:
            type: string
    TestEmailResultType:
      type: object
      properties:
        testEmailResult:
          type: boolean
    AccountNotificationSettingType:
      type: object
      description: Map of template type to enabled flag for the account.
      properties:
        reviewTemplate:
          type: boolean
        reviewResponseTemplate:
          type: boolean
        rankingReportTemplate:
          type: boolean
        insightsTemplate:
          type: boolean
        profileCompletionTemplate:
          type: boolean
        connectionNotificationsTemplate:
          type: boolean
    MobileNotificationType:
      type: object
      properties:
        id:
          type: string
        notificationType:
          type: string
        enabled:
          type: boolean
        schedule:
          type: string
        customSettings:
          $ref: '#/components/schemas/MobileCustomSettingType'
    MobileCustomSettingType:
      type: object
      properties:
        showOnlyNegative:
          type: boolean
        negativeReviewThreshold:
          type: integer
          format: int32
    MobileNotificationReviewType:
      type: object
      properties:
        data:
          type: array
          items:
            type: string
        hasNextPage:
          type: boolean
    MobileNotificationItemType:
      type: object
      properties:
        id:
          type: string
        createdAt:
          type: string
        message:
          type: string
      required:
        - id
    InAppNotificationItemConnectionType:
      type: object
      properties:
        edges:
          type: array
          items:
            $ref: '#/components/schemas/InAppNotificationEdgeType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
        unreadCount:
          type: integer
          format: int32
    InAppNotificationEdgeType:
      type: object
      properties:
        cursor:
          type: string
        node:
          $ref: '#/components/schemas/InAppNotificationItemType'
    InAppNotificationItemType:
      type: object
      properties:
        id:
          type: string
        eventName:
          type: string
        eventId:
          type: string
        message:
          type: string
        url:
          type: string
        ctaText:
          type: string
        icon:
          type: string
        read:
          type: boolean
        createdAt:
          type: string
        productLine:
          type: string
      required:
        - id
    UserNotificationSettingsSummaryType:
      type: object
      properties:
        userInfo:
          type: array
          items:
            $ref: '#/components/schemas/UserNotificationSettingsUserInfoType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
    UserNotificationSettingsUserInfoType:
      type: object
      properties:
        userId:
          type: integer
          format: int32
        accountId:
          type: integer
          format: int32
        userName:
          type: string
        email:
          type: string
        enabled:
          type: boolean
        notificationEventCount:
          type: integer
          format: int32
        notificationEvents:
          type: array
          items:
            type: string
        userBrandIds:
          type: array
          items:
            type: string
    UserNotificationRecipientDetailsType:
      type: object
      properties:
        id:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
      required:
        - id
    ErrorContextType:
      type: object
      description: (also defined by reviewfunnel)
      properties:
        field:
          type: string
        message:
          type: string
    FromEmailSettingsResultType:
      type: object
      properties:
        success:
          type: boolean
        fromEmailSetting:
          $ref: '#/components/schemas/FromEmailSettingType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    AgencySettingsResultType:
      type: object
      properties:
        success:
          type: boolean
        agencySetting:
          $ref: '#/components/schemas/AgencySettingType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    EmailFrequencyResultType:
      type: object
      properties:
        success:
          type: boolean
        emailNotification:
          $ref: '#/components/schemas/EmailNotificationType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    AccountEmailFrequencyResultType:
      type: object
      properties:
        success:
          type: boolean
        emailNotification:
          $ref: '#/components/schemas/EmailNotificationType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    EmailTemplateResultType:
      type: object
      properties:
        success:
          type: boolean
        emailTemplate:
          $ref: '#/components/schemas/EmailTemplateType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    EmailTemplateType:
      type: object
      properties:
        accountId:
          type: integer
          format: int32
        databaseId:
          type: integer
          format: int32
        emailSubject:
          type: string
        templateBody:
          type: string
    DKIMSettingsResultType:
      type: object
      properties:
        success:
          type: boolean
        dkimSettings:
          $ref: '#/components/schemas/DKIMSettingsType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    DKIMSettingsType:
      type: object
      properties:
        domain:
          type: string
        dkimVerified:
          type: boolean
        dkimHost:
          type: string
        dkimValue:
          type: string
    RecipientEmailResultType:
      type: object
      properties:
        success:
          type: boolean
        recipientEmails:
          type: array
          items:
            type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    MobileSettingResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    InAppNotificationResultType:
      type: object
      properties:
        success:
          type: boolean
        inAppNotification:
          $ref: '#/components/schemas/InAppNotificationItemType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    MarkReadInAppNotificationResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    UpdateUserNotificationSettingsResultType:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/MutationErrorType'
    UpdateDailyDigestEnabledResultType:
      type: object
      properties:
        success:
          type: boolean
    AvailableEmailTemplateType:
      type: string
      enum:
        - ReviewTemplate
        - ReviewResponseTemplate
        - RankingReportTemplate
        - InsightsTemplate
        - ProfileCompletionTemplate
        - ListingCompletionTemplate
      description: Templates that can be configured per location.
    AccountEmailTemplateType:
      type: string
      enum:
        - ReviewTemplate
        - ReviewResponseTemplate
        - RankingReportTemplate
        - InsightsTemplate
        - ProfileCompletionTemplate
        - ConnectionNotificationsTemplate
        - LocationConnectionsCsvNotificationTemplate
      description: Templates that can be configured at account level.
    EmailEventType:
      type: string
      enum:
        - ReviewTemplate
        - ListingCompletionTemplate
        - RankingReportTemplate
        - InsightsTemplate
        - ProfileCompletionTemplate
        - ReviewResponseTemplate
    MailableType:
      type: string
      enum:
        - Location
        - Account
    NotificationActionType:
      type: string
      enum:
        - CLICK
        - READ
    UserNotificationEventType:
      type: string
      enum:
        - POST_FAILED
        - PROFILE_DISCONNECTED
        - DAILY_DIGEST
        - ONBOARDING_BRAND_NOT_ADDED
        - ONBOARDING_BRAND_ADDED_NO_PROFILES
        - PROFILE_CONNECTED_NO_POSTS_FROM_IDEAS
        - PROFILE_CONNECTED_NO_POSTS
        - PROFILE_CONNECTED_ONE_POST
        - WEEKLY_DIGEST
        - BOOST_CREATED
        - BOOST_APPROVED
        - BOOST_REJECTED
        - BOOST_STOPPED
        - WEEKLY_PUBLISHED_POST
        - BRAND_FOLLOWERS
        - TOKEN_EXPIRY
    UserNotificationActionType:
      type: string
      enum:
        - ASSIGN_EVENTS
        - REMOVE_EVENTS
        - OVERRIDE_EVENTS
        - STATUS_UPDATE
    AccessPermissionInputType:
      type: object
      properties:
        feature:
          type: string
        subfeature:
          type: string
        permission:
          type: string
      required:
        - feature
    MobileCustomSettingInputType:
      type: object
      properties:
        showOnlyNegative:
          type: boolean
        negativeReviewThreshold:
          type: integer
          format: int32
      required:
        - showOnlyNegative
        - negativeReviewThreshold
    UserNotificationSettingsFiltersInput:
      type: object
      properties:
        userName:
          type: string
        email:
          type: string
        statuses:
          type: array
          items:
            type: string
        emailEvents:
          type: array
          items:
            $ref: '#/components/schemas/UserNotificationEventType'
        brandIds:
          type: array
          items:
            type: string
    FlowType:
      type: object
      description: A marketing automation flow (automation, campaign, alert, post_automation).
      properties:
        id:
          type: string
        name:
          type: string
        status:
          $ref: '#/components/schemas/FlowStatusEnumType'
        flowType:
          $ref: '#/components/schemas/TypesOfFlows'
        startDate:
          type: string
        endDate:
          type: string
        startTime:
          type: string
        endTime:
          type: string
        accountId:
          type: integer
          format: int32
        userId:
          type: integer
          format: int32
        networks:
          type: array
          items:
            type: string
        actions:
          type: array
          items:
            $ref: '#/components/schemas/FlowActionType'
        trigger:
          $ref: '#/components/schemas/FlowTriggerType'
        goal:
          $ref: '#/components/schemas/FlowGoalType'
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - id
    FlowActionType:
      type: object
      properties:
        id:
          type: string
        actionKey:
          type: string
        attrs:
          type: string
        delayInHours:
          type: integer
          format: int32
      required:
        - id
    FlowTriggerType:
      type: object
      properties:
        id:
          type: string
        triggerKey:
          type: string
        conditions:
          type: string
      required:
        - id
    FlowGoalType:
      type: object
      properties:
        id:
          type: string
        goal:
          $ref: '#/components/schemas/GoalType'
        data:
          type: string
      required:
        - id
    GoalType:
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        name:
          type: string
        description:
          type: string
      required:
        - id
    PaginatedFlowsType:
      type: object
      properties:
        flows:
          type: array
          items:
            $ref: '#/components/schemas/FlowType'
        totalFlows:
          type: integer
          format: int32
    PaginatedCampaignsType:
      type: object
      properties:
        campaigns:
          type: array
          items:
            $ref: '#/components/schemas/FlowType'
        totalCampaigns:
          type: integer
          format: int32
    CampaignByDate:
      type: object
      properties:
        campaigns:
          type: array
          items:
            $ref: '#/components/schemas/FlowType'
    AllFlowsStatsType:
      type: object
      properties:
        alert:
          type: integer
          format: int32
        campaign:
          type: integer
          format: int32
        automation:
          type: integer
          format: int32
        inProgress:
          type: integer
          format: int32
        stopped:
          type: integer
          format: int32
        draft:
          type: integer
          format: int32
        scheduled:
          type: integer
          format: int32
        completed:
          type: integer
          format: int32
        total:
          type: integer
          format: int32
        experiment:
          type: integer
          format: int32
    FlowRunType:
      type: object
      properties:
        id:
          type: string
        flowId:
          type: string
        counter:
          type: integer
          format: int32
        status:
          type: string
        startedAt:
          type: string
        endedAt:
          type: string
      required:
        - id
    FlowRunDetailsType:
      type: object
      properties:
        flowRun:
          $ref: '#/components/schemas/FlowRunType'
        flow:
          $ref: '#/components/schemas/FlowType'
        locationRuns:
          type: array
          items:
            $ref: '#/components/schemas/LocationRunDetailType'
        totalRunCount:
          type: integer
          format: int32
        totalPageCount:
          type: integer
          format: int32
    LocationRunDetailType:
      type: object
      properties:
        id:
          type: string
        locationId:
          type: string
        status:
          type: string
        actionRuns:
          type: array
          items:
            $ref: '#/components/schemas/ActionRunDetailType'
      required:
        - id
    ActionRunDetailType:
      type: object
      properties:
        id:
          type: string
        actionKey:
          type: string
        status:
          type: string
        plannedAt:
          type: string
        completedAt:
          type: string
      required:
        - id
    FlowActionRunStats:
      type: object
      properties:
        actionKey:
          type: string
        runCount:
          type: integer
          format: int32
    FlowLocationRunStats:
      type: object
      properties:
        locationId:
          type: string
        runCount:
          type: integer
          format: int32
    RecipeType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        category:
          type: array
          items:
            type: string
      required:
        - id
    RecipeAttrsType:
      type: object
      properties:
        recipeName:
          type: string
        recipeCategory:
          type: array
          items:
            type: string
        recipeDescription:
          type: string
    FlowRecipeStatsType:
      type: object
      properties:
        categorySlug:
          type: string
        categoryName:
          type: string
        count:
          type: integer
          format: int32
    AvailableFlowTriggerType:
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        name:
          type: string
        groupingLabel:
          type: string
      required:
        - id
    AvailableFlowActionType:
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        name:
          type: string
        groupingLabel:
          type: string
      required:
        - id
    AvailableFilterType:
      type: object
      properties:
        field:
          type: string
        name:
          type: string
        operators:
          type: array
          items:
            type: string
        dataSource:
          type: string
    AccountTriggerType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        key:
          type: string
        conditions:
          type: string
      required:
        - id
    MappedActionType:
      type: object
      properties:
        action:
          type: string
        mappedKeys:
          type: array
          items:
            type: string
    LocationFlowStatusType:
      type: object
      properties:
        flowIds:
          type: array
          items:
            type: string
    LocationType:
      type: object
      description: (also defined by contests)
      properties:
        id:
          type: string
        name:
          type: string
        storeId:
          type: string
        city:
          type: string
        countryIso:
          type: string
      required:
        - id
    LocationWithAccessType:
      type: object
      properties:
        locationId:
          type: string
        connected:
          type: boolean
        status:
          type: string
    CategoryType:
      type: object
      description: (also defined by messenger) (also defined by media-manager)
      properties:
        id:
          type: string
        name:
          type: string
        accountId:
          type: integer
          format: int32
      required:
        - id
    CampaignActivityType:
      type: object
      properties:
        totalRecords:
          type: integer
          format: int32
        campaignActivity:
          type: array
          items:
            type: string
    PaginatedTopLocationsType:
      type: object
      properties:
        totalRecords:
          type: integer
          format: int32
        topLocations:
          type: array
          items:
            $ref: '#/components/schemas/TopLocationsType'
    TopLocationsType:
      type: object
      properties:
        locationId:
          type: string
        name:
          type: string
        value:
          type: integer
          format: int32
    CampaignScheduleType:
      type: object
      properties:
        insights:
          type: array
          items:
            $ref: '#/components/schemas/ScheduleRunType'
        totalRecords:
          type: integer
          format: int32
    ScheduleRunType:
      type: object
      properties:
        runCounter:
          type: integer
          format: int32
        startDate:
          type: string
        endDate:
          type: string
        metrics:
          type: array
          items:
            type: string
    SiteWiseDataType:
      type: object
      properties:
        site:
          type: string
        value:
          type: integer
          format: int32
    CampaignPerformanceType:
      type: object
      properties:
        primaryMetrics:
          type: string
        data:
          type: string
    HolidayType:
      type: object
      properties:
        holidays:
          type: array
          items:
            type: string
    ConflictsType:
      type: object
      properties:
        conflicts:
          type: array
          items:
            $ref: '#/components/schemas/ConflictType'
        totalRecords:
          type: integer
          format: int32
    ConflictType:
      type: object
      properties:
        id:
          type: string
        flowId:
          type: string
        conflictingFlowId:
          type: string
        conflictDate:
          type: string
      required:
        - id
    DemographicFilterType:
      type: object
      properties:
        filters:
          type: string
    DemographicLocationsType:
      type: object
      properties:
        matched:
          type: array
          items:
            type: string
        unmatched:
          type: array
          items:
            type: string
        matchPercentage:
          type: integer
          format: int32
    DemographicRawDataType:
      type: object
      properties:
        data:
          type: string
    FlowStopResponse:
      type: object
      properties:
        status:
          type: integer
          format: int32
        message:
          type: string
    CreateFlowMutationPayloadType:
      type: object
      properties:
        flow:
          $ref: '#/components/schemas/FlowType'
        clientMutationId:
          type: string
        errors:
          type: array
          items:
            type: string
    UpdateFlowPayload:
      type: object
      properties:
        flow:
          $ref: '#/components/schemas/FlowType'
        clientMutationId:
          type: string
    CreateFlowFromRecipePayload:
      type: object
      properties:
        flow:
          $ref: '#/components/schemas/FlowType'
        success:
          type: boolean
        clientMutationId:
          type: string
      required:
        - success
    StopFlowPayload:
      type: object
      properties:
        response:
          $ref: '#/components/schemas/FlowStopResponse'
        clientMutationId:
          type: string
    DeleteFlowPayload:
      type: object
      properties:
        status:
          type: string
    MoveFlowToScheduledPayload:
      type: object
      properties:
        response:
          $ref: '#/components/schemas/FlowStopResponse'
    CreateFlowClonePayload:
      type: object
      properties:
        flow:
          $ref: '#/components/schemas/FlowType'
    GrantLocationsAccessMutationType:
      type: object
      properties:
        success:
          type: boolean
        locationIds:
          type: array
          items:
            type: string
    CreateCategoryPayload:
      type: object
      properties:
        category:
          $ref: '#/components/schemas/CategoryType'
    CreateAccountTriggerPayload:
      type: object
      properties:
        response:
          $ref: '#/components/schemas/FlowStopResponse'
    DeleteFlowPostsPayload:
      type: object
      properties:
        response:
          $ref: '#/components/schemas/FlowStopResponse'
    TypesOfFlows:
      type: string
      enum:
        - ALERT
        - AUTOMATION
        - CAMPAIGN
        - EXPERIMENT
        - POST_AUTOMATION
      description: Supported flow type discriminators.
    FlowStatusEnumType:
      type: string
      enum:
        - DRAFT
        - IN_PROGRESS
        - STOPPED
        - SCHEDULED
        - COMPLETED
      description: Lifecycle statuses of a flow.
    AvailableMappingType:
      type: string
      enum:
        - TRIGGER
        - PUBLISHER
    SourceType:
      type: string
      enum:
        - GOOGLE
        - FACEBOOK
    MetricType:
      type: string
      enum:
        - Increase_phone_calls
        - Increase_website_visits
        - Increase_store_visits
        - Profile_views
        - Profile_actions
    GroupByType:
      type: string
      enum:
        - DAILY
        - WEEKLY
        - MONTHLY
    ActionsEnumType:
      type: string
      enum:
        - POSTS_CREATE
        - POSTS_PRODUCT
        - INTERACTIONS_RESPOND_TO_REVIEW
        - ALERTS_MAIL
        - ALERTS_DIGEST_EMAILS
      description: Keys for known flow actions.
    AutomationCategoryType:
      type: string
      enum:
        - ALERT
        - AUTOMATION
        - CAMPAIGN
        - POST_AUTOMATION
    AutomationFilterInput:
      type: object
      description: Filters applied to flow listing queries.
      properties:
        name:
          type: string
        status:
          type: array
          items:
            $ref: '#/components/schemas/FlowStatusEnumType'
        actionKeys:
          type: array
          items:
            $ref: '#/components/schemas/ActionsEnumType'
        automationCategory:
          type: array
          items:
            $ref: '#/components/schemas/AutomationCategoryType'
        accountIds:
          type: array
          items:
            type: string
    CampaignFilterInput:
      type: object
      properties:
        name:
          type: string
        status:
          type: array
          items:
            $ref: '#/components/schemas/FlowStatusEnumType'
        goal:
          type: array
          items:
            type: integer
            format: int32
    CampaignDateRangeInput:
      type: object
      properties:
        from:
          type: string
        to:
          type: string
      required:
        - from
        - to
    UpdateFlowInput:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        locationFilters:
          type: array
          items:
            $ref: '#/components/schemas/FieldConditionSetAttributesInputType'
        trigger:
          $ref: '#/components/schemas/FlowTriggerAttributesInputType'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/FlowActionAttributesInputType'
        startDate:
          type: string
        startTime:
          type: string
        endDate:
          type: string
        endTime:
          type: string
        effectiveFor:
          type: string
        publishers:
          type: array
          items:
            type: string
        schedule:
          $ref: '#/components/schemas/ScheduleInputType'
        goal:
          $ref: '#/components/schemas/FlowGoalAttributesInputType'
        customAttributesFilter:
          type: array
          items:
            $ref: '#/components/schemas/FieldConditionSetCustomAttributesType'
        demographicFilters:
          $ref: '#/components/schemas/DemographicInputType'
      required:
        - id
    FlowAttributesInputType:
      type: object
      description: Input payload for creating a flow.
      properties:
        name:
          type: string
        type:
          $ref: '#/components/schemas/TypesOfFlows'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/FlowActionAttributesInputType'
        trigger:
          $ref: '#/components/schemas/FlowTriggerAttributesInputType'
        goal:
          $ref: '#/components/schemas/FlowGoalAttributesInputType'
        publishers:
          type: array
          items:
            type: string
        schedule:
          $ref: '#/components/schemas/ScheduleInputType'
        locationFilters:
          type: array
          items:
            $ref: '#/components/schemas/FieldConditionSetAttributesInputType'
        customAttributesFilter:
          type: array
          items:
            $ref: '#/components/schemas/FieldConditionSetCustomAttributesType'
        demographicFilters:
          $ref: '#/components/schemas/DemographicInputType'
        startDate:
          type: string
        startTime:
          type: string
        endDate:
          type: string
        endTime:
          type: string
        status:
          $ref: '#/components/schemas/FlowStatusEnumType'
      required:
        - name
    FlowActionAttributesInputType:
      type: object
      properties:
        actionId:
          type: string
        actionKey:
          type: string
        attrs:
          type: array
          items:
            $ref: '#/components/schemas/FlowActionFieldAttributesInputType'
        delayInHours:
          type: integer
          format: int32
    FlowActionFieldAttributesInputType:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
    FlowTriggerAttributesInputType:
      type: object
      properties:
        triggerId:
          type: string
        triggerKey:
          type: string
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/FieldConditionAttributesInputType'
    FlowGoalAttributesInputType:
      type: object
      properties:
        goalId:
          type: string
        goalKey:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FlowGoalFieldInputType'
    FlowGoalFieldInputType:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
    ScheduleInputType:
      type: object
      properties:
        frequency:
          type: string
        days:
          type: array
          items:
            $ref: '#/components/schemas/DaysEnumType'
        time:
          type: string
    DaysEnumType:
      type: string
      enum:
        - MONDAY
        - TUESDAY
        - WEDNESDAY
        - THURSDAY
        - FRIDAY
        - SATURDAY
        - SUNDAY
    FieldConditionSetAttributesInputType:
      type: object
      properties:
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/FieldConditionAttributesInputType'
    FieldConditionSetCustomAttributesType:
      type: object
      properties:
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/FieldConditionCustomAttributesInputType'
    FieldConditionAttributesInputType:
      type: object
      properties:
        field:
          type: string
        operator:
          type: string
        value:
          type: string
    FieldConditionCustomAttributesInputType:
      type: object
      properties:
        field:
          type: string
        operator:
          type: string
        value:
          type: string
    DemographicInputType:
      type: object
      properties:
        gender:
          type: array
          items:
            $ref: '#/components/schemas/GenderEnumType'
        age:
          $ref: '#/components/schemas/DemographicRangeInput'
        race:
          type: array
          items:
            $ref: '#/components/schemas/DemographicRaceEnumType'
        housingStatus:
          type: array
          items:
            $ref: '#/components/schemas/DemographicHousingStatusEnumType'
        householdIncome:
          type: array
          items:
            $ref: '#/components/schemas/DemographicRangeInput'
        veteran:
          $ref: '#/components/schemas/DemographicVeteranEnumType'
        threshold:
          type: integer
          format: int32
    DemographicRangeInput:
      type: object
      properties:
        lower:
          type: integer
          format: int32
        upper:
          type: integer
          format: int32
    GenderEnumType:
      type: string
      enum:
        - MALE
        - FEMALE
    DemographicRaceEnumType:
      type: string
      enum:
        - WHITE
        - BLACK
        - ASIAN
        - HISPANIC
        - OTHER
    DemographicHousingStatusEnumType:
      type: string
      enum:
        - OWNER_OCCUPIED
        - RENTER_OCCUPIED
    DemographicVeteranEnumType:
      type: string
      enum:
        - VETERAN
        - NON_VETERAN
    CustomTriggerInputType:
      type: object
      properties:
        name:
          type: string
        key:
          type: string
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/FieldConditionAttributesInputType'
      required:
        - name
        - key
    RecipeDataType:
      type: object
      description: Overrides applied when creating a flow from a recipe.
      properties:
        name:
          type: string
        locationFilters:
          type: array
          items:
            $ref: '#/components/schemas/FieldConditionSetAttributesInputType'
        startDate:
          type: string
        endDate:
          type: string
        startTime:
          type: string
        endTime:
          type: string
        publishers:
          type: array
          items:
            type: string
    ReviewCampaignType:
      type: object
      description: A review acquisition campaign.
      properties:
        id:
          type: string
        locationId:
          type: string
        name:
          type: string
        screening:
          type: boolean
        archived:
          type: boolean
        campaignType:
          type: string
        campaignScope:
          $ref: '#/components/schemas/CampaignScopeType'
        status:
          $ref: '#/components/schemas/StatusType'
        autoSend:
          type: boolean
        timezone:
          type: string
        fromEmail:
          type: string
        numberOfFeedbacks:
          type: integer
          format: int32
        createdAt:
          type: string
        stats:
          type: array
          items:
            $ref: '#/components/schemas/ReviewCampaignStat'
      required:
        - id
        - locationId
        - screening
        - fromEmail
    ReviewCampaignTypeNew:
      type: object
      description: Current shape of a review campaign (post-refactor).
      properties:
        id:
          type: string
        name:
          type: string
        locationId:
          type: string
        campaignType:
          $ref: '#/components/schemas/CampaignTypeEnum'
        campaignScope:
          $ref: '#/components/schemas/CampaignScopeType'
        status:
          $ref: '#/components/schemas/StatusType'
      required:
        - id
        - locationId
    ReviewCampaignDataType:
      type: object
      properties:
        reviewCampaigns:
          type: array
          items:
            $ref: '#/components/schemas/ReviewCampaignType'
        stats:
          type: array
          items:
            $ref: '#/components/schemas/ReviewCampaignStat'
        totalRecords:
          type: integer
          format: int32
    GetReviewCampaignType:
      type: object
      properties:
        reviewCampaign:
          $ref: '#/components/schemas/ReviewCampaignType'
        businessName:
          type: string
        locationAddress:
          type: string
    ReviewFunnelType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
    ReviewCampaignStat:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
    ReviewCampaignCustomerType:
      type: object
      properties:
        id:
          type: string
        reviewCampaignId:
          type: string
        name:
          type: string
        email:
          type: string
        phone:
          type: string
        feedback:
          type: string
        rating:
          type: integer
          format: int32
        smsDeliveredAt:
          type: string
        smsOpenedAt:
          type: string
        emailDeliveredAt:
          type: string
        emailLastOpenedAt:
          type: string
        emailLastClickedAt:
          type: string
        emailLastBouncedAt:
          type: string
        firstFollowUpAt:
          type: string
        firstFollowUpDeliveredAt:
          type: string
        secondFollowUpAt:
          type: string
        secondFollowUpDeliveredAt:
          type: string
        followUpSent:
          type: integer
          format: int32
        archivedAt:
          type: string
      required:
        - id
    ReviewCampaignCustomerConnectionType:
      type: object
      properties:
        edges:
          type: array
          items:
            $ref: '#/components/schemas/ReviewCampaignCustomerEdgeType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
    ReviewCampaignCustomerEdgeType:
      type: object
      properties:
        cursor:
          type: string
        node:
          $ref: '#/components/schemas/ReviewCampaignCustomerType'
      required:
        - cursor
    ReviewCampaignCustomerFeedbackType:
      type: object
      properties:
        locationId:
          type: string
        email:
          type: string
        phone:
          type: string
        firstName:
          type: string
        rating:
          type: integer
          format: int32
        date:
          type: string
        campaignName:
          type: string
        campaignType:
          $ref: '#/components/schemas/CampaignTypeEnum'
        feedback:
          type: string
        source:
          $ref: '#/components/schemas/ResponseSourceEnum'
      required:
        - locationId
        - date
        - campaignName
    FeedbackConnectionType:
      type: object
      properties:
        edges:
          type: array
          items:
            $ref: '#/components/schemas/FeedbackEdgeType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
    FeedbackEdgeType:
      type: object
      properties:
        cursor:
          type: string
        node:
          $ref: '#/components/schemas/FeedbackType'
      required:
        - cursor
    FeedbackType:
      type: object
      properties:
        locationId:
          type: string
        email:
          type: string
        phone:
          type: string
        firstName:
          type: string
        rating:
          type: integer
          format: int32
        date:
          type: string
        campaignName:
          type: string
        feedback:
          type: string
      required:
        - locationId
        - date
        - campaignName
    FeedbackStatsType:
      type: object
      properties:
        totalResponses:
          type: integer
          format: int32
        averageRating:
          type: number
          format: float
        ratingCounts:
          type: array
          items:
            $ref: '#/components/schemas/ReviewCampaignStat'
    ReviewCampaignSmsCreditsType:
      type: object
      properties:
        credits:
          type: integer
          format: int32
        unitCost:
          type: number
          format: float
      required:
        - credits
    ReviewCampaignGlobalSettingsType:
      type: object
      properties:
        id:
          type: string
        screening:
          type: boolean
        fromEmail:
          type: string
        firstFollowUpSchedule:
          type: string
        firstFollowUpTemplate:
          $ref: '#/components/schemas/FirstFollowUpTemplateType'
        secondFollowUpSchedule:
          type: string
        secondFollowUpTemplate:
          $ref: '#/components/schemas/SecondFollowUpTemplateType'
        unlimitedFollowUpInterval:
          type: string
        unlimitedFollowUpTemplate:
          $ref: '#/components/schemas/UnlimitedFollowUpTemplateType'
        thankYouSchedule:
          $ref: '#/components/schemas/ThankYouScheduleType'
        thankYouTemplate:
          $ref: '#/components/schemas/ThankYouEmailTemplateType'
        landingPageTemplate:
          $ref: '#/components/schemas/LandingPageTemplateType'
        openingEmailTemplate:
          $ref: '#/components/schemas/OpeningEmailTemplateType'
        smsTemplate:
          $ref: '#/components/schemas/SmsTemplateType'
        timezone:
          type: string
        hideAddressInTemplate:
          type: boolean
      required:
        - id
        - fromEmail
        - timezone
    OpeningEmailTemplateType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
        cta:
          type: string
    SmsTemplateType:
      type: object
      properties:
        content:
          type: string
    FirstFollowUpTemplateType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
        schedule:
          type: string
    SecondFollowUpTemplateType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
        schedule:
          type: string
    UnlimitedFollowUpTemplateType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
        schedule:
          type: string
    ThankYouEmailTemplateType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
    ThankYouScheduleType:
      type: object
      properties:
        hoursAfterRating:
          type: integer
          format: int32
    LandingPageTemplateType:
      type: object
      properties:
        heading:
          type: string
        content:
          type: string
    LandingInfoType:
      type: object
      properties:
        locationInfo:
          $ref: '#/components/schemas/LocationInfoType'
        locationCustomerInfo:
          $ref: '#/components/schemas/LocationCustomerInfoType'
        landingPageTemplate:
          $ref: '#/components/schemas/LandingPageTemplateType'
        isYelpCompliant:
          type: boolean
    OpeningInfoType:
      type: object
      properties:
        locationInfo:
          $ref: '#/components/schemas/LocationInfoType'
        locationCustomerInfo:
          $ref: '#/components/schemas/LocationCustomerInfoType'
        openingEmailTemplate:
          $ref: '#/components/schemas/OpeningEmailTemplateType'
        isYelpCompliant:
          type: boolean
        threshold:
          type: integer
          format: int32
    LocationInfoType:
      type: object
      properties:
        name:
          type: string
        street:
          type: string
        city:
          type: string
        stateIso:
          type: string
        countryIso:
          type: string
        phone:
          type: string
        bizUrl:
          type: string
        hideAddressInTemplate:
          type: boolean
    LocationCustomerInfoType:
      type: object
      properties:
        id:
          type: string
        customerName:
          type: string
        email:
          type: string
        phone:
          type: string
      required:
        - id
    SiteUrlType:
      type: object
      properties:
        name:
          type: string
        url:
          type: string
    CustomDomainType:
      type: object
      properties:
        domain:
          type: string
        parentId:
          type: string
        recordSets:
          type: array
          items:
            $ref: '#/components/schemas/RecordSetsType'
        status:
          $ref: '#/components/schemas/CustomDomainStatusEnum'
        contactOptions:
          type: array
          items:
            $ref: '#/components/schemas/ContactOptionType'
      required:
        - domain
        - parentId
        - recordSets
        - status
        - contactOptions
    RecordSetsType:
      type: object
      properties:
        recordType:
          type: string
        name:
          type: string
        value:
          type: string
        valid:
          type: boolean
    ContactOptionType:
      type: object
      properties:
        id:
          type: string
        displayName:
          type: string
        fromEmail:
          type: string
      required:
        - id
    CustomDomainsForAccountType:
      type: object
      properties:
        defaultSubdomain:
          type: string
        customDomains:
          type: array
          items:
            $ref: '#/components/schemas/CustomDomainType'
    CustomDomainsWithLocationsType:
      type: object
      properties:
        domain:
          type: string
        locationIds:
          type: array
          items:
            type: string
    CustomDomainLocationIdsForAccountType:
      type: object
      properties:
        locationIds:
          type: array
          items:
            type: string
    CustomTemplatesWithLocationsType:
      type: object
      properties:
        templateId:
          type: string
        templateName:
          type: string
        templateType:
          type: string
        template:
          type: string
        screening:
          type: boolean
        locationIds:
          type: array
          items:
            type: string
      required:
        - templateId
    ReviewCampaignAccountTemplateType:
      type: object
      properties:
        id:
          type: string
        templateType:
          type: string
        templateName:
          type: string
        template:
          type: string
        screening:
          type: boolean
      required:
        - id
    ReviewCampaignInfoDataType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        locationId:
          type: string
      required:
        - id
        - locationId
    ReviewCampaignTimezoneType:
      type: object
      properties:
        name:
          type: string
      required:
        - name
    ReviewCampaignQuotaType:
      type: object
      properties:
        name:
          type: string
        remainingUsage:
          type: integer
          format: int32
        totalUsage:
          type: integer
          format: int32
        resetDate:
          type: string
        resetValue:
          type: integer
          format: int32
    BulkUploadNotificationType:
      type: object
      properties:
        id:
          type: string
        message:
          type: string
        status:
          $ref: '#/components/schemas/BulkUploadNotificationStatusEnum'
        statusUpdatedAt:
          type: string
      required:
        - id
    DeliveryErrorType:
      type: object
      properties:
        totalErrors:
          type: integer
          format: int32
        details:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryErrorDetailType'
    DeliveryErrorDetailType:
      type: object
      properties:
        email:
          type: string
        phone:
          type: string
        status:
          type: string
        reason:
          type: string
    DomainStatusType:
      type: object
      properties:
        isFound:
          type: boolean
        status:
          type: string
      required:
        - isFound
    CampaignHistogramStatsType:
      type: object
      properties:
        buckets:
          type: array
          items:
            $ref: '#/components/schemas/ReviewCampaignStat'
    FetchWildCardType:
      type: object
      properties:
        key:
          type: string
        label:
          type: string
      required:
        - key
    FilePathType:
      type: object
      properties:
        url:
          type: string
      required:
        - url
    ArrayType:
      type: object
      properties:
        result:
          type: array
          items:
            type: string
    ReviewCampaignCustomerMessageEventsType:
      type: object
      properties:
        messageId:
          type: string
        eventType:
          type: string
        occurredAt:
          type: string
      required:
        - messageId
    MutationResultType:
      type: object
      description: (also defined by crawler)
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
      required:
        - success
    CreateReviewCampaignResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        reviewCampaign:
          $ref: '#/components/schemas/ReviewCampaignTypeNew'
      required:
        - success
    AddCustomersToCampaignResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        reviewCampaignCustomers:
          type: array
          items:
            $ref: '#/components/schemas/ReviewCampaignCustomerType'
      required:
        - success
    BulkArchiveCampaignCustomersResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        archivedCount:
          type: integer
          format: int32
      required:
        - success
    CreateReviewCampaignGlobalSettingResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        globalSetting:
          $ref: '#/components/schemas/ReviewCampaignGlobalSettingsType'
      required:
        - success
    UpdateReviewCampaignGlobalSettingsResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        globalSetting:
          $ref: '#/components/schemas/ReviewCampaignGlobalSettingsType'
      required:
        - success
    UpdateMessageResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
      required:
        - success
    UpdateSmsCreditsResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        credits:
          type: integer
          format: int32
      required:
        - success
    ReviewCampaignAccountTemplateResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        template:
          $ref: '#/components/schemas/ReviewCampaignAccountTemplateType'
      required:
        - success
    CreateCustomDomainResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        customDomain:
          $ref: '#/components/schemas/CustomDomainType'
      required:
        - success
    UpdateCustomDomainResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        customDomain:
          $ref: '#/components/schemas/CustomDomainType'
      required:
        - success
    UpdateCustomDomainStatusResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
        status:
          $ref: '#/components/schemas/CustomDomainStatusEnum'
      required:
        - success
    ArchiveCustomDomainResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
      required:
        - success
    AssignDomainToLocationsResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
      required:
        - success
    DissociateDomainFromLocationsResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
      required:
        - success
    TemplateToLocationsResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
      required:
        - success
    MarkNotificationAsReadResultType:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
      required:
        - success
    ReviewCampaignInput:
      type: object
      description: Input for the deprecated createReviewCampaign mutation.
      properties:
        locationId:
          type: integer
          format: int32
        screening:
          type: boolean
        locationCustomers:
          type: array
          items:
            $ref: '#/components/schemas/LocationCustomerInput'
        emailTemplate:
          $ref: '#/components/schemas/CampaignEmailTemplateInput'
        smsTemplate:
          $ref: '#/components/schemas/CampaignSmsTemplateInput'
        thankyouEmailTemplate:
          $ref: '#/components/schemas/ThankYouEmailTemplateInputType'
      required:
        - locationId
        - screening
        - locationCustomers
        - emailTemplate
        - smsTemplate
    LocationCustomerInput:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
        phone:
          type: string
        recipientId:
          type: integer
          format: int32
    CampaignEmailTemplateInput:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
        cta:
          type: string
      required:
        - subject
        - content
    CampaignSmsTemplateInput:
      type: object
      properties:
        content:
          type: string
      required:
        - content
    OpeningEmailTemplateInputType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
        cta:
          type: string
    SmsTemplateInputType:
      type: object
      properties:
        content:
          type: string
    FirstFollowUpTemplateInputType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
        schedule:
          type: string
    SecondFollowUpTemplateInputType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
        schedule:
          type: string
    UnlimitedFollowUpTemplateInputType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
        schedule:
          type: string
    ThankYouEmailTemplateInputType:
      type: object
      properties:
        subject:
          type: string
        heading:
          type: string
        content:
          type: string
    LandingPageTemplateInputType:
      type: object
      properties:
        heading:
          type: string
        content:
          type: string
    CustomDomainTemplateInput:
      type: object
      description: Input for creating or updating a custom domain.
      properties:
        customDomainId:
          type: string
        domain:
          type: string
        displayName:
          type: string
        fromEmail:
          type: string
      required:
        - domain
    SiteHashInputType:
      type: object
      properties:
        name:
          type: string
        url:
          type: string
      required:
        - name
        - url
    CrmReviewFunnelDateFilter:
      type: object
      properties:
        startDate:
          type: string
        endDate:
          type: string
    StatusType:
      type: string
      enum:
        - DRAFT
        - SCHEDULED
        - LAUNCHED
      description: Lifecycle states for a review campaign.
    CampaignTypeEnum:
      type: string
      enum:
        - EMAIL_SMS
        - REVIEW_FUNNEL
    CampaignScopeType:
      type: string
      enum:
        - SMS
        - EMAIL
        - SMS_AND_EMAIL
    CustomDomainStatusEnum:
      type: string
      enum:
        - VERIFIED
        - VERIFICATION_PENDING
        - INACTIVE
        - ACTIVE
    StarRatingEnum:
      type: string
      enum:
        - ONE_STAR
        - TWO_STAR
        - THREE_STAR
        - FOUR_STAR
        - FIVE_STAR
    FeedbackSortOrderEnum:
      type: string
      enum:
        - NEWEST_FIRST
        - OLDEST_FIRST
        - HIGHEST_RATED
        - LOWEST_RATED
    ResponseSourceEnum:
      type: string
      enum:
        - EMAIL
        - SMS
        - LANDING_PAGE
        - API
    BulkUploadNotificationStatusEnum:
      type: string
      enum:
        - PENDING
        - PROCESSING
        - COMPLETED
        - FAILED
    ContestsType:
      type: object
      description: Paged list of contest summaries.
      properties:
        contests:
          type: array
          items:
            $ref: '#/components/schemas/ContestSummaryType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
    ContestSummaryType:
      type: object
      description: Lightweight contest row for list views.
      properties:
        id:
          type: string
        name:
          type: string
        usersCount:
          type: integer
          format: int32
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationType'
        createdAt:
          type: string
        state:
          $ref: '#/components/schemas/ContestStateEnum'
      required:
        - id
        - name
        - usersCount
        - createdAt
        - state
    ContestDetailType:
      type: object
      description: Full contest detail including actions and ranks.
      properties:
        id:
          type: string
        name:
          type: string
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationType'
        duration:
          $ref: '#/components/schemas/ContestDurationType'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ContestAction'
        ranks:
          type: array
          items:
            type: integer
            format: int32
        createdAt:
          type: string
        state:
          $ref: '#/components/schemas/ContestStateEnum'
        giftcardProvider:
          type: string
        giftcardProviderUrl:
          type: string
      required:
        - id
        - name
        - createdAt
        - state
    ContestDurationType:
      type: object
      properties:
        startDate:
          type: string
        endDate:
          type: string
    ContestAction:
      type: object
      description: An action type enabled in a contest and the points it awards.
      properties:
        actionType:
          $ref: '#/components/schemas/ContestActionEnum'
        points:
          type: integer
          format: int32
      required:
        - actionType
    LocationLeaderboardType:
      type: object
      properties:
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LeaderLocationType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
    LeaderLocationType:
      type: object
      description: Location with leaderboard rank and points.
      properties:
        id:
          type: string
        name:
          type: string
        street:
          type: string
        street1:
          type: string
        city:
          type: string
        stateIso:
          type: string
        countryIso:
          type: string
        points:
          type: integer
          format: int32
        rank:
          type: integer
          format: int32
      required:
        - id
        - points
        - rank
    UserLeaderboardType:
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/LeaderUserType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
    LeaderUserType:
      type: object
      description: User with leaderboard rank and points.
      properties:
        id:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        points:
          type: integer
          format: int32
        rank:
          type: integer
          format: int32
      required:
        - id
        - points
        - rank
    CreateContestPayload:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    EditContestPayload:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    CreateContestDraftPayload:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    EditContestDraftPayload:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    ArchiveContestPayload:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
        contestId:
          type: string
    CreateContestInputType:
      type: object
      description: Input payload for createContest.
      properties:
        name:
          type: string
        duration:
          $ref: '#/components/schemas/ContestDurationInputType'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationInputType'
        runs:
          type: array
          items:
            $ref: '#/components/schemas/ContestRunCardType'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ContestActionType'
        draftId:
          type: string
        giftcardProvider:
          type: string
        giftcardProviderUrl:
          type: string
      required:
        - name
        - locations
        - runs
        - actions
    EditContestInputType:
      type: object
      properties:
        contestId:
          type: string
        name:
          type: string
        duration:
          $ref: '#/components/schemas/ContestDurationInputType'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationInputType'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ContestActionType'
      required:
        - contestId
        - name
        - locations
        - actions
    ContestDraftInputType:
      type: object
      properties:
        name:
          type: string
        duration:
          $ref: '#/components/schemas/ContestDurationInputType'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationInputType'
        runs:
          type: array
          items:
            $ref: '#/components/schemas/ContestRunCardType'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ContestActionType'
        giftcardProvider:
          type: string
        giftcardProviderUrl:
          type: string
      required:
        - name
    EditContestDraftInputType:
      type: object
      properties:
        draftId:
          type: string
        name:
          type: string
        duration:
          $ref: '#/components/schemas/ContestDurationInputType'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationInputType'
        runs:
          type: array
          items:
            $ref: '#/components/schemas/ContestRunCardType'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ContestActionType'
        giftcardProvider:
          type: string
        giftcardProviderUrl:
          type: string
      required:
        - draftId
        - name
    ArchiveContestInputType:
      type: object
      properties:
        contestId:
          type: string
      required:
        - contestId
    ContestFilterInputType:
      type: object
      description: Optional filters applied when listing contests.
      properties:
        state:
          type: array
          items:
            $ref: '#/components/schemas/ContestStateEnum'
    PageInputType:
      type: object
      properties:
        page:
          type: integer
          format: int32
    ContestDurationInputType:
      type: object
      properties:
        startDate:
          type: string
        endDate:
          type: string
    ContestActionType:
      type: object
      properties:
        actionType:
          $ref: '#/components/schemas/ContestActionEnum'
        points:
          type: integer
          format: int32
      required:
        - actionType
    ContestRunCardType:
      type: object
      properties:
        run:
          type: integer
          format: int32
        ranks:
          type: array
          items:
            $ref: '#/components/schemas/ContestRankInputType'
      required:
        - run
        - ranks
    ContestRankInputType:
      type: object
      properties:
        rank:
          type: integer
          format: int32
        giftcardCode:
          type: string
      required:
        - rank
    LocationInputType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        street:
          type: string
        street1:
          type: string
        city:
          type: string
        stateIso:
          type: string
        countryIso:
          type: string
      required:
        - id
    ContestStateEnum:
      type: string
      enum:
        - STOPPED
        - ACTIVE
        - SETUP_IN_PROGRESS
        - DRAFT
        - EXPIRED
        - CREATED
      description: Lifecycle state of a contest.
    ContestActionEnum:
      type: string
      enum:
        - REVIEW_RESPONSE
        - QUESTION_AND_ANSWER_RESPONSE
        - FEED_AND_HOLIDAY_CARD_ACTION
        - NEW_REVIEW_RECEIVED
        - RATINGS_UP
        - NEW_REVIEW_RECEIVED_4_5
      description: Point-earning action types available in a contest.
    AddOnSettingType:
      type: object
      description: The current state of an add-on for the caller's account.
      properties:
        enabled:
          type: boolean
        appliedEntity:
          $ref: '#/components/schemas/EntityTypeEnum'
    UpdateAccountAddOnPayload:
      type: object
      description: Result of an updateAccountAddOn mutation.
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    EntityTypeEnum:
      type: string
      enum:
        - LOCATION
        - ACCOUNT
        - NONE
      description: Entity level at which an add-on has been applied.
    UpdateAccountAddOnInput:
      type: object
      description: Input payload for updateAccountAddOn.
      properties:
        addOnId:
          type: string
        appliedEntity:
          $ref: '#/components/schemas/EntityTypeEnum'
      required:
        - addOnId
        - appliedEntity
    PagesDetails:
      type: object
      description: A landing page record.
      properties:
        pageId:
          type: integer
          format: int32
        accId:
          type: string
        locId:
          type: string
        status:
          type: boolean
        pageSlug:
          type: string
        pageName:
          type: string
        locName:
          type: string
        liveSiteUrl:
          type: string
        createdAt:
          type: string
        updatedAt:
          type: string
        createdBy:
          type: string
        updatedBy:
          type: string
        createdName:
          type: string
        totalCounts:
          type: integer
          format: int32
    PageObject:
      type: object
      description: Relay-node-wrapped page record (from SQLAlchemy).
      properties:
        id:
          type: string
        pageId:
          type: integer
          format: int32
        accId:
          type: string
        locId:
          type: string
        status:
          type: boolean
        pageSlug:
          type: string
        pageName:
          type: string
        locName:
          type: string
        liveSiteUrl:
          type: string
      required:
        - id
    CreatePagePayload:
      type: object
      description: Result of a createPage mutation.
      properties:
        pages:
          $ref: '#/components/schemas/PageObject'
    ReviewTaskType:
      type: object
      description: A grouped review task bucket (e.g. unresponded reviews).
      properties:
        type:
          type: string
        count:
          type: integer
          format: int32
        savedForLater:
          type: boolean
        date:
          type: string
          format: date-time
        critical:
          type: boolean
    ConnectionTaskType:
      type: object
      description: A grouped connection (channel re-auth, etc.) task bucket.
      properties:
        type:
          type: string
        count:
          type: integer
          format: int32
        savedForLater:
          type: boolean
        date:
          type: string
          format: date-time
        critical:
          type: boolean
    MiscellaneousTaskType:
      type: object
      description: Container for QnA and smart-action tasks.
      properties:
        qna:
          $ref: '#/components/schemas/QnaTaskType'
        smartActions:
          $ref: '#/components/schemas/SmartTaskType'
    QnaTaskType:
      type: object
      properties:
        date:
          type: string
          format: date-time
        locationCount:
          type: integer
          format: int32
        pendingQuestions:
          type: integer
          format: int32
        critical:
          type: boolean
    SmartTaskType:
      type: object
      properties:
        post:
          $ref: '#/components/schemas/PostTaskType'
        reviewAcquisition:
          $ref: '#/components/schemas/ReviewAcquisitionTaskType'
        autoRespond:
          $ref: '#/components/schemas/AutoRespondTaskType'
    PostTaskType:
      type: object
      properties:
        date:
          type: string
          format: date-time
        clicks:
          type: integer
          format: int32
        views:
          type: integer
          format: int32
        critical:
          type: boolean
        hasOldPosts:
          type: boolean
    ReviewAcquisitionTaskType:
      type: object
      properties:
        date:
          type: string
          format: date-time
        clickRate:
          type: integer
          format: int32
        openRate:
          type: integer
          format: int32
        critical:
          type: boolean
    AutoRespondTaskType:
      type: object
      properties:
        date:
          type: string
          format: date-time
        name:
          type: string
        critical:
          type: boolean
    MetricStatsType:
      type: object
      description: Bundle of metric stats returned by getMetricStats.
      properties:
        averageReviewRatingStats:
          $ref: '#/components/schemas/InteractionStatType'
        numberOfReviewsRespondedStats:
          $ref: '#/components/schemas/ReviewStatType'
        postStats:
          $ref: '#/components/schemas/PostStatType'
        insightsStats:
          $ref: '#/components/schemas/InsightsViewsStatsType'
    InteractionStatType:
      type: object
      properties:
        name:
          type: string
        value:
          type: number
          format: float
        delta:
          type: number
          format: float
    ReviewStatType:
      type: object
      properties:
        respondedReviews:
          type: integer
          format: int32
        totalReceivedReviews:
          type: integer
          format: int32
        responseRate:
          type: number
          format: float
    PostStatType:
      type: object
      properties:
        totalPostClicks:
          type: integer
          format: int32
        totalPostViews:
          type: integer
          format: int32
        totalPosts:
          type: integer
          format: int32
    InsightsViewsStatsType:
      type: object
      properties:
        currentViews:
          type: integer
          format: int32
        percentageDiffFromPreviousViews:
          type: number
          format: float
    UpsertTaskMutation:
      type: object
      description: Payload for the upsertTask mutation.
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    TaskInputType:
      type: object
      description: Payload describing a single task to upsert.
      properties:
        accountId:
          type: integer
          format: int32
        entityId:
          type: string
        entityType:
          type: string
        taskType:
          type: string
        type:
          type: string
        count:
          type: integer
          format: int32
        otherInfo:
          type: string
          description: Custom scalar JSONString
      required:
        - accountId
        - entityId
        - entityType
        - taskType
        - type
    TaskFilterType:
      type: object
      properties:
        taskTypes:
          type: array
          items:
            type: string
    StatsInputFilterType:
      type: object
      properties:
        startDate:
          type: string
        endDate:
          type: string
    JSONString:
      type: string
      description: Custom scalar JSONString
    ProfileType:
      type: object
      description: A paginated list of social profiles.
      properties:
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/SocialProfileSummaryType'
        pageInfo:
          $ref: '#/components/schemas/PageInfoType'
    SocialProfileSummaryType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        accountId:
          type: integer
          format: int32
        archived:
          type: boolean
        timezone:
          type: string
        platforms:
          type: array
          items:
            $ref: '#/components/schemas/PlatformEnum'
      required:
        - id
    ConnectInfoType:
      type: object
      properties:
        connectUrl:
          type: string
        state:
          type: string
    SocialConnectInfoType:
      type: object
      properties:
        channels:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostConnectedChannelInfoType'
    SocialPostConnectedChannelInfoType:
      type: object
      properties:
        id:
          type: string
        platform:
          $ref: '#/components/schemas/PlatformEnum'
        connectedAccountId:
          type: string
        status:
          type: string
      required:
        - id
    SocialPostMetaType:
      type: object
      properties:
        posts:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaPostType'
        total:
          type: integer
          format: int32
        summary:
          $ref: '#/components/schemas/SocialPostListSummaryType'
    SocialPostListSummaryType:
      type: object
      properties:
        scheduled:
          type: integer
          format: int32
        published:
          type: integer
          format: int32
        drafts:
          type: integer
          format: int32
        failed:
          type: integer
          format: int32
    SocialMediaPostType:
      type: object
      properties:
        id:
          type: string
        content:
          type: string
        status:
          $ref: '#/components/schemas/SocialMediaPostStatusEnum'
        scheduledAt:
          type: string
          format: date-time
        socialProfileId:
          type: string
      required:
        - id
    SocialMediaPostDetailsType:
      type: object
      properties:
        id:
          type: string
        post:
          $ref: '#/components/schemas/SocialMediaPostType'
        content:
          $ref: '#/components/schemas/SocialMediaPostContentType'
        channels:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostConnectedChannelInfoType'
      required:
        - id
    SocialMediaPostContentType:
      type: object
      properties:
        text:
          type: string
        mediaUrls:
          type: array
          items:
            type: string
    PostInsightsCommentsType:
      type: object
      properties:
        likes:
          type: integer
          format: int32
        comments:
          type: integer
          format: int32
        shares:
          type: integer
          format: int32
        impressions:
          type: integer
          format: int32
    SocialMediaPostActivityType:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/SocialMediaPostActionEnum'
        actor:
          type: string
        createdAt:
          type: string
          format: date-time
    SocialMediaAnalyticsCardType:
      type: object
      properties:
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaMetricsCardType'
    SocialMediaMetricsCardType:
      type: object
      properties:
        name:
          type: string
        value:
          type: number
          format: float
        delta:
          type: number
          format: float
    BrandEngagementScoreConfigType:
      type: object
      properties:
        socialProfileId:
          type: string
        targets:
          type: array
          items:
            $ref: '#/components/schemas/BrandTargetType'
        summary:
          $ref: '#/components/schemas/BrandEngagementScoreSummaryType'
    BrandEngagementScoreSummaryType:
      type: object
      properties:
        score:
          type: number
          format: float
        grade:
          type: string
    BrandTargetType:
      type: object
      properties:
        name:
          type: string
        value:
          type: number
          format: float
        type:
          $ref: '#/components/schemas/BrandTargetTypeEnum'
    SocialMediaDetailedAnalyticsType:
      type: object
      properties:
        cards:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaDetailedMetricsCardType'
    SocialMediaDetailedMetricsCardType:
      type: object
      properties:
        name:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaDetailedMetricFieldType'
    SocialMediaDetailedMetricFieldType:
      type: object
      properties:
        name:
          type: string
        values:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaDetailedMetricValueType'
    SocialMediaDetailedMetricValueType:
      type: object
      properties:
        date:
          type: string
        value:
          type: number
          format: float
    AnalyticsPostsByDayAndPublisherType:
      type: object
      properties:
        posts:
          type: array
          items:
            $ref: '#/components/schemas/PostByDayAndPublisherType'
        total:
          type: integer
          format: int32
    PostByDayAndPublisherType:
      type: object
      properties:
        date:
          type: string
        publisher:
          type: string
        views:
          type: integer
          format: int32
        clicks:
          type: integer
          format: int32
    RepostRecommendationsType:
      type: object
      properties:
        socialPostId:
          type: string
        score:
          type: number
          format: float
        reason:
          type: string
    SocialMediaShortenUrlType:
      type: object
      properties:
        originalUrl:
          type: string
        shortenedUrl:
          type: string
    SocialProfileCompletionSummaryType:
      type: object
      properties:
        totalSteps:
          type: integer
          format: int32
        completedSteps:
          type: integer
          format: int32
        nudges:
          type: array
          items:
            $ref: '#/components/schemas/SocialProfileCompletionNudgeCardType'
    SocialProfileCompletionNudgeCardType:
      type: object
      properties:
        title:
          type: string
        description:
          type: string
        actionUrl:
          type: string
    SocialPostsOverviewType:
      type: object
      properties:
        totalPosts:
          type: integer
          format: int32
        postsByDate:
          type: array
          items:
            $ref: '#/components/schemas/PostsOverviewByDateType'
    PostsOverviewByDateType:
      type: object
      properties:
        date:
          type: string
        count:
          type: integer
          format: int32
    DashboardTaskListType:
      type: object
      properties:
        tasks:
          type: array
          items:
            $ref: '#/components/schemas/DashboardTasksType'
    DashboardTasksType:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/DashboardTaskTypesEnum'
        title:
          type: string
        description:
          type: string
        hidden:
          type: boolean
      required:
        - id
    AiContentRecommendationType:
      type: object
      properties:
        content:
          type: string
        contentGeneratorId:
          type: string
    HashtagListType:
      type: object
      properties:
        hashtags:
          type: array
          items:
            $ref: '#/components/schemas/HashtagType'
    HashtagType:
      type: object
      properties:
        tag:
          type: string
        score:
          type: number
          format: float
    ObservancesType:
      type: object
      properties:
        date:
          type: string
        observances:
          type: array
          items:
            type: string
    TopPlatformPostsType:
      type: object
      properties:
        platform:
          $ref: '#/components/schemas/PlatformEnum'
        posts:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaPostType'
    TrialDurationType:
      type: object
      properties:
        daysRemaining:
          type: integer
          format: int32
        totalDays:
          type: integer
          format: int32
        status:
          type: string
    SocialProfilesCountType:
      type: object
      properties:
        total:
          type: integer
          format: int32
        active:
          type: integer
          format: int32
        archived:
          type: integer
          format: int32
    SocialMediaAiPostType:
      type: object
      properties:
        id:
          type: string
        content:
          type: string
        category:
          type: string
        day:
          type: string
      required:
        - id
    AccountLimitsType:
      type: object
      properties:
        maxProfiles:
          type: integer
          format: int32
        maxPostsPerMonth:
          type: integer
          format: int32
        maxUsers:
          type: integer
          format: int32
    UserBrandsType:
      type: object
      properties:
        userId:
          type: integer
          format: int32
        brands:
          type: array
          items:
            $ref: '#/components/schemas/SocialProfileSummaryType'
    SocialRoleInfoType:
      type: object
      properties:
        role:
          type: string
        permissions:
          type: array
          items:
            type: string
    SharableLinkType:
      type: object
      properties:
        id:
          type: string
        sharableId:
          type: string
        url:
          type: string
        archived:
          type: boolean
      required:
        - id
    SocialMediaPostDetails:
      type: object
      properties:
        socialPostId:
          type: string
        platform:
          $ref: '#/components/schemas/PlatformEnum'
        metrics:
          $ref: '#/components/schemas/SocialMediaMetricsCardType'
    BulkAddSocialUsersTaskType:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        createdAt:
          type: string
          format: date-time
        totalRows:
          type: integer
          format: int32
        successCount:
          type: integer
          format: int32
        failureCount:
          type: integer
          format: int32
      required:
        - id
    SocialMediaAdAccountDetailsType:
      type: object
      properties:
        adAccountId:
          type: string
        name:
          type: string
        currency:
          type: string
    FBAdsGeoLocationOutputType:
      type: object
      properties:
        locations:
          type: array
          items:
            $ref: '#/components/schemas/FBAdsGeoLocationType'
    FBAdsGeoLocationType:
      type: object
      properties:
        key:
          type: string
        name:
          type: string
        type:
          type: string
    FBAdsDemographicOutputType:
      type: object
      properties:
        demographics:
          type: array
          items:
            $ref: '#/components/schemas/FBAdsDemographicType'
    FBAdsDemographicType:
      type: object
      properties:
        key:
          type: string
        name:
          type: string
    SocialMediaBoostedPostAdInfoType:
      type: object
      properties:
        adRunId:
          type: integer
          format: int32
        budget:
          type: number
          format: float
        status:
          type: string
    SocialMediaBoostedPostAdInfoForEditType:
      type: object
      properties:
        requestId:
          type: string
        budget:
          type: number
          format: float
    SocialMediaPaidPostsType:
      type: object
      properties:
        posts:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaPostType'
        total:
          type: integer
          format: int32
    SocialMediaAdsEstimatedAudienceType:
      type: object
      properties:
        minAudience:
          type: integer
          format: int32
        maxAudience:
          type: integer
          format: int32
    SocialBrandSavedAudienceType:
      type: object
      properties:
        audienceId:
          type: string
        audience:
          type: string
          description: Custom scalar JSONString
    SocialMediaAdsPreviewType:
      type: object
      properties:
        format:
          type: string
        previewUrl:
          type: string
    MetadataForLinkType:
      type: object
      properties:
        url:
          type: string
        title:
          type: string
        description:
          type: string
        imageUrl:
          type: string
    AdAccountForBrandManagementType:
      type: object
      properties:
        adAccountId:
          type: string
        name:
          type: string
        brandId:
          type: string
    TimezoneEntityType:
      type: object
      properties:
        entityId:
          type: string
        timezone:
          $ref: '#/components/schemas/TimezoneType'
    TimezoneType:
      type: object
      properties:
        name:
          type: string
        offset:
          type: string
    SocialAiContentPlagiarismForPostType:
      type: object
      properties:
        score:
          type: number
          format: float
        matches:
          type: array
          items:
            type: string
    AdInsightsDemographicsBreakdownType:
      type: object
      properties:
        breakdowns:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaMetricsCardType'
    AdInsightsPlacementsBreakdownType:
      type: object
      properties:
        breakdowns:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaMetricsCardType'
    PostIdeasType:
      type: object
      properties:
        ideas:
          type: array
          items:
            type: string
    SocialEmailTemplateCustomizationType:
      type: object
      properties:
        logoUrl:
          type: string
        primaryColor:
          type: string
        fromName:
          type: string
    CreateSocialProfileMutation:
      type: object
      properties:
        success:
          type: boolean
        socialProfile:
          $ref: '#/components/schemas/SocialProfileSummaryType'
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateSocialProfileMutation:
      type: object
      properties:
        success:
          type: boolean
        socialProfile:
          $ref: '#/components/schemas/SocialProfileSummaryType'
        error:
          $ref: '#/components/schemas/ErrorType'
    CreateSocialMediaPost:
      type: object
      properties:
        success:
          type: boolean
        socialPostId:
          type: string
        error:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    UpdateSocialMediaPost:
      type: object
      properties:
        success:
          type: boolean
        socialPostId:
          type: string
        error:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    ArchiveSocialProfile:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UnarchiveSocialProfile:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    DisconnectSocialConnectedChannel:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    ArchiveScheduledPost:
      type: object
      properties:
        success:
          type: boolean
        socialPostId:
          type: string
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdatePostAutomationInSocialPost:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateEngagementScoreConfigMutation:
      type: object
      properties:
        success:
          type: boolean
        config:
          $ref: '#/components/schemas/BrandEngagementScoreConfigType'
        error:
          $ref: '#/components/schemas/ErrorType'
    CreateFirstBrand:
      type: object
      properties:
        success:
          type: boolean
        socialProfile:
          $ref: '#/components/schemas/SocialProfileSummaryType'
        error:
          $ref: '#/components/schemas/ErrorType'
    HideDashboardTaskMutation:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    AddBrandHashtags:
      type: object
      properties:
        success:
          type: boolean
        hashtags:
          type: array
          items:
            $ref: '#/components/schemas/HashtagType'
        error:
          $ref: '#/components/schemas/ErrorType'
    RequestAddOnsMutation:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateTrialTrackerMutation:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateTrialTrackerStatus:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UserBrandMappingMutation:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    CreateSharableLinkMutation:
      type: object
      properties:
        success:
          type: boolean
        link:
          $ref: '#/components/schemas/SharableLinkType'
        error:
          $ref: '#/components/schemas/ErrorType'
    ArchiveSharableLinkMutation:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    SendSharableEmailMutation:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    BulkAddSocialUsers:
      type: object
      properties:
        success:
          type: boolean
        taskId:
          type: string
        error:
          $ref: '#/components/schemas/ErrorType'
    HideSocialUserBulkUpload:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    CreateBoostPostMutation:
      type: object
      properties:
        success:
          type: boolean
        adRunId:
          type: integer
          format: int32
        error:
          $ref: '#/components/schemas/ErrorType'
    StopBoostPostMutation:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateAddOnRequest:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    CreateAdCreativeForPublishedPosts:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    SelectAdAccountForConnectedUser:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    EditBoostPostMutation:
      type: object
      properties:
        success:
          type: boolean
        adRunId:
          type: integer
          format: int32
        error:
          $ref: '#/components/schemas/ErrorType'
    SaveNewsletterResponse:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateSocialAccountConfigMutation:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateSocialEmailTemplateSettingsMutation:
      type: object
      properties:
        success:
          type: boolean
        settings:
          $ref: '#/components/schemas/SocialEmailTemplateCustomizationType'
        error:
          $ref: '#/components/schemas/ErrorType'
    SaveBrandAudience:
      type: object
      properties:
        success:
          type: boolean
        audienceId:
          type: string
        error:
          $ref: '#/components/schemas/ErrorType'
    UploadCsvMutation:
      type: object
      properties:
        success:
          type: boolean
        taskId:
          type: string
        error:
          $ref: '#/components/schemas/ErrorType'
    SocialProfileFilterInputType:
      type: object
      properties:
        search:
          type: string
        archived:
          type: boolean
        platforms:
          type: array
          items:
            $ref: '#/components/schemas/PlatformEnum'
        accountId:
          type: integer
          format: int32
    SocialPostListFilterInputType:
      type: object
      properties:
        status:
          type: array
          items:
            $ref: '#/components/schemas/SocialMediaPostStatusEnum'
        platform:
          type: array
          items:
            $ref: '#/components/schemas/PlatformEnum'
        fromDate:
          type: string
        toDate:
          type: string
    SocialMediaAnalyticsFilterInputType:
      type: object
      properties:
        startDate:
          type: string
        endDate:
          type: string
        platforms:
          type: array
          items:
            $ref: '#/components/schemas/PlatformEnum'
    AnalyticsDayPublisherFiltersInputType:
      type: object
      properties:
        startDate:
          type: string
        endDate:
          type: string
        publisher:
          type: string
    AiContentRecommendationInputType:
      type: object
      description: (also defined by llm-interface)
      properties:
        prompt:
          type: string
        tone:
          type: string
        creativity:
          $ref: '#/components/schemas/CreativityEnum'
        contentLength:
          $ref: '#/components/schemas/ContentLengthEnum'
    SocialMediaPaidPostsInputType:
      type: object
      properties:
        startDate:
          type: string
        endDate:
          type: string
        status:
          type: string
    EstimatedAudienceInputType:
      type: object
      properties:
        countries:
          type: array
          items:
            type: string
        ageMin:
          type: integer
          format: int32
        ageMax:
          type: integer
          format: int32
        genders:
          type: array
          items:
            $ref: '#/components/schemas/SocialGenderEnum'
    CreateSocialProfileInputType:
      type: object
      properties:
        name:
          type: string
        accountId:
          type: integer
          format: int32
        timezone:
          type: string
      required:
        - name
    UpdateSocialProfileInputType:
      type: object
      properties:
        socialProfileId:
          type: string
        name:
          type: string
        timezone:
          type: string
      required:
        - socialProfileId
    CreateSocialMediaPostInputType:
      type: object
      properties:
        socialProfileId:
          type: string
        content:
          type: string
        mediaUrls:
          type: array
          items:
            type: string
        scheduledAt:
          type: string
          format: date-time
        channelIds:
          type: array
          items:
            type: string
        action:
          $ref: '#/components/schemas/SocialMediaPostActionEnum'
      required:
        - socialProfileId
    UpdateSocialMediaPostInputType:
      type: object
      properties:
        socialPostId:
          type: string
        content:
          type: string
        mediaUrls:
          type: array
          items:
            type: string
        scheduledAt:
          type: string
          format: date-time
      required:
        - socialPostId
    ArchiveSocialProfileInputType:
      type: object
      properties:
        socialProfileId:
          type: string
      required:
        - socialProfileId
    ArchiveSocialScheduledPostInputType:
      type: object
      properties:
        socialPostId:
          type: string
      required:
        - socialPostId
    DisconnectSocialConnectedChannelInputType:
      type: object
      properties:
        socialConnectedChannelId:
          type: string
      required:
        - socialConnectedChannelId
    UpdatePostAutomationInSocialPostInputType:
      type: object
      properties:
        socialPostId:
          type: string
        automationId:
          type: string
      required:
        - socialPostId
    EngagementScoreInputType:
      type: object
      properties:
        socialProfileId:
          type: string
        targets:
          type: string
          description: Custom scalar JSONString
      required:
        - socialProfileId
    HideDashboardTaskInputType:
      type: object
      properties:
        taskId:
          type: string
        socialProfileId:
          type: string
      required:
        - taskId
    AddBrandHashtagsInputType:
      type: object
      properties:
        socialProfileId:
          type: string
        hashtags:
          type: array
          items:
            type: string
      required:
        - socialProfileId
    AddOnRequestInputType:
      type: object
      properties:
        accountId:
          type: integer
          format: int32
        addOnType:
          $ref: '#/components/schemas/AddOnTypeEnum'
        notes:
          type: string
    UserBrandMappingInputType:
      type: object
      properties:
        userId:
          type: integer
          format: int32
        socialProfileIds:
          type: array
          items:
            type: string
      required:
        - userId
    SharableLinkInputType:
      type: object
      properties:
        socialProfileId:
          type: string
        context:
          type: string
          description: Custom scalar JSONString
      required:
        - socialProfileId
    SharableEmailInputType:
      type: object
      properties:
        sharableId:
          type: string
        recipients:
          type: array
          items:
            type: string
        message:
          type: string
      required:
        - sharableId
    BoostPostInputType:
      type: object
      properties:
        socialPostId:
          type: string
        connectedAccountId:
          type: string
        adAccountId:
          type: string
        budget:
          type: number
          format: float
        durationDays:
          type: integer
          format: int32
        targeting:
          type: string
          description: Custom scalar JSONString
      required:
        - socialPostId
    SmAdCreativeInputType:
      type: object
      properties:
        socialPostIds:
          type: array
          items:
            type: string
        adAccountId:
          type: string
    UpdateSocialEmailTemplateSettingsInputType:
      type: object
      properties:
        logoUrl:
          type: string
        primaryColor:
          type: string
        fromName:
          type: string
    UploadCsvInputType:
      type: object
      properties:
        fileUrl:
          type: string
        accountId:
          type: integer
          format: int32
        type:
          type: string
      required:
        - fileUrl
    PlatformEnum:
      type: string
      enum:
        - FACEBOOK
        - INSTAGRAM
        - TWITTER
        - LINKEDIN
        - PINTEREST
      description: Supported social platforms.
    SocialMediaPostStatusEnum:
      type: string
      enum:
        - DRAFT
        - SCHEDULED
        - PUBLISHING
        - PUBLISHED
        - FAILED
        - ARCHIVED
    SocialMediaPostActionEnum:
      type: string
      enum:
        - PUBLISH_NOW
        - SCHEDULE
        - SAVE_DRAFT
    DashboardTaskTypesEnum:
      type: string
      enum:
        - CONNECT_CHANNEL
        - CREATE_POST
        - COMPLETE_PROFILE
        - INVITE_USER
    BrandTargetTypeEnum:
      type: string
      enum:
        - ENGAGEMENT_RATE
        - FOLLOWER_GROWTH
        - POST_FREQUENCY
    AdLocationsEnum:
      type: string
      enum:
        - COUNTRY
        - REGION
        - CITY
        - ZIP
    AdDemographicsEnum:
      type: string
      enum:
        - INTERESTS
        - BEHAVIORS
        - DEMOGRAPHICS
    SocialGenderEnum:
      type: string
      enum:
        - MALE
        - FEMALE
        - OTHER
    DemographicsMetricEnum:
      type: string
      enum:
        - IMPRESSIONS
        - REACH
        - ENGAGEMENT
    DeviceEnum:
      type: string
      enum:
        - MOBILE
        - DESKTOP
        - TABLET
    AddOnTypeEnum:
      type: string
      enum:
        - ADDITIONAL_PROFILES
        - BOOST_BUDGET
        - AI_CREDITS
    CreativityEnum:
      type: string
      enum:
        - LOW
        - MEDIUM
        - HIGH
      description: (also defined by llm-interface)
    ContentLengthEnum:
      type: string
      enum:
        - SHORT
        - MEDIUM
        - LONG
      description: (also defined by llm-interface)
    BrandType:
      type: object
      description: A GBM brand, one per Synup account.
      properties:
        id:
          type: string
        name:
          type: string
        brandId:
          type: string
        brandLocations:
          type: array
          items:
            $ref: '#/components/schemas/LocationAgentType'
        accountId:
          type: integer
          format: int32
        agents:
          type: array
          items:
            $ref: '#/components/schemas/AgentType'
        locationIds:
          type: array
          items:
            type: string
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - id
    AgentType:
      type: object
      description: A GBM agent owned by a brand.
      properties:
        id:
          type: string
        name:
          type: string
        agentId:
          type: string
        brand:
          $ref: '#/components/schemas/BrandType'
        locationIds:
          type: array
          items:
            type: string
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - id
    LocationAgentType:
      type: object
      description: Join row between an agent and a Synup location.
      properties:
        id:
          type: string
        brand:
          $ref: '#/components/schemas/BrandType'
        agent:
          $ref: '#/components/schemas/AgentType'
        locationId:
          type: integer
          format: int32
        placeId:
          type: string
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - id
    AgentVerificationType:
      type: object
      properties:
        status:
          type: string
        agent:
          $ref: '#/components/schemas/AgentType'
    LocationDataType:
      type: object
      properties:
        name:
          type: string
        category:
          type: string
        phoneNumber:
          type: string
        storeId:
          type: string
        address:
          type: string
        city:
          type: string
        postalCode:
          type: string
        stateIso:
          type: string
        countryIso:
          type: string
    ConversationObject:
      type: object
      properties:
        id:
          type: string
        externalConversationId:
          type: string
        userDisplayName:
          type: string
        userDisplayImage:
          type: string
        userLocale:
          type: string
        unreadCount:
          type: string
        locationId:
          type: string
        lastMessage:
          type: string
        updatedAt:
          type: string
        displayColor:
          type: string
        location:
          $ref: '#/components/schemas/LocationDataType'
    ConversationListType:
      type: object
      properties:
        conversation:
          type: array
          items:
            $ref: '#/components/schemas/ConversationObject'
        totalConversationUnreadCount:
          type: integer
          format: int32
        hasNextPage:
          type: boolean
    LocationPlaceType:
      type: object
      properties:
        locationId:
          type: string
        placeId:
          type: string
    MessageType:
      type: object
      properties:
        messageId:
          type: string
        messageType:
          type: string
        text:
          type: string
        imageUrl:
          type: string
    UserInfoType:
      type: object
      properties:
        displayName:
          type: string
        userType:
          type: string
        userId:
          type: integer
          format: int32
        userEmail:
          type: string
    AgentInfoType:
      type: object
      properties:
        displayName:
          type: string
    MessageObjectType:
      type: object
      properties:
        messageMeta:
          type: boolean
        accountId:
          type: integer
          format: int32
        conversationId:
          type: string
        messageId:
          type: string
        createdAt:
          type: string
        sentAt:
          type: string
        sendTime:
          type: string
        location:
          $ref: '#/components/schemas/LocationPlaceType'
        userInfo:
          $ref: '#/components/schemas/UserInfoType'
        message:
          $ref: '#/components/schemas/MessageType'
    MessageListType:
      type: object
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageObjectType'
        agent:
          $ref: '#/components/schemas/AgentInfoType'
        hasNext:
          type: boolean
    RenderTextWildcardsForConversation:
      type: object
      properties:
        renderedText:
          type: string
    TemplateCategoryType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        accountId:
          type: integer
          format: int32
        type:
          type: string
        publisher:
          type: string
        locationIds:
          type: array
          items:
            type: string
        archivedAt:
          type: boolean
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - id
    TemplateListType:
      type: object
      properties:
        id:
          type: string
        accountId:
          type: integer
          format: int32
        text:
          type: string
        categoryIds:
          $ref: '#/components/schemas/TemplateCategoryType'
        locationIds:
          type: array
          items:
            type: string
        createdBy:
          type: string
        archivedAt:
          type: boolean
        createdAt:
          type: string
        updatedAt:
          type: string
        count:
          type: integer
          format: int32
        locationsData:
          type: string
          description: Custom scalar JSONString
      required:
        - id
    TemplateMenuType:
      type: object
      properties:
        text:
          type: string
          description: Custom scalar JSONString
    TemplateResolutionType:
      type: object
      properties:
        id:
          type: string
        templateIdentifier:
          type: string
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - id
    CreateTemplatePayload:
      type: object
      description: 'Return type of createTemplate. Note: the `templates` field is a single template despite its name.'
      properties:
        templates:
          $ref: '#/components/schemas/TemplateListType'
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateTemplatePayload:
      type: object
      properties:
        templates:
          $ref: '#/components/schemas/TemplateListType'
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    ArchiveTemplatePayload:
      type: object
      properties:
        template:
          $ref: '#/components/schemas/TemplateListType'
    CreateTemplateCategoryPayload:
      type: object
      properties:
        templates:
          $ref: '#/components/schemas/TemplateCategoryType'
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateTemplateCategoryPayload:
      type: object
      properties:
        templates:
          $ref: '#/components/schemas/TemplateCategoryType'
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    ArchiveTemplateCategoryPayload:
      type: object
      properties:
        template:
          $ref: '#/components/schemas/TemplateCategoryType'
    CreateTemplatesResolutionPayload:
      type: object
      properties:
        templates:
          $ref: '#/components/schemas/TemplateResolutionType'
    BulkUploadTemplatePayload:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    PostGmbMessagePayload:
      type: object
      properties:
        messageId:
          type: string
    CreateBrandPayload:
      type: object
      properties:
        brand:
          $ref: '#/components/schemas/BrandType'
    CreateAgentPayload:
      type: object
      properties:
        agent:
          $ref: '#/components/schemas/AgentType'
    RequestAgentVerificationPayload:
      type: object
      properties:
        agent:
          $ref: '#/components/schemas/AgentType'
        status:
          $ref: '#/components/schemas/AgentVerificationType'
    AddAgentLocationsPayload:
      type: object
      properties:
        locationAgent:
          $ref: '#/components/schemas/LocationAgentType'
    CreateBrandInputType:
      type: object
      properties:
        name:
          type: string
        accountId:
          type: integer
          format: int32
      required:
        - name
        - accountId
    CreateAgentInputType:
      type: object
      properties:
        brand:
          type: integer
          format: int32
        name:
          type: string
      required:
        - brand
        - name
    AgentVerificationInputType:
      type: object
      properties:
        agent:
          type: integer
          format: int32
      required:
        - agent
    AddAgentLocationsInputType:
      type: object
      properties:
        brand:
          type: integer
          format: int32
        agent:
          type: integer
          format: int32
        locationId:
          type: integer
          format: int32
        placeId:
          type: string
      required:
        - brand
        - agent
        - locationId
    CtaType:
      type: object
      properties:
        type:
          type: string
        url:
          type: string
    AiPostForLocationType:
      type: object
      description: A single AI-generated social post suggestion for a location.
      properties:
        message:
          type: string
        image:
          type: string
        header:
          type: string
        cta:
          $ref: '#/components/schemas/CtaType'
    UpdatedContentRecommendationType:
      type: object
      properties:
        content:
          type: string
    LocationDescriptionType:
      type: object
      properties:
        description:
          type: string
    CalendarEventPostType:
      type: object
      properties:
        title:
          type: string
        date:
          type: string
        description:
          type: string
        image:
          type: string
        url:
          type: string
        cta:
          $ref: '#/components/schemas/CtaType'
    ObservancesPostType:
      type: object
      properties:
        events:
          type: array
          items:
            $ref: '#/components/schemas/CalendarEventPostType'
    ReviewSuggestionType:
      type: object
      properties:
        text:
          type: string
        responder:
          type: string
    AiKeywordForLocation:
      type: object
      properties:
        keywords:
          type: array
          items:
            type: string
    AiListingData:
      type: object
      description: Raw result from a single AI provider (OpenAI / Gemini / Perplexity).
      properties:
        url:
          type: string
        prompt:
          type: string
        response:
          type: string
        usage:
          type: string
    AiLocationAvailability:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/AiListingData'
    BusinessAdviceFromAi:
      type: object
      properties:
        header:
          type: string
        tips:
          type: array
          items:
            type: string
        footer:
          type: string
        usage:
          type: string
    TranslateText:
      type: object
      properties:
        translation:
          type: string
    SupportedCrmResponse:
      type: object
      description: A CRM / mail-parser provider that can be connected.
      properties:
        crmName:
          $ref: '#/components/schemas/CrmProviderEnum'
        vendorName:
          type: string
        crmLogo:
          type: string
        vendorCrmId:
          type: integer
          format: int32
        publicKey:
          type: string
        connected:
          type: boolean
        crmCategory:
          $ref: '#/components/schemas/CrmCategoryEnum'
        supported:
          type: boolean
    ConnectedCrmDetails:
      type: object
      description: A single CRM connection record with import and mapping state.
      properties:
        connectedCrmId:
          type: integer
          format: int32
        vendorCrmId:
          type: integer
          format: int32
        crmName:
          $ref: '#/components/schemas/CrmProviderEnum'
        status:
          $ref: '#/components/schemas/CrmConnectionStatusEnum'
        importStatus:
          $ref: '#/components/schemas/CrmImportStatusEnum'
        importConfig:
          $ref: '#/components/schemas/CrmImportConfig'
        numberOfRecordsImported:
          type: integer
          format: int32
        count:
          type: integer
          format: int32
        publicKey:
          type: string
        profileKey:
          type: string
        locationMappingStatus:
          $ref: '#/components/schemas/CrmLocationMappingStatusEnum'
        contactMappingStatus:
          $ref: '#/components/schemas/CrmContactMappingStatusEnum'
        entityId:
          type: string
        entityType:
          $ref: '#/components/schemas/CrmEntityTypeEnum'
        entityName:
          type: string
        metaResponse:
          type: array
          items:
            $ref: '#/components/schemas/CrmDimensionPersistedValue'
        mailParserConfig:
          $ref: '#/components/schemas/MailParserLocationDataInfo'
        showDateFilter:
          type: boolean
        error:
          type: string
    CrmImportConfig:
      type: object
      properties:
        entityId:
          type: string
        entityType:
          $ref: '#/components/schemas/CrmEntityTypeEnum'
        entityName:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        importConfiguration:
          $ref: '#/components/schemas/CrmImportConfigurationEnum'
        autoFetch:
          type: boolean
        connectionDate:
          type: string
        locationMappingStatus:
          $ref: '#/components/schemas/CrmLocationMappingStatusEnum'
        contactMappingStatus:
          $ref: '#/components/schemas/CrmContactMappingStatusEnum'
    ConnectedCrmInfo:
      type: object
      properties:
        connected:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedCrmDetails'
        totalCount:
          type: integer
          format: int32
    ConnectedCrmMeta:
      type: object
      properties:
        crmGroupedData:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedCrmDetails'
        pageInfo:
          $ref: '#/components/schemas/CrmPageInfo'
    CrmPageInfo:
      type: object
      properties:
        total:
          type: integer
          format: int32
        hasNextPage:
          type: boolean
    CrmRecipientsMeta:
      type: object
      properties:
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/CrmRecipient'
        pageInfo:
          $ref: '#/components/schemas/CrmPageInfo'
    CrmRecipient:
      type: object
      properties:
        id:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        phone:
          type: string
        source:
          $ref: '#/components/schemas/RecipientSourceEnum'
        contactType:
          $ref: '#/components/schemas/CrmContactTypeEnum'
        importedOn:
          type: string
        locationId:
          type: string
        tags:
          type: string
        connectedCrmId:
          type: integer
          format: int32
    CrmMappingFields:
      type: object
      properties:
        locationFields:
          type: array
          items:
            type: string
        contactFields:
          type: array
          items:
            type: string
    UserFieldMapping:
      type: object
      properties:
        field:
          type: string
        values:
          type: array
          items:
            type: string
    CrmMappingDetails:
      type: object
      properties:
        locationMapping:
          $ref: '#/components/schemas/CrmMappingForConnectedOutput'
        contactMapping:
          $ref: '#/components/schemas/CrmMappingForConnectedOutput'
    CrmMappingForConnectedOutput:
      type: object
      properties:
        synupField:
          type: string
        crmField:
          type: string
        mappingType:
          $ref: '#/components/schemas/CrmMappingEnum'
    ConnectedCrmCountDetails:
      type: object
      properties:
        notMapped:
          type: integer
          format: int32
    CrmDimensionsDetails:
      type: object
      properties:
        dimensions:
          type: array
          items:
            type: string
    CrmDimensionValues:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/CrmDimensionPersistedValue'
    CrmDimensionPersistedValue:
      type: object
      properties:
        dimension:
          type: string
        value:
          type: string
        label:
          type: string
    MailParserLocationDataInfo:
      type: object
      properties:
        locationId:
          type: string
        archived:
          type: boolean
        parserRules:
          type: string
    ConnectCrmPayload:
      type: object
      properties:
        connectedCrm:
          $ref: '#/components/schemas/ConnectedCrmDetails'
        error:
          $ref: '#/components/schemas/ErrorType'
    ConnectMailParserPayload:
      type: object
      properties:
        connectedCrm:
          $ref: '#/components/schemas/ConnectedCrmDetails'
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateImportStatusPayload:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    MailParserConfigurationPayload:
      type: object
      properties:
        config:
          $ref: '#/components/schemas/MailParserLocationDataInfo'
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateCrmInfoPayload:
      type: object
      properties:
        connectedCrm:
          $ref: '#/components/schemas/ConnectedCrmDetails'
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateAutoFetchRecipientsPayload:
      type: object
      properties:
        autoFetch:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    ImportRecipientsPayload:
      type: object
      properties:
        taskId:
          type: string
        importStatus:
          $ref: '#/components/schemas/CrmImportStatusEnum'
        error:
          $ref: '#/components/schemas/ErrorType'
    RequestNewCrmPayload:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    DisconnectCrmPayload:
      type: object
      properties:
        success:
          type: boolean
        connectedCrmId:
          type: integer
          format: int32
        error:
          $ref: '#/components/schemas/ErrorType'
    CrmUserMappingPayload:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateLocationAndCustomerMappingPayload:
      type: object
      properties:
        mapping:
          $ref: '#/components/schemas/CrmMappingDetails'
        error:
          $ref: '#/components/schemas/ErrorType'
    SetDimensionValuesPayload:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/CrmDimensionPersistedValue'
        error:
          $ref: '#/components/schemas/ErrorType'
    UpdateMailParserLocationDataPayload:
      type: object
      properties:
        config:
          $ref: '#/components/schemas/MailParserLocationDataInfo'
        error:
          $ref: '#/components/schemas/ErrorType'
    ArchiveExistingMpConfigurationPayload:
      type: object
      properties:
        success:
          type: boolean
        error:
          $ref: '#/components/schemas/ErrorType'
    ConnectCrmInput:
      type: object
      properties:
        entityId:
          type: string
        entityType:
          $ref: '#/components/schemas/CrmEntityTypeEnum'
        connectedCrmId:
          type: integer
          format: int32
        crmConnectionName:
          type: string
    ConnectMailParserInput:
      type: object
      properties:
        locationId:
          type: string
        crmConnectionName:
          type: string
        parserRules:
          type: string
      required:
        - locationId
    UpdateMailParserImportStatusInput:
      type: object
      properties:
        connectedCrmId:
          type: integer
          format: int32
        importStatus:
          $ref: '#/components/schemas/CrmImportStatusEnum'
      required:
        - connectedCrmId
        - importStatus
    MailparserConfigurationInput:
      type: object
      properties:
        locationId:
          type: string
        parserRules:
          type: string
        archived:
          type: boolean
      required:
        - locationId
    UpdateCrmInfoInput:
      type: object
      properties:
        connectedCrmId:
          type: integer
          format: int32
        crmConnectionName:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        importConfiguration:
          $ref: '#/components/schemas/CrmImportConfigurationEnum'
      required:
        - connectedCrmId
    UpdateAutoFetchRecipientsInput:
      type: object
      properties:
        connectedCrmId:
          type: integer
          format: int32
        autoFetch:
          type: boolean
      required:
        - connectedCrmId
        - autoFetch
    CrmImportRecipientsInput:
      type: object
      properties:
        connectedCrmId:
          type: integer
          format: int32
        startDate:
          type: string
        endDate:
          type: string
        importConfiguration:
          $ref: '#/components/schemas/CrmImportConfigurationEnum'
      required:
        - connectedCrmId
    RequestNewCrmInput:
      type: object
      properties:
        crmName:
          type: string
        requestedBy:
          type: string
        notes:
          type: string
      required:
        - crmName
    DisconnectCrmInput:
      type: object
      properties:
        connectedCrmId:
          type: integer
          format: int32
      required:
        - connectedCrmId
    CreateCrmUserMappingInput:
      type: object
      properties:
        connectedCrmId:
          type: integer
          format: int32
        mappings:
          type: array
          items:
            $ref: '#/components/schemas/CrmUserMappingPair'
      required:
        - connectedCrmId
    CrmUserMappingPair:
      type: object
      properties:
        crmUserId:
          type: string
        synupUserId:
          type: string
      required:
        - crmUserId
        - synupUserId
    UpdateLocationAndCustomerMappingInput:
      type: object
      properties:
        connectedCrmId:
          type: integer
          format: int32
        mappingType:
          $ref: '#/components/schemas/CrmMappingEnum'
        mappings:
          type: array
          items:
            $ref: '#/components/schemas/CrmFieldMappingPair'
      required:
        - connectedCrmId
        - mappingType
    CrmFieldMappingPair:
      type: object
      properties:
        synupField:
          type: string
        crmField:
          type: string
      required:
        - synupField
        - crmField
    DimensionValuesForConnectedCrmInput:
      type: object
      properties:
        connectedCrmId:
          type: integer
          format: int32
        values:
          type: array
          items:
            $ref: '#/components/schemas/CrmDimensionValueInput'
      required:
        - connectedCrmId
    CrmDimensionValueInput:
      type: object
      properties:
        dimension:
          type: string
        value:
          type: string
        label:
          type: string
      required:
        - dimension
        - value
    MailParserLocationDataInput:
      type: object
      properties:
        locationId:
          type: string
        parserRules:
          type: string
        archived:
          type: boolean
      required:
        - locationId
    ArchiveExistingMpConfInput:
      type: object
      properties:
        configId:
          type: integer
          format: int32
      required:
        - configId
    ListConnectCrmFilters:
      type: object
      properties:
        crmConnectionName:
          type: string
        crmName:
          type: array
          items:
            $ref: '#/components/schemas/CrmProviderEnum'
        email:
          type: string
        status:
          type: array
          items:
            $ref: '#/components/schemas/CrmConnectionStatusEnum'
        importStatus:
          type: array
          items:
            $ref: '#/components/schemas/CrmImportStatusEnum'
        locationId:
          type: integer
          format: int32
    CrmGetRecipientsFilters:
      type: object
      properties:
        source:
          type: array
          items:
            $ref: '#/components/schemas/RecipientSourceEnum'
        firstName:
          type: string
        lastName:
          type: string
        name:
          type: string
        email:
          type: string
        phone:
          type: string
        globalSearch:
          type: string
        importedOn:
          $ref: '#/components/schemas/CrmImportDateFilter'
        locationId:
          type: string
        tags:
          type: string
        contactType:
          type: array
          items:
            $ref: '#/components/schemas/CrmContactTypeEnum'
        crmConnectionName:
          type: array
          items:
            type: string
        connectedCrmId:
          type: integer
          format: int32
    CrmImportDateFilter:
      type: object
      properties:
        startDate:
          type: string
        endDate:
          type: string
    CrmDimensionFilterInput:
      type: object
      properties:
        dimension:
          type: string
        search:
          type: string
    CrmProviderEnum:
      type: string
      enum:
        - HUBSPOT
        - ZOHOCRM
        - MAILCHIMP
        - PIPEDRIVE
        - SALESFORCE
        - MAILPARSER
        - KLAVIYO
        - ACTIVECAMPAIGN
        - CONSTANT_CONTACT
        - OTHER
      description: Identifier for each supported CRM / email-marketing provider.
    CrmCategoryEnum:
      type: string
      enum:
        - CRM
        - EMAIL_MARKETING
        - MAIL_PARSER
    CrmConnectionStatusEnum:
      type: string
      enum:
        - CONNECTED
        - DISCONNECTED
        - PENDING
        - FAILED
        - ARCHIVED
    CrmImportStatusEnum:
      type: string
      enum:
        - NOT_STARTED
        - IN_PROGRESS
        - IMPORTED
        - FAILED
    CrmImportConfigurationEnum:
      type: string
      enum:
        - ALL
        - DATE_RANGE
        - INCREMENTAL
    CrmEntityTypeEnum:
      type: string
      enum:
        - LOCATION
        - ACCOUNT
        - AGENCY
    CrmMappingEnum:
      type: string
      enum:
        - LOCATION
        - CONTACT
    CrmLocationMappingStatusEnum:
      type: string
      enum:
        - NOT_STARTED
        - IN_PROGRESS
        - COMPLETED
    CrmContactMappingStatusEnum:
      type: string
      enum:
        - NOT_STARTED
        - IN_PROGRESS
        - COMPLETED
    CrmContactTypeEnum:
      type: string
      enum:
        - CUSTOMER
        - LEAD
        - PROSPECT
    RecipientSourceEnum:
      type: string
      enum:
        - CRM
        - MAIL_PARSER
        - MANUAL
        - CSV_UPLOAD
    ClientType:
      type: object
      description: A client (sub-account) managed by the agency.
      properties:
        id:
          type: string
        name:
          type: string
        status:
          $ref: '#/components/schemas/AgencyStatusEnum'
        size:
          $ref: '#/components/schemas/AgencyClientSizeEnum'
        primaryRep:
          $ref: '#/components/schemas/AgencyTeamMemberType'
        plan:
          $ref: '#/components/schemas/PlatformPlanType'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/AgencyTagType'
      required:
        - id
    AgencyClientsPage:
      type: object
      properties:
        clients:
          type: array
          items:
            $ref: '#/components/schemas/ClientType'
        total:
          type: integer
          format: int32
        hasNextPage:
          type: boolean
    AllClientsPageInfoType:
      type: object
      properties:
        clients:
          type: array
          items:
            $ref: '#/components/schemas/ClientType'
        total:
          type: integer
          format: int32
    ClientUserDetailsType:
      type: object
      properties:
        clientId:
          type: string
        users:
          type: array
          items:
            $ref: '#/components/schemas/AgencyTeamMemberType'
    AgencyTagType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        archived:
          type: boolean
        clientCount:
          type: integer
          format: int32
      required:
        - id
    AgencyTeamMemberType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        email:
          type: string
        role:
          type: string
        disabled:
          type: boolean
      required:
        - id
    SubfeatureType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        key:
          type: string
    SubfeaturePlanMappingType:
      type: object
      properties:
        planId:
          type: string
        subfeatureIds:
          type: array
          items:
            type: string
    CustomFieldType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        groupId:
          type: string
        dataType:
          type: string
        archived:
          type: boolean
    CustomFieldGroupType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    PlatformPlanType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        price:
          type: number
          format: float
        currency:
          type: string
        billingInterval:
          $ref: '#/components/schemas/BillingIntervalEnum'
    PlatformAccountSubscriptionType:
      type: object
      properties:
        id:
          type: string
        accountId:
          type: string
        planId:
          type: string
        status:
          type: string
        currentTermEnd:
          type: string
    AgencyPlatformPlanType:
      type: object
      properties:
        plan:
          $ref: '#/components/schemas/PlatformPlanType'
        subscription:
          $ref: '#/components/schemas/PlatformAccountSubscriptionType'
    AppType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        application:
          $ref: '#/components/schemas/AppApplicationEnum'
        type:
          $ref: '#/components/schemas/AppTypeEnum'
        unitType:
          $ref: '#/components/schemas/AppUnitTypeEnum'
        purchaseType:
          $ref: '#/components/schemas/AppPurchaseTypeEnum'
    AccountAppType:
      type: object
      properties:
        id:
          type: string
        accountId:
          type: string
        app:
          $ref: '#/components/schemas/AppType'
        status:
          type: string
        markedToRemove:
          type: boolean
    FeatureType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    OsClientPlanType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        price:
          type: number
          format: float
        currency:
          type: string
        published:
          type: boolean
    OsClientSubscriptionType:
      type: object
      properties:
        id:
          type: string
        clientId:
          type: string
        plan:
          $ref: '#/components/schemas/OsClientPlanType'
        units:
          type: integer
          format: int32
        daysMultiplier:
          type: number
          format: float
    CurrencyExchangeRateType:
      type: object
      properties:
        currency:
          type: string
        rate:
          type: number
          format: float
        asOf:
          type: string
    AccountAppPriceSuggestionType:
      type: object
      properties:
        id:
          type: string
        appId:
          type: string
        price:
          type: number
          format: float
        currency:
          type: string
    ValidateClientPlanChangesResult:
      type: object
      properties:
        valid:
          type: boolean
        errors:
          type: array
          items:
            type: string
    ClientTableViewType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        columns:
          type: array
          items:
            type: string
        isDefault:
          type: boolean
    ActivityType:
      type: object
      properties:
        id:
          type: string
        category:
          $ref: '#/components/schemas/ActivityCategoryEnum'
        description:
          type: string
        createdAt:
          type: string
    ChurnRiskConfigType:
      type: object
      properties:
        id:
          type: string
        thresholds:
          type: string
        enabled:
          type: boolean
    ClientChurnRiskType:
      type: object
      properties:
        clientId:
          type: string
        riskScore:
          type: number
          format: float
        riskLevel:
          type: string
    TotalClientsCardData:
      type: object
      properties:
        total:
          type: integer
          format: int32
        active:
          type: integer
          format: int32
        cancelled:
          type: integer
          format: int32
    ChurnRiskCardData:
      type: object
      properties:
        high:
          type: integer
          format: int32
        medium:
          type: integer
          format: int32
        low:
          type: integer
          format: int32
    ClientApiKeyType:
      type: object
      properties:
        id:
          type: string
        clientId:
          type: string
        name:
          type: string
        status:
          $ref: '#/components/schemas/ApiKeyStatusEnum'
        lastUsedAt:
          type: string
    ApiDocDomainType:
      type: object
      properties:
        domain:
          type: string
        verified:
          type: boolean
    EmailConfigurationType:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        fromEmail:
          type: string
        cadence:
          type: string
    AgencyDigestPreferencesType:
      type: object
      properties:
        weeklyAgencyDigestEnabled:
          type: boolean
        monthlyAgencyDigestEnabled:
          type: boolean
    AiDescriptionResponseType:
      type: object
      properties:
        description:
          type: string
    ClientPerformanceType:
      type: object
      properties:
        clientId:
          type: string
        metrics:
          type: string
    ClientActivitiesSummaryType:
      type: object
      properties:
        total:
          type: integer
          format: int32
        byCategory:
          type: string
    ClientCancellationMetricsType:
      type: object
      properties:
        cancelledCount:
          type: integer
          format: int32
        retentionRate:
          type: number
          format: float
    ClientTrendType:
      type: object
      properties:
        buckets:
          type: array
          items:
            $ref: '#/components/schemas/ClientTrendBucket'
    ClientTrendBucket:
      type: object
      properties:
        periodStart:
          type: string
        newClients:
          type: integer
          format: int32
        removedClients:
          type: integer
          format: int32
        totalClients:
          type: integer
          format: int32
    CsvUploadJobsType:
      type: object
      properties:
        jobs:
          type: array
          items:
            $ref: '#/components/schemas/CsvUploadJobDetailType'
    CsvUploadJobDetailType:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        rowCount:
          type: integer
          format: int32
        errors:
          type: array
          items:
            type: string
    MyPurchasesType:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/AdditionalPurchaseItemType'
        total:
          type: number
          format: float
    AdditionalPurchaseItemType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        price:
          type: number
          format: float
        currency:
          type: string
    ClientAppDetailsType:
      type: object
      properties:
        clientId:
          type: string
        apps:
          type: array
          items:
            $ref: '#/components/schemas/AccountAppType'
    BillingSummaryHeaderType:
      type: object
      properties:
        currentDue:
          type: number
          format: float
        currency:
          type: string
        nextInvoiceDate:
          type: string
    InvoiceType:
      type: object
      properties:
        id:
          type: string
        number:
          type: string
        total:
          type: number
          format: float
        currency:
          type: string
        issuedAt:
          type: string
        status:
          type: string
    PaymentMethodType:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        last4:
          type: string
        isPrimary:
          type: boolean
    OnboardingTasks:
      type: object
      properties:
        tasks:
          type: array
          items:
            $ref: '#/components/schemas/OnboardingTask'
    OnboardingTask:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        completed:
          type: boolean
    GenericMutationPayload:
      type: object
      description: Minimal fallback payload for mutations whose dedicated payload shape is not fully modeled here.
      properties:
        clientMutationId:
          type: string
        success:
          type: boolean
        errors:
          type: array
          items:
            type: string
    UpdateTaskStatusPayload:
      type: object
      properties:
        task:
          $ref: '#/components/schemas/OnboardingTask'
        success:
          type: boolean
    CreateTagPayload:
      type: object
      properties:
        tag:
          $ref: '#/components/schemas/AgencyTagType'
    UpdateTagPayload:
      type: object
      properties:
        tag:
          $ref: '#/components/schemas/AgencyTagType'
    ToggleTagArchiveStatusPayload:
      type: object
      properties:
        tag:
          $ref: '#/components/schemas/AgencyTagType'
    RemoveClientsFromTagsPayload:
      type: object
      properties:
        success:
          type: boolean
    AddMoreClientsToTagsPayload:
      type: object
      properties:
        success:
          type: boolean
    DeleteViewPayload:
      type: object
      properties:
        success:
          type: boolean
    CreateViewPayload:
      type: object
      properties:
        view:
          $ref: '#/components/schemas/ClientTableViewType'
    UpdateViewPayload:
      type: object
      properties:
        view:
          $ref: '#/components/schemas/ClientTableViewType'
    CreateTeamMemberPayload:
      type: object
      properties:
        teamMember:
          $ref: '#/components/schemas/AgencyTeamMemberType'
    UpdateTeamMemberPayload:
      type: object
      properties:
        teamMember:
          $ref: '#/components/schemas/AgencyTeamMemberType'
    DisableTeamMemberPayload:
      type: object
      properties:
        teamMember:
          $ref: '#/components/schemas/AgencyTeamMemberType'
    EnableTeamMemberPayload:
      type: object
      properties:
        teamMember:
          $ref: '#/components/schemas/AgencyTeamMemberType'
    AssignPrimaryRepPayload:
      type: object
      properties:
        client:
          $ref: '#/components/schemas/ClientType'
    UpdateTeamMemberOnboardingPayload:
      type: object
      properties:
        teamMember:
          $ref: '#/components/schemas/AgencyTeamMemberType'
    SendTeamMemberInvitesPayload:
      type: object
      properties:
        sentCount:
          type: integer
          format: int32
    CreateCustomFieldPayload:
      type: object
      properties:
        customField:
          $ref: '#/components/schemas/CustomFieldType'
    UpdateCustomFieldPayload:
      type: object
      properties:
        customField:
          $ref: '#/components/schemas/CustomFieldType'
    UpdateCustomFieldValuePayload:
      type: object
      properties:
        success:
          type: boolean
    PreviewAiResponsePayload:
      type: object
      properties:
        preview:
          type: string
    ArchiveCustomFieldPayload:
      type: object
      properties:
        customField:
          $ref: '#/components/schemas/CustomFieldType'
    EditCustomFieldsGroupPayload:
      type: object
      properties:
        group:
          $ref: '#/components/schemas/CustomFieldGroupType'
    UpdateClientFieldPayload:
      type: object
      properties:
        success:
          type: boolean
    ProcessClientCustomFieldsPayload:
      type: object
      properties:
        processedCount:
          type: integer
          format: int32
    AssignPlatformPlanPayload:
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/PlatformAccountSubscriptionType'
    AppToAccountPayload:
      type: object
      properties:
        accountApp:
          $ref: '#/components/schemas/AccountAppType'
    CreateAppPriceSuggestionPayload:
      type: object
      properties:
        priceSuggestion:
          $ref: '#/components/schemas/AccountAppPriceSuggestionType'
    InstallAppPayload:
      type: object
      properties:
        accountApp:
          $ref: '#/components/schemas/AccountAppType'
    MarkAppToRemovePayload:
      type: object
      properties:
        accountApp:
          $ref: '#/components/schemas/AccountAppType'
    UnmarkAppToRemovePayload:
      type: object
      properties:
        accountApp:
          $ref: '#/components/schemas/AccountAppType'
    ChangeClientOsPlanPayload:
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/OsClientSubscriptionType'
    ChangeOsPlatformPlanPayload:
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/PlatformAccountSubscriptionType'
    ManageOsClientPlanPayload:
      type: object
      properties:
        plan:
          $ref: '#/components/schemas/OsClientPlanType'
    SaveOsClientPlanPayload:
      type: object
      properties:
        plan:
          $ref: '#/components/schemas/OsClientPlanType'
    UpdateOsClientSubscriptionPayload:
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/OsClientSubscriptionType'
    CreateCustomPlanContactTicketPayload:
      type: object
      properties:
        ticketId:
          type: string
    UpdateChurnRiskConfigPayload:
      type: object
      properties:
        config:
          $ref: '#/components/schemas/ChurnRiskConfigType'
    UpdateRiskLimitConfigPayload:
      type: object
      properties:
        config:
          $ref: '#/components/schemas/ChurnRiskConfigType'
    GenerateApiKeyForClientPayload:
      type: object
      properties:
        apiKey:
          $ref: '#/components/schemas/ClientApiKeyType'
        secret:
          type: string
    EditClientApiKeyPayload:
      type: object
      properties:
        apiKey:
          $ref: '#/components/schemas/ClientApiKeyType'
    RegenerateClientApiKeyPayload:
      type: object
      properties:
        apiKey:
          $ref: '#/components/schemas/ClientApiKeyType'
        secret:
          type: string
    DisableClientApiKeysPayload:
      type: object
      properties:
        disabledCount:
          type: integer
          format: int32
    EnableClientApiKeysPayload:
      type: object
      properties:
        enabledCount:
          type: integer
          format: int32
    DeleteClientApiKeysPayload:
      type: object
      properties:
        deletedCount:
          type: integer
          format: int32
    AddApiDocumentDomainPayload:
      type: object
      properties:
        domain:
          $ref: '#/components/schemas/ApiDocDomainType'
    DownloadClientsCsvPayload:
      type: object
      properties:
        jobId:
          type: string
    DownloadAppsConsumptionCsvPayload:
      type: object
      properties:
        jobId:
          type: string
    DownloadPlansConsumptionCsvPayload:
      type: object
      properties:
        jobId:
          type: string
    GenerateInvoiceDownloadUrlsPayload:
      type: object
      properties:
        urls:
          type: array
          items:
            type: string
    GenerateAddCardUrlPayload:
      type: object
      properties:
        url:
          type: string
    SetPrimaryPaymentMethodPayload:
      type: object
      properties:
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethodType'
    PurchaseAddonsPayload:
      type: object
      properties:
        purchase:
          $ref: '#/components/schemas/AdditionalPurchaseItemType'
    ConnectForOsInquiryPayload:
      type: object
      properties:
        success:
          type: boolean
    GenerateEmailPreviewPayload:
      type: object
      properties:
        html:
          type: string
    UpdateAgencyDigestPreferencesPayload:
      type: object
      properties:
        preferences:
          $ref: '#/components/schemas/AgencyDigestPreferencesType'
    SendTestEmailPayload:
      type: object
      properties:
        success:
          type: boolean
    SaveEmailConfigurationPayload:
      type: object
      properties:
        configuration:
          $ref: '#/components/schemas/EmailConfigurationType'
    UpdateEmailConfigurationStatusPayload:
      type: object
      properties:
        configuration:
          $ref: '#/components/schemas/EmailConfigurationType'
    SaveFromEmailSmtpSettingsPayload:
      type: object
      properties:
        success:
          type: boolean
    CreateBrandsignalsReportPayload:
      type: object
      properties:
        redirectUrl:
          type: string
    AgencyClientsFilterInput:
      type: object
      properties:
        query:
          type: string
        tagIds:
          type: array
          items:
            type: string
        status:
          $ref: '#/components/schemas/AgencyStatusEnum'
        size:
          $ref: '#/components/schemas/AgencyClientSizeEnum'
    UpdateTaskStatusInput:
      type: object
      properties:
        taskId:
          type: string
        completed:
          type: boolean
      required:
        - taskId
        - completed
    CreateTagInput:
      type: object
      properties:
        name:
          type: string
        clientIds:
          type: array
          items:
            type: string
      required:
        - name
    UpdateTagInput:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
    ToggleTagArchiveStatusInput:
      type: object
      properties:
        id:
          type: string
        archived:
          type: boolean
      required:
        - id
        - archived
    RemoveClientsFromTagsInput:
      type: object
      properties:
        tagIds:
          type: array
          items:
            type: string
        clientIds:
          type: array
          items:
            type: string
      required:
        - tagIds
        - clientIds
    AddMoreClientsToTagsInput:
      type: object
      properties:
        tagIds:
          type: array
          items:
            type: string
        clientIds:
          type: array
          items:
            type: string
      required:
        - tagIds
        - clientIds
    DeleteViewInput:
      type: object
      properties:
        id:
          type: string
      required:
        - id
    CreateViewInput:
      type: object
      properties:
        name:
          type: string
        columns:
          type: array
          items:
            type: string
        isDefault:
          type: boolean
      required:
        - name
    UpdateViewInput:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        columns:
          type: array
          items:
            type: string
      required:
        - id
    CreateTeamMemberInput:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
        role:
          type: string
      required:
        - email
    UpdateTeamMemberInput:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        role:
          type: string
      required:
        - id
    DisableTeamMemberInput:
      type: object
      properties:
        id:
          type: string
      required:
        - id
    EnableTeamMemberInput:
      type: object
      properties:
        id:
          type: string
      required:
        - id
    AssignPrimaryRepInput:
      type: object
      properties:
        clientId:
          type: string
        teamMemberId:
          type: string
      required:
        - clientId
        - teamMemberId
    UpdateTeamMemberOnboardingInput:
      type: object
      properties:
        id:
          type: string
        step:
          type: string
        completed:
          type: boolean
      required:
        - id
    SendTeamMemberInvitesInput:
      type: object
      properties:
        teamMemberIds:
          type: array
          items:
            type: string
      required:
        - teamMemberIds
    CreateCustomFieldInput:
      type: object
      properties:
        name:
          type: string
        groupId:
          type: string
        dataType:
          type: string
      required:
        - name
    UpdateCustomFieldInput:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        groupId:
          type: string
      required:
        - id
    UpdateCustomFieldValueInput:
      type: object
      properties:
        customFieldId:
          type: string
        clientId:
          type: string
        value:
          type: string
      required:
        - customFieldId
        - clientId
    PreviewAiResponseInput:
      type: object
      properties:
        prompt:
          type: string
        context:
          type: string
      required:
        - prompt
    ArchiveCustomFieldInput:
      type: object
      properties:
        id:
          type: string
      required:
        - id
    EditCustomFieldsGroupInput:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    UpdateClientFieldInput:
      type: object
      properties:
        clientId:
          type: string
        field:
          type: string
        value:
          type: string
      required:
        - clientId
        - field
    ProcessClientCustomFieldsInput:
      type: object
      properties:
        clientIds:
          type: array
          items:
            type: string
      required:
        - clientIds
    AssignPlatformPlanInput:
      type: object
      properties:
        accountId:
          type: string
        planId:
          type: string
      required:
        - accountId
        - planId
    AppToAccountInput:
      type: object
      properties:
        accountId:
          type: string
        appId:
          type: string
        units:
          type: integer
          format: int32
      required:
        - accountId
        - appId
    AppPriceSuggestionInput:
      type: object
      properties:
        accountId:
          type: string
        appId:
          type: string
        price:
          type: number
          format: float
        currency:
          type: string
      required:
        - accountId
        - appId
    AppInstallInput:
      type: object
      properties:
        accountId:
          type: string
        appId:
          type: string
      required:
        - accountId
        - appId
    AppToRemoveInput:
      type: object
      properties:
        accountAppId:
          type: string
      required:
        - accountAppId
    ChangeClientOsPlanInput:
      type: object
      properties:
        clientId:
          type: string
        planId:
          type: string
      required:
        - clientId
        - planId
    ChangeOsPlatformPlanInput:
      type: object
      properties:
        accountId:
          type: string
        planId:
          type: string
      required:
        - accountId
        - planId
    ManageOsClientPlanInput:
      type: object
      properties:
        planId:
          type: string
        action:
          type: string
      required:
        - planId
        - action
    SaveOsClientPlanInput:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        price:
          type: number
          format: float
        currency:
          type: string
      required:
        - name
    UpdateOsClientSubscriptionInput:
      type: object
      properties:
        subscriptionId:
          type: string
        units:
          type: integer
          format: int32
      required:
        - subscriptionId
    CreateCustomPlanContactTicketInput:
      type: object
      properties:
        accountId:
          type: string
        message:
          type: string
      required:
        - accountId
    UpdateChurnRiskConfigInput:
      type: object
      properties:
        thresholds:
          type: string
        enabled:
          type: boolean
    UpdateRiskLimitConfigInput:
      type: object
      properties:
        limit:
          type: integer
          format: int32
    ApiKeyInput:
      type: object
      properties:
        clientId:
          type: string
        name:
          type: string
      required:
        - clientId
    EditClientApiKeyInput:
      type: object
      properties:
        apiKeyId:
          type: string
        name:
          type: string
      required:
        - apiKeyId
    RegenerateClientApiKeyInput:
      type: object
      properties:
        apiKeyId:
          type: string
      required:
        - apiKeyId
    ToggleClientApiKeysInput:
      type: object
      properties:
        apiKeyIds:
          type: array
          items:
            type: string
      required:
        - apiKeyIds
    AddApiDocumentDomainInput:
      type: object
      properties:
        domain:
          type: string
      required:
        - domain
    DownloadClientsCsvInput:
      type: object
      properties:
        filters:
          $ref: '#/components/schemas/AgencyClientsFilterInput'
    DownloadAppsConsumptionCsvInput:
      type: object
      properties:
        fromDate:
          type: string
        toDate:
          type: string
    DownloadPlansConsumptionCsvInput:
      type: object
      properties:
        fromDate:
          type: string
        toDate:
          type: string
    GenerateInvoiceDownloadUrlsInput:
      type: object
      properties:
        invoiceIds:
          type: array
          items:
            type: string
      required:
        - invoiceIds
    SetPrimaryPaymentMethodInput:
      type: object
      properties:
        paymentMethodId:
          type: string
      required:
        - paymentMethodId
    PurchaseAddonsInput:
      type: object
      properties:
        addonIds:
          type: array
          items:
            type: string
        quantity:
          type: integer
          format: int32
      required:
        - addonIds
    ConnectForOsInquiryInput:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
        message:
          type: string
      required:
        - email
    GenerateEmailPreviewInput:
      type: object
      properties:
        configurationId:
          type: string
        accountId:
          type: string
    UpdateAgencyDigestPreferencesInput:
      type: object
      properties:
        weeklyAgencyDigestEnabled:
          type: boolean
        monthlyAgencyDigestEnabled:
          type: boolean
    SendTestEmailInput:
      type: object
      properties:
        to:
          type: string
        configurationId:
          type: string
      required:
        - to
    SaveEmailConfigurationInput:
      type: object
      properties:
        id:
          type: string
        cadence:
          type: string
        fromEmail:
          type: string
        status:
          type: string
    UpdateEmailConfigurationStatusInput:
      type: object
      properties:
        configurationId:
          type: string
        status:
          type: string
      required:
        - configurationId
        - status
    SaveFromEmailSmtpSettingsInput:
      type: object
      properties:
        host:
          type: string
        port:
          type: integer
          format: int32
        username:
          type: string
        password:
          type: string
      required:
        - host
    CreateBrandsignalsReportInput:
      type: object
      properties:
        locationId:
          type: string
        email:
          type: string
      required:
        - locationId
    ApiKeyFilterInput:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ApiKeyStatusEnum'
        query:
          type: string
    AgencyStatusEnum:
      type: string
      enum:
        - ACTIVE
        - CANCELLED
        - SUSPENDED
        - TRIAL
    AgencyClientSizeEnum:
      type: string
      enum:
        - SMALL
        - MEDIUM
        - LARGE
        - ENTERPRISE
    AppApplicationEnum:
      type: string
      enum:
        - LISTINGS
        - REVIEWS
        - SOCIAL
        - POSTS
        - MESSENGER
        - AI
    AppTypeEnum:
      type: string
      enum:
        - CORE
        - ADDON
        - INTEGRATION
    AppUnitTypeEnum:
      type: string
      enum:
        - LOCATION
        - USER
        - SEAT
        - FLAT
    AppPurchaseTypeEnum:
      type: string
      enum:
        - SUBSCRIPTION
        - ONE_TIME
    ApiKeyStatusEnum:
      type: string
      enum:
        - ACTIVE
        - DISABLED
        - DELETED
    BillingIntervalEnum:
      type: string
      enum:
        - MONTHLY
        - QUARTERLY
        - YEARLY
    ActivityCategoryEnum:
      type: string
      enum:
        - LISTINGS
        - REVIEWS
        - POSTS
        - MESSAGES
        - BILLING
        - TEAM
        - OTHER
    TrendGranularityEnum:
      type: string
      enum:
        - WEEK
        - MONTH
    VisibilityScore:
      type: object
      description: Overall and per-platform visibility scores.
      properties:
        overallScore:
          $ref: '#/components/schemas/ScoreWithComparison'
        platforms:
          $ref: '#/components/schemas/Platforms'
        conversationPlatforms:
          $ref: '#/components/schemas/ConversationPlatforms'
    ScoreWithComparison:
      type: object
      properties:
        score:
          type: integer
          format: int32
        comparison:
          $ref: '#/components/schemas/VisibilityScoreComparison'
    VisibilityScoreComparison:
      type: object
      properties:
        percentage:
          type: number
          format: float
        isGrowth:
          type: boolean
        period:
          type: string
    Platforms:
      type: object
      properties:
        ChatGPT:
          $ref: '#/components/schemas/PlatformScore'
        Gemini:
          $ref: '#/components/schemas/PlatformScore'
        Perplexity:
          $ref: '#/components/schemas/PlatformScore'
    PlatformScore:
      type: object
      properties:
        score:
          type: integer
          format: int32
        comparison:
          $ref: '#/components/schemas/VisibilityScoreComparison'
    ConversationPlatforms:
      type: object
      properties:
        Copilot:
          $ref: '#/components/schemas/ConversationPlatform'
        IntellyChat:
          $ref: '#/components/schemas/ConversationPlatform'
        MyndMeld:
          $ref: '#/components/schemas/ConversationPlatform'
    ConversationPlatform:
      type: object
      properties:
        conversationURL:
          type: string
        aiVisibility:
          type: string
    KeywordMap:
      type: object
      description: Per-AI-platform keyword lists.
      properties:
        ChatGPT:
          type: array
          items:
            $ref: '#/components/schemas/KeywordMapPlatform'
        Gemini:
          type: array
          items:
            $ref: '#/components/schemas/KeywordMapPlatform'
        Perplexity:
          type: array
          items:
            $ref: '#/components/schemas/KeywordMapPlatform'
    KeywordMapPlatform:
      type: object
      properties:
        keyword:
          type: string
        percentage:
          type: integer
          format: int32
        dataSources:
          type: array
          items:
            $ref: '#/components/schemas/DataSource'
    DataSource:
      type: object
      properties:
        name:
          type: string
        logo:
          type: string
    VisibilityGapAnalysisItem:
      type: object
      description: One row of business-vs-competitor visibility data.
      properties:
        business:
          type: string
        score:
          type: integer
          format: int32
        comparison:
          $ref: '#/components/schemas/VisibilityGapComparison'
        chatgpt:
          type: integer
          format: int32
        gemini:
          type: integer
          format: int32
        perplexity:
          type: integer
          format: int32
    VisibilityGapComparison:
      type: object
      properties:
        changePercentage:
          type: number
          format: float
        period:
          type: string
    RankingGapAnalyzer:
      type: object
      description: Ranking distribution across AI services.
      properties:
        All:
          $ref: '#/components/schemas/ServiceRankingGap'
        ChatGPT:
          $ref: '#/components/schemas/ServiceRankingGap'
        Gemini:
          $ref: '#/components/schemas/ServiceRankingGap'
        Perplexity:
          $ref: '#/components/schemas/ServiceRankingGap'
    ServiceRankingGap:
      type: object
      properties:
        primary:
          $ref: '#/components/schemas/PrimaryDistribution'
        competitors:
          type: array
          items:
            $ref: '#/components/schemas/CompetitorDistribution'
    PrimaryDistribution:
      type: object
      properties:
        distribution:
          $ref: '#/components/schemas/RankingDistribution'
    CompetitorDistribution:
      type: object
      properties:
        name:
          type: string
        distribution:
          $ref: '#/components/schemas/RankingDistribution'
    RankingDistribution:
      type: object
      properties:
        GOOD:
          $ref: '#/components/schemas/RankingBucket'
        NEUTRAL:
          $ref: '#/components/schemas/RankingBucket'
        BAD:
          $ref: '#/components/schemas/RankingBucket'
    RankingBucket:
      type: object
      properties:
        count:
          type: integer
          format: int32
        percentage:
          type: integer
          format: int32
    OptimizationCoverage:
      type: object
      description: AI optimization coverage by platform.
      properties:
        ChatGPT:
          $ref: '#/components/schemas/ServiceOptimizationCoverage'
        Gemini:
          $ref: '#/components/schemas/ServiceOptimizationCoverage'
        Perplexity:
          $ref: '#/components/schemas/ServiceOptimizationCoverage'
    ServiceOptimizationCoverage:
      type: object
      properties:
        score:
          type: integer
          format: int32
        websites:
          type: array
          items:
            $ref: '#/components/schemas/Website'
        citations:
          type: integer
          format: int32
        relevance:
          type: integer
          format: int32
        freshness:
          type: integer
          format: int32
        engagement:
          type: integer
          format: int32
        reviews:
          type: integer
          format: int32
        comparison:
          $ref: '#/components/schemas/OptimizationCoverageComparison'
    Website:
      type: object
      properties:
        name:
          type: string
        domain:
          type: string
        coverageScore:
          type: integer
          format: int32
        logoUrl:
          type: string
    OptimizationCoverageComparison:
      type: object
      properties:
        percentage:
          type: number
          format: float
        period:
          type: string
    CitationsCoverage:
      type: object
      properties:
        summary:
          $ref: '#/components/schemas/CitationsCoverageSummary'
        platformCoverage:
          $ref: '#/components/schemas/PlatformCoverage'
    CitationsCoverageSummary:
      type: object
      properties:
        totalSources:
          type: integer
          format: int32
        active:
          type: integer
          format: int32
        detected:
          type: integer
          format: int32
        missing:
          type: integer
          format: int32
    PlatformCoverage:
      type: object
      properties:
        ChatGPT:
          type: array
          items:
            $ref: '#/components/schemas/PlatformSite'
        Gemini:
          type: array
          items:
            $ref: '#/components/schemas/PlatformSite'
        Perplexity:
          type: array
          items:
            $ref: '#/components/schemas/PlatformSite'
    PlatformSite:
      type: object
      properties:
        name:
          type: string
        logo:
          type: string
        status:
          $ref: '#/components/schemas/SiteStatus'
    SentimentInsights:
      type: object
      properties:
        summary:
          $ref: '#/components/schemas/SentimentSummary'
        comparison:
          $ref: '#/components/schemas/SentimentInsightsComparison'
        benchmark:
          $ref: '#/components/schemas/Benchmark'
        mentions:
          $ref: '#/components/schemas/Mentions'
    SentimentSummary:
      type: object
      properties:
        positive:
          type: integer
          format: int32
        neutral:
          type: integer
          format: int32
        negative:
          type: integer
          format: int32
    SentimentInsightsComparison:
      type: object
      properties:
        changePercentage:
          type: number
          format: float
        period:
          type: string
    Benchmark:
      type: object
      properties:
        label:
          type: string
        value:
          type: integer
          format: int32
    Mentions:
      type: object
      properties:
        positive:
          type: array
          items:
            type: string
        negative:
          type: array
          items:
            type: string
    LocationMetadata:
      type: object
      properties:
        lastUpdatedDate:
          $ref: '#/components/schemas/LastUpdatedDate'
        availableTimePeriods:
          $ref: '#/components/schemas/AvailableTimePeriods'
    LastUpdatedDate:
      type: object
      properties:
        date:
          type: string
        datetime:
          type: string
    AvailableTimePeriods:
      type: object
      properties:
        MONTHLY:
          type: boolean
        QUARTERLY:
          type: boolean
        YEARLY:
          type: boolean
    CreateShareableLinkPayload:
      type: object
      properties:
        shareableLink:
          $ref: '#/components/schemas/ShareableLink'
        success:
          type: boolean
        error:
          type: string
    ShareableLink:
      type: object
      properties:
        shareableLinkId:
          type: integer
          format: int32
        encryptedToken:
          type: string
        shareableUrl:
          type: string
        createdAt:
          type: string
    SiteStatus:
      type: string
      enum:
        - ACTIVE
        - DETECTED
        - MISSING
      description: Citation site presence status.
    PeriodType:
      type: string
      enum:
        - MONTHLY
        - QUARTERLY
        - YEARLY
      description: Time window for visibility / optimization analytics.
    Keyword:
      type: object
      description: A tracked keyword tied to a location.
      properties:
        id:
          type: string
        databaseId:
          type: integer
          format: int32
        name:
          type: string
        archived:
          type: boolean
        archiveReasonId:
          type: integer
          format: int32
      required:
        - id
    AdditionalFields:
      type: object
      properties:
        databaseId:
          type: integer
          format: int32
        name:
          type: string
    RankingKeyword:
      type: object
      properties:
        id:
          type: string
        databaseId:
          type: string
        name:
          type: string
        sites:
          type: array
          items:
            $ref: '#/components/schemas/RankingSite'
    RankingSite:
      type: object
      properties:
        name:
          type: string
        rankings:
          type: array
          items:
            $ref: '#/components/schemas/LocationRanking'
    LocationRanking:
      type: object
      properties:
        rank:
          type: integer
          format: int32
        rankedAt:
          type: string
        matchType:
          type: string
        matchUrl:
          type: string
    LocationRankingSetting:
      type: object
      properties:
        exactMatch:
          type: boolean
    RankingsRollupForDate:
      type: object
      properties:
        siteAverageRanking:
          type: array
          items:
            $ref: '#/components/schemas/SiteWiseAverageRanking'
    SiteWiseAverageRanking:
      type: object
      properties:
        site:
          type: string
        averageRankings:
          type: array
          items:
            $ref: '#/components/schemas/DateRanking'
    DateRanking:
      type: object
      properties:
        date:
          type: string
        averageRank:
          type: number
          format: float
    RankingsRollupByBucket:
      type: object
      properties:
        site:
          type: string
        keywordCountByBucket:
          type: array
          items:
            $ref: '#/components/schemas/SiteWiseRankBucket'
    SiteWiseRankBucket:
      type: object
      properties:
        rankRange:
          type: string
        dailyKeywordCount:
          type: array
          items:
            $ref: '#/components/schemas/BucketList'
    BucketList:
      type: object
      properties:
        rankDate:
          type: string
        keywordCount:
          type: integer
          format: int32
    KeywordPerformance:
      type: object
      properties:
        keyword:
          type: string
        locationwiseKeywordPerformance:
          type: array
          items:
            $ref: '#/components/schemas/LocationWiseRanking'
    LocationWiseRanking:
      type: object
      properties:
        locationId:
          type: string
        siteWiseRankings:
          type: array
          items:
            $ref: '#/components/schemas/SiteWiseRankings'
    SiteWiseRankings:
      type: object
      properties:
        siteName:
          type: string
        rankingsByDate:
          type: array
          items:
            $ref: '#/components/schemas/DateWiseRankings'
    DateWiseRankings:
      type: object
      properties:
        rankDate:
          type: string
        rank:
          type: integer
          format: int32
    RollupLocationKeywordStats:
      type: object
      properties:
        totalLocationsCount:
          type: integer
          format: int32
        keywordAbsentLocationsCount:
          type: integer
          format: int32
        keywordPresentLocationsCount:
          type: integer
          format: int32
    GridRankReports:
      type: object
      properties:
        reports:
          type: array
          items:
            $ref: '#/components/schemas/GridRankReportObject'
        total:
          type: integer
          format: int32
    GridRankReportObject:
      type: object
      properties:
        id:
          type: string
        locationId:
          type: string
        accountId:
          type: string
        keyword:
          type: string
        keywordObject:
          $ref: '#/components/schemas/GridRankKeywordObject'
        businessName:
          type: string
        businessStreet:
          type: string
        businessCity:
          type: string
        businessState:
          type: string
        businessCountry:
          type: string
        gridSize:
          type: integer
          format: int32
        gridDistance:
          type: number
          format: float
        gridDistanceUnit:
          type: string
        gridDistanceInKm:
          type: number
          format: float
        ranks:
          type: array
          items:
            $ref: '#/components/schemas/GridrankMapValue'
        averageRank:
          type: number
          format: float
        topOneShare:
          type: number
          format: float
        topTwoShare:
          type: number
          format: float
        status:
          type: string
        latitude:
          type: number
          format: float
        longitude:
          type: number
          format: float
        placeId:
          type: string
        createdAt:
          type: string
    GridrankMapValue:
      type: object
      properties:
        rank:
          type: integer
          format: int32
        latitude:
          type: number
          format: float
        longitude:
          type: number
          format: float
    GridRankKeywords:
      type: object
      properties:
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/GridRankKeywordObject'
        total:
          type: integer
          format: int32
    GridRankKeywordObject:
      type: object
      properties:
        id:
          type: string
        locationId:
          type: string
        accountId:
          type: string
        keyword:
          type: string
        createdAt:
          type: string
    BestPerformingGbpKeywordsResponse:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/BestPerformingGbpKeyword'
        nextPageToken:
          type: string
    BestPerformingGbpKeyword:
      type: object
      properties:
        keyword:
          type: string
        threshold:
          type: integer
          format: int32
        impressions:
          type: integer
          format: int32
        existingReportId:
          type: string
    SovKeywords:
      type: object
      properties:
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/SovKeywordObject'
    SovKeywordObject:
      type: object
      properties:
        id:
          type: string
        locationId:
          type: string
        accountId:
          type: string
        keyword:
          type: string
        keywordType:
          type: string
        createdAt:
          type: string
    SovKeywordPerformanceResponse:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/SovKeywordValue'
        name:
          type: string
    SovKeywordValue:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        currentPercentage:
          type: number
          format: float
        currentTotal:
          type: integer
          format: int32
        currentOccurrences:
          type: integer
          format: int32
        previousPercentage:
          type: number
          format: float
        previousTotal:
          type: integer
          format: int32
        previousOccurrences:
          type: integer
          format: int32
    PlacesApiResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/PlacesApiResult'
        status:
          type: string
    PlacesApiResult:
      type: object
      properties:
        formattedAddress:
          type: string
        lat:
          type: number
          format: float
        lng:
          type: number
          format: float
        name:
          type: string
        placeId:
          type: string
    AddKeywordsPayload:
      type: object
      properties:
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/Keyword'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    ArchiveKeywordPayload:
      type: object
      properties:
        keyword:
          $ref: '#/components/schemas/Keyword'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    BulkAddKeywordsPayload:
      type: object
      properties:
        ok:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    UpdateRankingSettingsForLocationPayload:
      type: object
      properties:
        rankingSetting:
          $ref: '#/components/schemas/RankingSetting'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    RankingSetting:
      type: object
      properties:
        exactMatch:
          type: boolean
    CreateGridrankReportPayload:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/GeneratedReports'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    GeneratedReports:
      type: object
      properties:
        reportIds:
          type: array
          items:
            type: string
    Error:
      type: object
      description: Synup error envelope returned from mutations.
      properties:
        code:
          type: string
        message:
          type: string
        field:
          type: string
    CoordinatesData:
      type: object
      description: A latitude/longitude pair for gridrank custom shapes.
      properties:
        latitude:
          type: number
          format: float
        longitude:
          type: number
          format: float
    ListingType:
      type: object
      description: A single listing on an external directory site.
      properties:
        id:
          type: string
        databaseId:
          type: string
        listingUrl:
          type: string
        syncStatus:
          $ref: '#/components/schemas/ListingSyncStatusType'
        displayStatus:
          type: string
        syncIssue:
          type: string
        actionRequired:
          type: boolean
        site:
          $ref: '#/components/schemas/SiteType'
        lastUpdate:
          type: string
        verified:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
        indexStatus:
          type: boolean
        httpStatus:
          type: integer
          format: int32
        issueType:
          type: string
    SiteType:
      type: object
      description: Directory site metadata.
      properties:
        id:
          type: string
        databaseId:
          type: string
        name:
          type: string
        url:
          type: string
        syScore:
          type: string
        addOn:
          type: string
      required:
        - id
        - databaseId
        - url
    CustomSiteType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        url:
          type: string
        listings:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateListingType'
    DuplicateListingType:
      type: object
      properties:
        id:
          type: string
        listingItemId:
          type: string
        name:
          type: string
        liveLink:
          type: string
        status:
          type: string
    DuplicateListingStatsType:
      type: object
      properties:
        potential:
          type: integer
          format: int32
        fixed:
          type: integer
          format: int32
        failed:
          type: integer
          format: int32
        processing:
          type: integer
          format: int32
    PublisherDataType:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        siteUrl:
          type: string
      required:
        - id
        - name
        - siteUrl
    VoiceAssistantType:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        listings:
          type: array
          items:
            $ref: '#/components/schemas/VoiceListingType'
    VoiceListingType:
      type: object
      properties:
        id:
          type: string
        voiceIdentifier:
          $ref: '#/components/schemas/VoiceIdentifierType'
    VoiceIdentifierType:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
    DuplicateSuppressionSitesType:
      type: object
      properties:
        sites:
          type: array
          items:
            $ref: '#/components/schemas/SiteType'
    DuplicateListingRollupType:
      type: object
      properties:
        total:
          type: integer
          format: int32
        listings:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateListingType'
        pageInfo:
          $ref: '#/components/schemas/OffsetBasedPageInfoType'
    OffsetBasedPageInfoType:
      type: object
      properties:
        page:
          type: integer
          format: int32
        perPage:
          type: integer
          format: int32
        totalPages:
          type: integer
          format: int32
    PublisherRollupStats:
      type: object
      properties:
        publishers:
          type: array
          items:
            $ref: '#/components/schemas/PublisherLocationRollupType'
    PublisherLocationRollupType:
      type: object
      properties:
        publisherId:
          type: integer
          format: int32
        locationsCount:
          type: integer
          format: int32
    ListingInfoRollupType:
      type: object
      properties:
        total:
          type: integer
          format: int32
        listings:
          type: array
          items:
            $ref: '#/components/schemas/ListingType'
        pageInfo:
          $ref: '#/components/schemas/OffsetBasedPageInfoType'
    ActiveSitesDetailsType:
      type: object
      properties:
        siteId:
          type: string
        name:
          type: string
        url:
          type: string
        group:
          type: string
    ConnectedListingRollupStats:
      type: object
      properties:
        connected:
          type: integer
          format: int32
        disconnected:
          type: integer
          format: int32
    LocationKeywordSearchImpressionsWrapperType:
      type: object
      properties:
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/LocationKeywordSearchImpressionsType'
        nextPageToken:
          type: string
    LocationKeywordSearchImpressionsType:
      type: object
      properties:
        keyword:
          type: string
        impressions:
          type: integer
          format: int32
    LocationGoogleVerificationStatusType:
      type: object
      properties:
        status:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/LocationGoogleVerificationDetailType'
    LocationGoogleVerificationDetailType:
      type: object
      properties:
        locationId:
          type: string
        verified:
          type: boolean
        state:
          type: string
    TypeOfHours:
      type: object
      properties:
        types:
          type: array
          items:
            type: string
    ListingDetailType:
      type: object
      properties:
        id:
          type: string
        site:
          $ref: '#/components/schemas/SiteType'
        reason:
          type: string
    AiListingsType:
      type: object
      properties:
        score:
          $ref: '#/components/schemas/AiListingsScoreType'
        data:
          $ref: '#/components/schemas/AiListingsDataType'
        response:
          $ref: '#/components/schemas/AiListingsResponseType'
    AiListingsScoreType:
      type: object
      properties:
        score:
          type: number
          format: float
    AiListingsDataType:
      type: object
      properties:
        payload:
          type: string
    AiListingsResponseType:
      type: object
      properties:
        status:
          type: string
    ContextErrorType:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
    VerificationType:
      type: object
      properties:
        name:
          type: string
        method:
          $ref: '#/components/schemas/VerificationMethodType'
        state:
          $ref: '#/components/schemas/VerificationStatesType'
        createTime:
          type: string
        announcement:
          type: string
    OrderAdditionalSitesForLocationPayload:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CreateGmbListingAndConnectPayload:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    TriggerGoogleVerificationPayload:
      type: object
      properties:
        success:
          type: boolean
        verification:
          $ref: '#/components/schemas/VerificationType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    CompleteGoogleVerificationPayload:
      type: object
      properties:
        success:
          type: boolean
        verification:
          $ref: '#/components/schemas/VerificationType'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MutationErrorType'
    ListingUnion:
      oneOf:
        - $ref: '#/components/schemas/ListingType'
        - $ref: '#/components/schemas/PremiumListingType'
        - $ref: '#/components/schemas/AdditionalListingType'
    ListingStatsUnion:
      oneOf:
        - $ref: '#/components/schemas/PremiumListingStatsType'
        - $ref: '#/components/schemas/AdditionalListingStatsType'
        - $ref: '#/components/schemas/AllListingStatsType'
    VerificationOptionUnion:
      oneOf:
        - $ref: '#/components/schemas/AddressVerificationDataType'
        - $ref: '#/components/schemas/EmailVerificationDataType'
        - $ref: '#/components/schemas/PhoneVerificationDataType'
        - $ref: '#/components/schemas/AnnouncementVerificationDataType'
    PremiumListingType:
      type: object
      properties:
        id:
          type: string
        site:
          $ref: '#/components/schemas/SiteType'
    AdditionalListingType:
      type: object
      properties:
        id:
          type: string
        site:
          $ref: '#/components/schemas/SiteType'
    PremiumListingStatsType:
      type: object
      properties:
        synced:
          type: integer
          format: int32
        pending:
          type: integer
          format: int32
        failed:
          type: integer
          format: int32
    AdditionalListingStatsType:
      type: object
      properties:
        synced:
          type: integer
          format: int32
        pending:
          type: integer
          format: int32
        failed:
          type: integer
          format: int32
    AllListingStatsType:
      type: object
      properties:
        synced:
          type: integer
          format: int32
        pending:
          type: integer
          format: int32
        failed:
          type: integer
          format: int32
    AddressVerificationDataType:
      type: object
      properties:
        method:
          type: string
        mailerContact:
          type: string
    EmailVerificationDataType:
      type: object
      properties:
        method:
          type: string
        email:
          type: string
    PhoneVerificationDataType:
      type: object
      properties:
        method:
          type: string
        phone:
          type: string
    AnnouncementVerificationDataType:
      type: object
      properties:
        method:
          type: string
        announcement:
          type: string
    DuplicateListingsFilterType:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/DuplicateListingStatusType'
        siteId:
          type: integer
          format: int32
      required:
        - status
    ListingsFilterType:
      type: object
      properties:
        syncStatus:
          $ref: '#/components/schemas/ListingSyncStatusType'
        actionRequired:
          type: boolean
        siteIds:
          type: array
          items:
            type: integer
            format: int32
    LocationFilterType:
      type: object
      properties:
        query:
          type: string
    VerificationTokenType:
      type: object
      properties:
        tokenString:
          type: string
    SiteGroupType:
      type: string
      enum:
        - PREMIUM
        - ADDITIONAL
        - VOICE
        - ALL
    ListingSyncStatusType:
      type: string
      enum:
        - IN_PROGRESS
        - SYNCED
        - FAILED
        - REQUIRING_ACTION
        - AVAILABLE
        - COMPLETED
        - PENDING_APPROVAL
        - CANNOT_SUBMIT
    DuplicateListingStatusType:
      type: string
      enum:
        - POTENTIAL
        - PROCESSING
        - FIXED
        - FAILED
    VerificationMethodType:
      type: string
      enum:
        - VERIFICATION_METHOD_UNSPECIFIED
        - ADDRESS
        - EMAIL
        - PHONE_CALL
        - SMS
        - AUTO
        - VETTED_PARTNER
    VerificationStatesType:
      type: string
      enum:
        - STATE_UNSPECIFIED
        - PENDING
        - COMPLETED
        - FAILED
    LeadStats:
      type: object
      properties:
        overview:
          $ref: '#/components/schemas/LeadStatsOverview'
        inflow:
          type: array
          items:
            $ref: '#/components/schemas/LeadStatsInflow'
    LeadStatsOverview:
      type: object
      properties:
        totalLeads:
          $ref: '#/components/schemas/LeadStatsOverviewStruct'
        singleLocationLeads:
          $ref: '#/components/schemas/LeadStatsOverviewStruct'
        multiLocationLeads:
          $ref: '#/components/schemas/LeadStatsOverviewStruct'
        newLeads:
          $ref: '#/components/schemas/LeadStatsOverviewStruct'
    LeadStatsOverviewStruct:
      type: object
      properties:
        value:
          type: integer
          format: int32
        delta:
          type: integer
          format: int32
    LeadStatsInflow:
      type: object
      properties:
        name:
          type: string
        values:
          type: array
          items:
            $ref: '#/components/schemas/LeadStatsInflowStruct'
    LeadStatsInflowStruct:
      type: object
      properties:
        date:
          type: string
        count:
          type: integer
          format: int32
    BusinessSearchLead:
      type: object
      description: A lead captured through a scantool business search.
      properties:
        id:
          type: string
        businessSearchInfo:
          $ref: '#/components/schemas/BusinessSearchInfo'
        businesses:
          type: array
          items:
            $ref: '#/components/schemas/Business'
      required:
        - id
    BusinessSearchInfo:
      type: object
      properties:
        accountId:
          type: string
        type:
          type: string
        name:
          type: string
        email:
          type: string
        phone:
          type: string
        createdAt:
          type: string
        businessType:
          type: string
    Business:
      type: object
      description: A business record inside a lead — the subject of a scan.
      properties:
        id:
          type: string
        name:
          type: string
        city:
          type: string
        country:
          type: string
        phone:
          type: string
        postalCode:
          type: string
        state:
          type: string
        street:
          type: string
        createdAt:
          type: string
        scanLink:
          type: string
        scanId:
          type: string
        isBaselineReportGenerated:
          type: boolean
        customDomain:
          type: string
        results:
          type: array
          items:
            $ref: '#/components/schemas/SiteResult'
      required:
        - id
    SiteResult:
      type: object
      properties:
        status:
          type: string
        name:
          type: string
        data:
          $ref: '#/components/schemas/SiteResultData'
    SiteResultData:
      type: object
      properties:
        street:
          type: string
        state:
          type: string
        siteLogo:
          type: string
        postalCode:
          type: string
        phones:
          type: array
          items:
            type: string
        name:
          type: string
        liveLink:
          type: string
        fullAddress:
          type: string
        country:
          type: string
        city:
          type: string
        accurate:
          type: boolean
    BusinessSearchLeadConnection:
      type: object
      description: Relay connection wrapping BusinessSearchLead nodes.
      properties:
        edges:
          type: array
          items:
            $ref: '#/components/schemas/BusinessSearchLeadEdge'
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
      required:
        - pageInfo
    BusinessSearchLeadEdge:
      type: object
      properties:
        node:
          $ref: '#/components/schemas/BusinessSearchLead'
        cursor:
          type: string
      required:
        - cursor
    ErrorOutput:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        message:
          type: string
        contextInfo:
          type: array
          items:
            $ref: '#/components/schemas/ContextInfo'
      required:
        - id
    ContextInfo:
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        value:
          type: string
      required:
        - id
    DeleteLeadInput:
      type: object
      description: Relay input for deleteLead — `ids` are base64-encoded BusinessSearchLead IDs.
      properties:
        ids:
          type: array
          items:
            type: string
        clientMutationId:
          type: string
      required:
        - ids
    DeleteLeadPayload:
      type: object
      properties:
        result:
          type: integer
          format: int32
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorOutput'
        clientMutationId:
          type: string
    CreateBusinessSearchInput:
      type: object
      properties:
        businessRep:
          $ref: '#/components/schemas/BusinessRepInput'
        businessSearch:
          $ref: '#/components/schemas/BusinessSearchInput'
        sendMail:
          type: boolean
        init:
          type: boolean
        clientMutationId:
          type: string
      required:
        - businessRep
        - businessSearch
    CreateBusinessSearchPayload:
      type: object
      properties:
        result:
          $ref: '#/components/schemas/Business'
        clientMutationId:
          type: string
    BusinessRepInput:
      type: object
      properties:
        businessType:
          type: string
        phone:
          type: string
        email:
          type: string
        name:
          type: string
    BusinessSearchInput:
      type: object
      properties:
        name:
          type: string
        city:
          type: string
        country:
          type: string
        phone:
          type: string
        postalCode:
          type: string
        state:
          type: string
        street:
          type: string
    FeedCardBase:
      type: object
      description: Base fields shared by every suggestion/activity card.
      properties:
        id:
          type: string
        type:
          type: string
        suggestionKey:
          type: string
        permissionList:
          type: string
        targetableType:
          type: string
        source:
          type: string
        createdAt:
          type: string
        invalidAt:
          type: string
        importanceScore:
          type: integer
          format: int32
        targetableId:
          type: string
        parentCardId:
          type: string
        lastActedUponAt:
          type: string
        actedUserName:
          type: string
        cardTime:
          type: string
        locationName:
          type: string
        locationAddress:
          type: string
        locationPin:
          type: string
        locationCity:
          type: string
        locationState:
          type: string
        locationDetails:
          type: string
      required:
        - id
    DataSuggestionCard:
      type: object
      description: A card that prompts the user to supply/correct a piece of location data.
      properties:
        id:
          type: string
        trigger:
          type: string
      required:
        - id
    PinnedSuggestionCard:
      type: object
      description: A suggestion card that can be pinned.
      properties:
        id:
          type: string
        isPinned:
          type: boolean
      required:
        - id
    SpecialHoursSuggestionCard:
      type: object
      description: A pinned card asking the user to confirm special hours for a holiday/event.
      properties:
        id:
          type: string
        specialDate:
          type: string
        specialEvent:
          type: string
      required:
        - id
    QuestionSuggestionCard:
      type: object
      description: A card surfacing an unanswered question from a publisher.
      properties:
        id:
          type: string
        reviewId:
          type: string
        questionContent:
          type: string
        questionAuthorName:
          type: string
        questionAuthorAvatar:
          type: string
        questionSource:
          type: string
        canRespond:
          type: boolean
        responded:
          type: boolean
        questionPermalink:
          type: string
        answerList:
          type: array
          items:
            $ref: '#/components/schemas/AnswerResponse'
        responseContent:
          type: string
        externalId:
          type: string
      required:
        - id
    ReviewSuggestionCard:
      type: object
      description: A card surfacing a review that has not yet been responded to.
      properties:
        id:
          type: string
        reviewId:
          type: string
        reviewTitle:
          type: string
        reviewContent:
          type: string
        reviewAuthorName:
          type: string
        reviewAuthorAvatar:
          type: string
        reviewRating:
          type: integer
          format: int32
        reviewSource:
          type: string
        canRespond:
          type: boolean
        responded:
          type: boolean
        responseContent:
          type: string
        reviewPermalink:
          type: string
      required:
        - id
    AmenitySuggestionCard:
      type: object
      description: A card suggesting an amenity tag be added to a location.
      properties:
        id:
          type: string
        slug:
          type: string
      required:
        - id
    AnswerResponse:
      type: object
      properties:
        content:
          type: string
        authorName:
          type: string
        authorAvatar:
          type: string
    SuggestionCard:
      oneOf:
        - $ref: '#/components/schemas/FeedCardBase'
        - $ref: '#/components/schemas/DataSuggestionCard'
        - $ref: '#/components/schemas/ReviewSuggestionCard'
        - $ref: '#/components/schemas/AmenitySuggestionCard'
        - $ref: '#/components/schemas/SpecialHoursSuggestionCard'
        - $ref: '#/components/schemas/QuestionSuggestionCard'
      description: Union of every card variant returned by suggestion feeds.
    ProfileCompletionCard:
      oneOf:
        - $ref: '#/components/schemas/DataSuggestionCard'
        - $ref: '#/components/schemas/AmenitySuggestionCard'
    ActivityCard:
      oneOf:
        - $ref: '#/components/schemas/SpecialHoursSuggestionCard'
        - $ref: '#/components/schemas/ReviewSuggestionCard'
        - $ref: '#/components/schemas/QuestionSuggestionCard'
    FeedCardEdge:
      type: object
      properties:
        node:
          $ref: '#/components/schemas/SuggestionCard'
        cursor:
          type: string
      required:
        - cursor
    FeedCardConnection:
      type: object
      description: Relay connection of suggestion/activity cards.
      properties:
        totalCount:
          type: integer
          format: int32
        edges:
          type: array
          items:
            $ref: '#/components/schemas/FeedCardEdge'
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
      required:
        - pageInfo
    ProfileCompletionCardEdge:
      type: object
      properties:
        node:
          $ref: '#/components/schemas/ProfileCompletionCard'
        cursor:
          type: string
      required:
        - cursor
    ProfileCompletionCardConnection:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        edges:
          type: array
          items:
            $ref: '#/components/schemas/ProfileCompletionCardEdge'
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
      required:
        - pageInfo
    ActivityCardEdge:
      type: object
      properties:
        node:
          $ref: '#/components/schemas/ActivityCard'
        cursor:
          type: string
      required:
        - cursor
    ActivityCardConnection:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        edges:
          type: array
          items:
            $ref: '#/components/schemas/ActivityCardEdge'
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
      required:
        - pageInfo
    PinnedSuggestionCardEdge:
      type: object
      properties:
        node:
          $ref: '#/components/schemas/PinnedSuggestionCard'
        cursor:
          type: string
      required:
        - cursor
    PinnedSuggestionCardConnection:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        edges:
          type: array
          items:
            $ref: '#/components/schemas/PinnedSuggestionCardEdge'
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
      required:
        - pageInfo
    ActOnCardPayload:
      type: object
      properties:
        status:
          type: string
    PinSuggestionCardPayload:
      type: object
      properties:
        status:
          type: string
    ActionEnum:
      type: string
      enum:
        - ACCEPT
        - REJECT
        - SKIP
        - DATA_INPUT
      description: Possible actions a user can record against a card.
    SortCardEnum:
      type: string
      enum:
        - NEWEST
        - OLDEST
    UpdateCardTypesEnum:
      type: string
      enum:
        - SUGGESTION
        - ACTIVITY
    CardFilterEnum:
      type: string
      enum:
        - QNA
        - REVIEW
        - PRIORITY
    CardAccessTypeEnum:
      type: string
      enum:
        - ACCOUNT
        - LOCATION
    MediaFileType:
      type: object
      description: A single uploaded media file (image/video).
      properties:
        id:
          type: string
        url:
          type: string
        uploadedBy:
          type: string
        fileName:
          type: string
        fileSize:
          type: string
        fileType:
          type: string
        fileExtension:
          type: string
        archived:
          type: boolean
        accountId:
          type: integer
          format: int32
        clientName:
          type: string
        userId:
          type: integer
          format: int32
        thumbnailUrl:
          type: string
        assignedTo:
          $ref: '#/components/schemas/MediaAssignedToType'
        fileDimensions:
          $ref: '#/components/schemas/FileDimensionType'
        uploadedAt:
          type: string
        viewsCount:
          type: integer
          format: int32
      required:
        - id
    MediaAssignedToType:
      type: object
      properties:
        categoryId:
          type: string
        categoryName:
          type: string
        locationIds:
          $ref: '#/components/schemas/LocationIdsType'
        mediaLabels:
          type: array
          items:
            $ref: '#/components/schemas/MediaLabelType'
    LocationIdsType:
      type: object
      properties:
        starred:
          type: array
          items:
            type: string
        unstarred:
          type: array
          items:
            type: string
    FileDimensionType:
      type: object
      properties:
        height:
          type: integer
          format: int32
        width:
          type: integer
          format: int32
    MediaPageInfoType:
      type: object
      properties:
        hasPreviousPage:
          type: boolean
        hasNextPage:
          type: boolean
        endCursor:
          type: string
        startCursor:
          type: string
      required:
        - hasPreviousPage
        - hasNextPage
    MediaFileEdge:
      type: object
      properties:
        node:
          $ref: '#/components/schemas/MediaFileType'
        cursor:
          type: string
      required:
        - cursor
    MediaFileConnection:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        edges:
          type: array
          items:
            $ref: '#/components/schemas/MediaFileEdge'
        pageInfo:
          $ref: '#/components/schemas/MediaPageInfoType'
      required:
        - pageInfo
    MediaFileOfLocationType:
      type: object
      properties:
        id:
          type: string
        url:
          type: string
        thumbnailUrl:
          type: string
        categoryName:
          type: string
        categoryId:
          type: string
        fileType:
          type: string
        starred:
          type: boolean
        viewsCount:
          type: integer
          format: int32
      required:
        - id
    CategoryList:
      type: object
      properties:
        enumKey:
          type: string
        id:
          type: string
        name:
          type: string
        validations:
          $ref: '#/components/schemas/CategoryValidationType'
    CategoryValidationType:
      type: object
      properties:
        height:
          $ref: '#/components/schemas/ValidationType'
        width:
          $ref: '#/components/schemas/ValidationType'
        size:
          $ref: '#/components/schemas/ValidationType'
    ValidationType:
      type: object
      properties:
        minimum:
          type: integer
          format: int32
        maximum:
          type: integer
          format: int32
    CategoriesOfMediaFiles:
      type: object
      properties:
        multipleValues:
          type: boolean
        category:
          $ref: '#/components/schemas/CategoryType'
    MediaLabelType:
      type: object
      properties:
        labelId:
          type: string
        labelName:
          type: string
    BulkUploadTaskDetailsType:
      type: object
      properties:
        taskId:
          type: string
        status:
          type: string
        totalMediaFiles:
          type: integer
          format: int32
        failedMediaFiles:
          type: integer
          format: int32
        successMediaFiles:
          type: integer
          format: int32
        uploadedDate:
          type: string
        accountId:
          type: integer
          format: int32
    UploadedMediaDetails:
      type: object
      properties:
        id:
          type: string
        uploadedAt:
          type: string
        url:
          type: string
        fileName:
          type: string
        fileSize:
          type: string
        fileType:
          type: string
        fileExtension:
          type: string
        thumbnailUrl:
          type: string
        uploadId:
          type: string
        fileDimensions:
          $ref: '#/components/schemas/FileDimensionType'
        categoryName:
          type: string
        categoryId:
          type: string
        locations:
          type: array
          items:
            type: string
        status:
          type: string
    LinkedItemsCountType:
      type: object
      properties:
        locations:
          type: integer
          format: int32
    LocationPhotosUploadStatusType:
      type: object
      properties:
        requestId:
          type: string
        status:
          type: string
        photos:
          type: array
          items:
            $ref: '#/components/schemas/LocationPhotoUploadItem'
    LocationPhotoUploadItem:
      type: object
      properties:
        mediaId:
          type: string
        locationId:
          type: string
        status:
          type: string
        errorMessage:
          type: string
    UploadMediaFilesPayload:
      type: object
      properties:
        taskId:
          type: string
        status:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorType'
    UploadMediaFilePayload:
      type: object
      properties:
        mediaFile:
          $ref: '#/components/schemas/MediaFileType'
        status:
          type: string
    ArchiveMediaItemsPayload:
      type: object
      properties:
        archivedCount:
          type: integer
          format: int32
        status:
          type: string
    AddMediaLabelPayload:
      type: object
      properties:
        mediaLabel:
          $ref: '#/components/schemas/MediaLabelType'
    RemoveMediaLabelPayload:
      type: object
      properties:
        status:
          type: string
    EditMediaLabelPayload:
      type: object
      properties:
        mediaLabel:
          $ref: '#/components/schemas/MediaLabelType'
    AssignCategoryPayload:
      type: object
      properties:
        updatedCount:
          type: integer
          format: int32
        status:
          type: string
    AssignLocationPayload:
      type: object
      properties:
        status:
          type: string
        updatedCount:
          type: integer
          format: int32
    UpdateMediaItemsPayload:
      type: object
      properties:
        mediaFiles:
          type: array
          items:
            $ref: '#/components/schemas/MediaFileType'
    DuplicateMediaItemPayload:
      type: object
      properties:
        mediaFile:
          $ref: '#/components/schemas/MediaFileType'
    RemoveLocationFromMediaPayload:
      type: object
      properties:
        status:
          type: string
        updatedCount:
          type: integer
          format: int32
    AddPhotosToBulkLocationsPayload:
      type: object
      properties:
        requestId:
          type: string
        status:
          type: string
    MediaFilterType:
      type: object
      description: Filter applied to mediaFiles and bulk mutations.
      properties:
        locationIds:
          type: array
          items:
            type: string
        categories:
          type: array
          items:
            $ref: '#/components/schemas/CategoryEnum'
        mediaLabels:
          type: array
          items:
            type: string
        fileName:
          type: string
        uploadedBetween:
          $ref: '#/components/schemas/DateFilterType'
        clientIds:
          type: array
          items:
            type: string
    DateFilterType:
      type: object
      properties:
        from:
          type: string
        to:
          type: string
    UploadFileInputType:
      type: object
      properties:
        url:
          type: string
        uploadId:
          type: string
        filename:
          type: string
    UpdateMediaInput:
      type: object
      properties:
        mediaIds:
          type: array
          items:
            type: string
        fileName:
          type: string
        addLabelIds:
          type: array
          items:
            type: string
        removeLabelIds:
          type: array
          items:
            type: string
    AddLocationMediaItemsInputType:
      type: object
      properties:
        mediaIds:
          type: array
          items:
            type: string
        locationIds:
          type: array
          items:
            type: string
        filters:
          $ref: '#/components/schemas/MediaFilterType'
        selectionType:
          $ref: '#/components/schemas/SelectionTypeEnum'
    AddLocationsMediaItemsInputType:
      type: object
      properties:
        mediaIds:
          type: array
          items:
            type: string
        locationIds:
          type: array
          items:
            type: string
        tag:
          type: string
        filters:
          $ref: '#/components/schemas/MediaFilterType'
        selectionType:
          $ref: '#/components/schemas/SelectionTypeEnum'
    RemoveLocationMediaItemsInputType:
      type: object
      properties:
        mediaIds:
          type: array
          items:
            type: string
        locationIds:
          type: array
          items:
            type: string
        filters:
          $ref: '#/components/schemas/MediaFilterType'
        selectionType:
          $ref: '#/components/schemas/SelectionTypeEnum'
    LocationMediaInputType:
      type: object
      properties:
        locationId:
          type: string
        mediaIds:
          type: array
          items:
            type: string
        photoUrls:
          type: array
          items:
            type: string
      required:
        - locationId
    StarUnstarLocationPhotosInputType:
      type: object
      properties:
        locationId:
          type: string
        mediaIds:
          type: array
          items:
            type: string
        starred:
          type: boolean
      required:
        - locationId
        - starred
    SortEnum:
      type: string
      enum:
        - NEWEST
        - OLDEST
        - NAME_ASC
        - NAME_DESC
    CategoryEnum:
      type: string
      enum:
        - COVER
        - PROFILE
        - LOGO
        - EXTERIOR
        - INTERIOR
        - AT_WORK
        - FOOD_AND_DRINK
        - MENU
        - COMMON_AREA
        - ROOMS
        - TEAMS
        - ADDITIONAL
      description: All supported media categories.
    TaskStatusEnum:
      type: string
      enum:
        - IN_PROGRESS
        - COMPLETED
        - FAILED
