openapi: 3.0.0
info:
  title: markee api
  version: DEVELOPMENT-SNAPSHOT
  contact:
    email: tech@excelsea.de
  description: This api is for Markee
servers:
  - url: 'https://api.mark.ee/api'
    description: LIVE
paths:
  /admin/workspaceSetting:
    get:
      summary: GET Workspace Setting List
      operationId: get-workspace-setting-list
      description: |-
        This call provides a list of settings.
        You need to provide a workspace id and you get all the settings of this workspaces and all underneath.
      parameters:
        - schema:
            type: integer
          in: query
          name: id
          description: id of the workspace
          required: true
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n elements of the list
        - schema:
            type: integer
          in: query
          name: take
          description: take n elements of the list
        - schema:
            type: string
          in: query
          name: filter
          description: fuzzy filter for the name of the workspace
        - schema:
            type: boolean
          in: query
          name: whiteLabeled
          description: filter if workspace settings having a white label definition
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultWorkspaceSetting'
              examples: {}
      tags:
        - workspacesetting
  '/admin/workspaceSetting/{id}':
    get:
      summary: GET Admin Workspace Setting
      operationId: get-workspace-setting
      description: |-
        get detail for workspace setting

        Path Param:
        id: the id of the workspace setting
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceSetting'
              examples: {}
      parameters: []
      tags:
        - workspacesetting
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        description: id of the workspace setting
        required: true
    delete:
      summary: DELETE Admin Workspace Setting
      operationId: delete-workspace-setting
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        delete a workspace setting. This workspace setting will not be available afterwards anymore!

        Path Param:
        id: id of the workspace setting
      tags:
        - workspacesetting
    put:
      summary: PUT Admin Workspace Setting
      operationId: put-workspace-setting
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        update a workspace setting

        Path Param:
        id: the id of the workspace setting
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceSettingUpdate'
        description: workspace setting object
      tags:
        - workspacesetting
    post:
      summary: POST Admin Workspace Setting
      operationId: post-workspace-setting
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - workspacesetting
      description: |-
        create a new Space Setting for a Workspace

        Path Param:
        id: workspace id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceSettingInsert'
  /location:
    get:
      summary: GET location list
      tags:
        - location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultLocation'
              examples: {}
      operationId: get-location-list
      description: |-
        use this method to get a list of locations belonging to a location, containing the minimum set of information.
        To get more detailled information use the corresponding detail methods.
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: optional filter for the location name
        - schema:
            type: integer
          in: query
          name: skip
          description: optinal integer to skip the first n results
        - schema:
            type: integer
          in: query
          name: take
          description: optional filter to get only n results
        - schema:
            type: string
          in: query
          name: licences
          description: comma seperated list of licence names to filter locations
        - schema:
            type: string
            enum:
              - PROCESSING
              - ACTIVE
              - EXPRING
              - EXPIRINGON
              - FAILED
          in: query
          name: statuses
          description: |
            comma seperated list of statuses to filter for locations having subscriptions with this status
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          required: true
          description: id of the parental company id
        - schema:
            type: string
            enum:
              - ProfileQuality
              - BenchmarkDetails
          in: query
          name: enrich_with
          description: 'define here with which data you want to enrich the location list response. Be aware, this may have impact in the performance of the call. Multiple values can be used and seperated via a commata'
          style: spaceDelimited
        - schema:
            type: string
          in: query
          name: tags
          description: 'filter by tags, which should exist on company level.'
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          name: sort
          description: 'sort by column id, asc or desc, default is desc'
  '/location/media/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
          exclusiveMinimum: false
          minimum: 0
        name: id
        in: path
        required: true
        description: unique id of the location you want to get the media information for
    get:
      summary: GET Location Media
      tags:
        - location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationMedia'
      operationId: get-location-media-id
      description: |-
        To get all the media information for a location.
        Those are images, urls and everything connected to social meda.
    put:
      summary: PUT location media
      operationId: put-location-media-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Use this method to update all the media information for this location.
        All null paramters are getting deleted, except for custom images, since
        these are simply used to update the order in which they appear in the gallery,
        rather than to add or delete them. 

        If you want to preserve them, use the get method first to obtain the current set of data and replace only the fields you want.

        Sending null for the customImages field will simply cause the api to ignore a new ordering,
        whereas when sending an array, it should correspond to the extact same content of the array of customImages
        ids (but could have a different order), so the api can use it to define a new order based on the array sent.

        If you want to preserve the order of the images in the gallery, either send null for the customImages field, or send 
        the list of customImages ids in the exact order as they were retrieved from the api.

        In case you want to update images or urls, use the corresponding update methods with their unique id you get from the GET call.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationUpdateMedia'
        description: ''
      tags:
        - location
  /company:
    get:
      summary: GET Company List
      tags:
        - company
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultCompany'
      operationId: get-company
      description: |-
        Get a list of companies with their minimum set of information.
        You can get the companies for a single workspace (defined by the id), the workspace you selected and all underneath (with id paramter and recursive = true) or all companies you allowed to see (leave id and recursive undefined).

        The companies are always sorted by their id (ascending), you can use the before,after and take parameter to navigate through the list.

        Additionally you can use the filter parameter to filter for the name (fuzzy search), licences and statuses to filter for subscriptions being assigned to at least one location of the company.
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: filter for company name
        - schema:
            type: integer
          in: query
          name: after
          description: use this when you only interested in company with ids after that one
        - schema:
            type: integer
          in: query
          description: use this when you only interested in company with ids before that one
          name: before
        - schema:
            type: integer
          in: query
          name: take
          description: 'Get only x elements. If it''s not defined, the fallback is 500 elements. The maximum value you can request is 500; And if it exceeds this, the API will reject the request.'
        - schema:
            type: integer
          in: query
          name: id
          description: id filter of the parental workspace
        - schema:
            type: string
          in: query
          name: licences
          description: comma separated list of licence names
        - schema:
            type: string
          in: query
          name: licenseAllOf
          description: Specifies a list of licenses where all the licenses must match for the search to be valid. This is useful for filtering results that must possess all the provided licenses simultaneously (Cannot be used together with licenseAnyOf & Using this will invalidate all normal filters)
        - schema:
            type: string
          in: query
          name: licenseAnyOf
          description: Specifies a list of licenses where at least one of the licenses must match for the search to be valid. This is useful for filtering results that can hold any one of the provided licenses (Cannot be used together with licenseAllOf & Using this will invalidate all normal filters)
        - schema:
            type: string
            enum:
              - ACTIVE
              - PROCESSING
              - FAILED
              - FINISHED
              - EXPIRING
          in: query
          name: statuses
          description: comma separated statuses filter
        - schema:
            type: string
            enum:
              - ACTIVE
              - PROCESSING
              - FAILED
              - FINISHED
              - EXPIRING
          in: query
          name: statusAnyOf
          description: Specifies a list of statuses where at least one of the statuses must match for the search to be valid. This is useful for filtering results that can be in any one of the provided statuses (Cannot be used together with statusAllOf & Using this will invalidate all normal filters)
        - schema:
            type: string
            enum:
              - ACTIVE
              - PROCESSING
              - FAILED
              - FINISHED
              - EXPIRING
          in: query
          name: statusAllOf
          description: Specifies a list of statuses where all the statuses must match for the search to be valid. This is useful for filtering results that must meet all the provided statuses simultaneously (Cannot be used together with statusAnyOf & Using this will invalidate all normal filters)
        - schema:
            type: boolean
          in: query
          name: recursive
          description: set to true if you want to search recursively in all workspaces underneath
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          name: sort
          description: 'asc or desc, filter for sorting companies by id'
        - schema:
            type: boolean
          in: query
          name: exactCount
          description: set to true if you want the call to return the exact count of companies instead of sometimes estimating it.
        - schema:
            type: string
            enum:
              - BusinessLogo
          in: query
          name: enrich_with
          description: "define here with which data you want to enrich the company list response. Be aware, this may have impact in the performance of the call. Multiple values can be used and seperated via a comma"
  '/company/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
    get:
      summary: GET Company
      tags:
        - company
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Company'
      operationId: get-company-id
      description: |-
        Returns the detailed company json object defined by the company id.
        The result contains all information of the company.
    put:
      summary: PUT Company
      operationId: put-company-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'Method to update a existing company. '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyUpdate'
            examples:
              example-1:
                value:
                  name: TestName
                  shortName: test
                  legalType: AG
                  externalId: '000122335654'
        description: ''
      tags:
        - company
    delete:
      summary: DELETE Company
      operationId: delete-company-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'A delete method to remove a company and all of it''s locations, if there are no active subscriptions.'
      tags:
        - company
    post:
      summary: POST Company
      operationId: post-company-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyInsert'
      description: |-
        Create a new company in a workspace.
        The id you need to set is the parental workspace id
      tags:
        - company
  '/company/{id}/owner':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
    get:
      summary: GET Company Owner
      tags:
        - company
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAccount'
      operationId: get-company-owner
      description: Returns the UserAccount corresponding to the owner of the company when the company has been claimed
  /subscription:
    get:
      summary: GET Subscription List
      tags:
        - subscription
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSubscription'
      operationId: get-subscription-list
      description: |-
        Returns a list of subscription, you can filter them by a location or a licence.
        Additionally you can set product and status filter.
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: the id of the parental context
          required: true
        - schema:
            type: string
            enum:
              - Licence
              - Location
          in: query
          name: contextType
          description: parental context
          required: true
        - schema:
            type: string
            enum:
              - Listing
              - CallTracking
              - QR
              - ListingPortal
              - Advertisement
              - ReachEnhancement
              - Budget
              - GooglyMyBusiness
              - Targeting
              - MuellerMedienPaket
              - Website
              - DynamicVideo
              - WebsiteWidget
              - DataExports
          in: query
          name: products
          description: comma seperated list of products
        - schema:
            type: string
            enum:
              - ACTIVE
              - PROCESSING
              - EXPIRING
              - FINISHED
              - FAILED
          in: query
          name: statuses
          description: comma sperated list of statuses
  '/subscription/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
    post:
      summary: POST Subscription
      operationId: post-subscription
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSubscriptionIds'
      tags:
        - subscription
      description: |-
        Connect a licence (defined by the id in the path) to (a) location(s)  (defined by thelocationIds query parameter).
        Depending on the product configuration of the licence you need to set single parts of the json body.

        You always need to set a start date, this can not be in the past.
        An end date is optional, in case it is getting used it needs to be after the start date.

        You can use name and/or externalId to put your own additional descriptions to a subscription (e.g. order number etc.).

        In case the licence is configured with a multiproduct, you will get multiple subscription ids in the response.
        One for each product field per location.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionInsert'
      parameters:
        - schema:
            type: string
          in: query
          name: locationIds
          description: comma seperated list of location ids you want to use
          required: true
    put:
      summary: PUT Subscription
      operationId: put-subscription
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Method to update some fields belonging to a subscription.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionUpdate'
      tags:
        - subscription
  '/budget/{id}':
    get:
      summary: GET Budget
      tags:
        - budget
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Budget'
      operationId: get-budget
      description: get the budget part of a subscription in case the subscription is booked with a multi product licence having a budget included.
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: unique id of the budget subscription
    put:
      summary: PUT Budget
      operationId: put-budget
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BudgetUpdate'
      description: You can update a budget of subscription being in the future and not having a fixed budget defined on licence level.
      tags:
        - budget
  '/budget/target/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: licence id
    get:
      summary: GET Budget Target Settings
      tags:
        - budget
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BudgetTarget'
      operationId: get-budget-target-id
      description: |-
        Get the budget target and budget target type of a licence, in case they are fixed.
        If not, the user needs to set them when subscribing to this licence.
  /subscription/unsubscribe:
    delete:
      summary: DELETE Subscriptions
      operationId: delete-subscription-unsubscribe
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultLong'
      description: ' unsubscribe a subscription'
      parameters:
        - schema:
            type: string
            format: int64
          in: query
          name: ids
          required: true
          description: comma seperated list of subscription ids
      tags:
        - subscription
  '/subscription/copy/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the subscription
    post:
      summary: POST Subscription Copy
      operationId: post-subscription-copy
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'Copies the data of an existing subscription to create a new subscription. This has to be unlocked for the licence the subscription belongs to. The method is only implemented for subscriptions including the products listing, qr code, advertisement, reachEnhancement, budget, targeting and listingPortal. The method returns a list of the new created subscription ids. '
      parameters:
        - schema:
            type: string
          in: query
          name: locationIds
          description: comma seperated list of location ids
          required: true
      tags:
        - subscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionCopy'
  '/subscription/extended/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the subscription you want to get extended information for
    get:
      summary: GET Subscription Extended
      tags:
        - subscription
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSubscriptionInformation'
      operationId: get-subscription-extended
      description: |-
        This response of this method is a generic list of extended subscription information and actions from our 3rd party systems.
        Those information are especially for enhanced user of the markee. You need to clarify upfront if those information make sense for your use cases.
  '/subscription/action/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the subscription
    post:
      summary: POST Subscription Action Execution
      tags:
        - subscription
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: get-subscription-action
      description: ' This methods executes a predefined action for a subscription. '
      parameters:
        - schema:
            type: integer
          in: query
          name: actionId
          required: true
          description: id of the action you want to execute
  '/subscription/addon/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: subscription id
    put:
      summary: PUT Subscription Addon
      operationId: put-subscription-addon
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'With this method you''re able to activate or deactivate the state of a subscription addon. The addon will run until the end of the montly interval and stop then. '
      parameters:
        - schema:
            type: integer
          in: query
          name: addonId
          description: id of the addon
          required: true
        - schema:
            type: boolean
          in: query
          name: state
          required: true
          description: state of addon you want to set
      tags:
        - subscription
  '/advertisement/targeting/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: subscription id of the advertisement subscription tied to the targeting
    get:
      summary: GET Advertisement Banner Targeting
      tags:
        - advertisement
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Targeting'
      operationId: get-advertisement-targeting
      description: Get the targeting details for an advertisement subscription product
    put:
      summary: PUT Advertisement Targeting
      operationId: put-advertisement-targeting
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetingUpdate'
      description: 'Method to update a targeting entry '
      tags:
        - advertisement
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TargetingUpdate'
  /advertisement/targeting/type:
    get:
      summary: GET Advertisement Targeting Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultTargetingType'
      operationId: get-advertisement-targeting-type
      description: 'Returns a list of all possible types of targeting for an advertisement license or subscription '
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: context id of the advertisement license or subscription
          required: true
        - schema:
            type: string
            enum:
              - License
              - Subscription
          in: query
          name: contextType
          required: true
      tags:
        - advertisement
  /advertisement/targeting/locations:
    get:
      summary: GET Advertisement Targeting Location List
      tags:
        - advertisement
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultLocationTargetingGroup'
      operationId: get-advertisement-targeting-locations
      description: Get location groups you can use for targeting settings
      parameters:
        - schema:
            type: integer
          in: query
          name: id
          description: id of workpace
          required: true
        - schema:
            type: string
          in: query
          name: name
          description: name of locationg group
    parameters: []
  /advertisement/targeting/available/tids:
    get:
      summary: GET Advertisement Targeting Tids
      tags:
        - advertisement
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKeyValueString'
      operationId: get-advertisement-targeting-available-tids
      description: get the categories defined by a tid (= etb no)
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: 'name filter, can be used to filter for a specific tid'
        - schema:
            type: integer
            format: int64
          in: query
          name: licenseId
          description: id of the advertisement licence you want to get the informations for
          required: true
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
  '/reachEnhancement/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the reach enhancement subscription
    get:
      summary: GET Reach Enhancement
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReachEnhancement'
      operationId: get-reachEnhancement
      description: Get the each enhancement for a subscription product field
      tags:
        - sea
        - socialAd
        - localCampaigns
      parameters: []
    put:
      summary: PUT Reach Enhancement
      operationId: put-reachEnhancement
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'Method to update a reach enhancement destinationUrl and displayUrl '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReachEnhancementUpdate'
        description: ''
      tags:
        - sea
        - socialAd
        - localCampaigns
      parameters: []
  '/reachEnhancement/segment/{id}':
    get:
      summary: GET SEA Segment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Segment'
      operationId: get-reachEnhancement-segment
      description: |-
        Get the segment detail of a segment id.
        The id path parameter is the unique segment id.
      tags:
        - sea
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: ''
    put:
      summary: PUT SEA Segment
      operationId: put-reachEnhancement-segment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to update a segment of a sea campaign.
        The id path parameter is the unique segment id.

        Define either a categoryTaxomoyId (get the available category taxonomies by the method /reachEnhancement/taxonomy) or define a complete customized segment by your own (customSetting) by setting keywords and text elements.

        Note:
        By default the location targeting will be generated by a radius (you can define) around the locations city.
        As an alternative you can also define an includedLocations list, by setting the corresponding engine codes (see /reachEnhancement/EngineCodes).
        If you want to to exclude locations actively, you can use the same engine codes for the excludedLocations list.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SegmentUpdate'
      tags:
        - sea
    post:
      summary: POST SEA Segment
      operationId: post-reachEnhancement-segment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Create new segments for a sea campaign.
        The id path parameter is the parental unique rech enhancement id.


        Define either a categoryTaxomoyId (get the available category taxonomies by the method /reachEnhancement/taxonomy) or define a complete customized segment by your own (customSetting) by setting keywords and text elements.

        Note:
        If you want to modify the targeted locations do it by using the PUT method for the segment after you created it.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SegmentInsert'
      tags:
        - sea
      parameters: []
    delete:
      summary: DELETE SEA Segment
      operationId: delete-reachEnhancement-segment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to delete sea segment entry.
        The id path parameter is the unique segment id.
      tags:
        - sea
      parameters: []
  '/reachEnhancement/taxonomy/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: ' id of the category taxonomy'
    get:
      summary: Get Taxonomy
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryTaxonomy'
      operationId: get-reachEnhancement-taxonomy
      description: Get the category taxonomy details
      tags:
        - sea
  /reachEnhancement/taxonomy:
    get:
      summary: Get Taxonomies
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultCategoryTaxonomy'
      operationId: get-reachEnhancement-taxonomies
      description: Get all the category taxonomies being defined for this workspace. You can use them for the products regarding reach enhancements.
      parameters:
        - schema:
            type: string
          in: query
          name: locationIds
          description: Comma separated list of location ids of interest
          required: true
        - schema:
            type: string
          in: query
          name: filter
          description: optional filter for the name of the taxonomy
      tags:
        - sea
  /reachEnhancement/segment/pause:
    put:
      summary: PUT Segment Pause
      operationId: put-reachEnhancement-segment-pause
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Method to pause a segment of a sea campaign
      parameters:
        - schema:
            type: string
          in: query
          name: ids
          description: comma seperated list of segment ids
          required: true
        - schema:
            type: boolean
          in: query
          name: shallBePaused
          required: true
          description: indicates if the segments shall be paused or activated
      tags:
        - sea
  /reachEnhancement/EngineCodes:
    get:
      summary: GET Engine Codes
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListEngineCode'
      operationId: get-reachEnhancement-EngineCodes
      description: 'Method to get List of all available engine codes that can be used for including or excluding locations in reach enhancement targetings (as sea or socialAd). Code language for the parameter is in ISO 3166-1 alpha-2 country code, if your language is not supported you will get fallback values (german or english).'
      parameters:
        - schema:
            type: string
          in: query
          name: language
          description: ISO 3166-1 alpha-2 country code
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n entries
        - schema:
            type: integer
          in: query
          name: take
          description: take n entries
        - schema:
            type: string
          in: query
          name: filter
          description: filter for name or postcode of location
        - schema:
            type: string
            enum:
              - google
              - facebook
          in: query
          name: engine
          description: 'engine you want to get the codes for, default is google'
      tags:
        - sea
  '/location/basic/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        
    get:
      summary: GET Location Basic
      tags:
        - location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationBasic'
      operationId: get-location-basic-id
      description: Returns the detailed basic json object defined by the location id. The result contains the basic set of the location information.
      parameters:
        - schema:
            type: string
          in: query
          name: language
          description: 'language code, ISO 3166-1 alpha-2 , e.g. en. If not defined, the language setting of your user is getting used'
    put:
      summary: PUT Location Basic
      operationId: put-location-basic-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationUpdateBasic'
        description: ''
      description: Method to update the basic data of a location
      tags:
        - location
  '/location/openinghours/{id}':
    get:
      summary: GET Location Opening Hours
      tags:
        - location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpeningHours'
      operationId: get-opening-hours
      description: |-
        Path param: id of the opening hours
        get a single opening hour information of a location
      parameters: []
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: ''
    post:
      summary: POST Location Opening Hours
      operationId: post-opening-hours-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpeningHoursInsert'
        description: ''
      description: |-
        Path param: id of the location

        create a new opening hour for a location
      tags:
        - location
    delete:
      summary: DELETE Location Opening Hours
      operationId: delete-opening-hours-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Path param: id of the opening hours

        Method to delete the opening hours of a location
      tags:
        - location
    put:
      summary: PUT Location Opening Hours
      operationId: put-openingHours-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - location
      description: |-
        Path param: id of the opening hours

        Method to update the opening hours of a location.
        Each day that is not declare will be consider close for openingHoursType : default and customPeriod
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpeningHoursUpdate'
        description: ''
  '/location/additional/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        description: id of the location
        required: true
    get:
      summary: GET Location Additional
      tags:
        - location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationAdditional'
      operationId: get-location-additional-id
      description: |-
        Returns the additional basic json object defined by the location id.
        The result contains the additional set of the location information.
    put:
      summary: PUT Location Additional
      operationId: put-location-additional-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Method to update the additional data of a location
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationUpdateAdditional'
      tags:
        - location
  '/location/products/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: id of the location
    get:
      summary: GET Location Products
      tags:
        - location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultProduct'
      operationId: get-location-products-id
      description: get a list of connected products for a location
  /location/googleAttributes:
    get:
      summary: GET Location Google Attributes
      tags:
        - location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryField'
      operationId: get-location-googleAttributes
      description: |-
        Returns the Google Attributes for a location
        Code language for the parameter is in ISO 3166-1 alpha-2 country code
        Examples: de,en
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: locationId
          description: location id
          required: true
        - schema:
            type: string
          in: query
          name: language
          description: language code
          required: true
  '/advertisement/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: subscription id of an advertisement subscription
    get:
      summary: GET Advertisement
      tags:
        - advertisement
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Advertisement'
      operationId: get-advertisement
      description: Get the advertisement details for a subscription product field
    put:
      summary: PUT Advertisement
      operationId: put-advertisement
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'Method to update an advertisment entry '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdvertisementUpdate'
      tags:
        - advertisement
  /advertisement/field:
    get:
      summary: GET Advertisement Field List
      tags:
        - advertisement
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultAdvertisementFields'
      operationId: get-advertisement-field
      description: 'Returns a list of all (mandatory and optional) fields you can or need to set for an advertisement subscription '
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: context id of the license or subscription
          required: true
        - schema:
            type: string
            enum:
              - Subscription
              - Licence
          in: query
          name: contextType
          description: context type
          required: true
  '/calltracking/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the subscription the call tracking is connected to
    get:
      summary: GET CallTracking
      tags:
        - calltracking
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallTracking'
      operationId: get-calltracking
      description: 'method to get a single call tracking object including its extensions '
      parameters: []
    put:
      summary: PUT CallTracking
      operationId: put-calltracking
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'Method to update an existing location call tracking. '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CallTrackingUpdate'
      tags:
        - calltracking
  '/location/googleAttributes/{ids}':
    parameters:
      - schema:
          type: string
        name: ids
        in: path
        required: true
        description: location ids
    put:
      summary: PUT Location Google Attributes
      operationId: put-location-googleAttributes-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - location
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListGoogleAttributesUpdate'
          application/xml:
            schema:
              type: object
              properties: {}
      description: |
        Update the Google Attributes for a list of locations.
        All the locations should have the same main category and should be located in the same country.
  /location/bulk:
    get:
      summary: GET Location Bulk
      tags:
        - location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultLocationBulk'
      operationId: get-location-bulk
      description: retuns location Bulk
      parameters:
        - schema:
            type: string
            format: ''
          in: query
          name: ids
          description: the ids of the context
          allowEmptyValue: true
          required: true
        - schema:
            type: string
            enum:
              - NAME
              - CATEGORIES
              - TAG
              - EMAIL
              - WEBSITE
              - DISPLAY_URL
              - PHONE_MAIN
              - PHONE_FAX
              - PHONE_LANDLINE
              - PHONE_MOBILE
              - CURRENT_OFFER
              - CURRENT_OFFER_URL
              - DESCRIPTION
              - PRODUCTS
              - SERVICES
              - SPECIAL_FIELDS
              - MEMBERSHIP
              - BRANDS
              - LANGUAGES
              - FOUNDING_YEAR
              - KEYWORDS
              - PAYMENTS_METHODS
              - LOGO
              - GALLERY
              - PANORAMA
              - GMB_PROFILE
              - GMB_BACKGROUND
              - FACEBOOK_PROFILE
              - FACEBOOK_BACKGROUND
              - TWITTER
              - YOUTUBE_URL
              - FACEBOOK_URL
              - OPENINGHOURS
              - SPECIALOPENINGHOURS
              - MENU_URL
              - ORDER_URL
              - RESERVATIONS_URL
          in: query
          name: keyFilters
          description: 'optional list of  bulk key you want to filter for. If it''s null all keys will be reconsidered , a coma separate list '
          allowEmptyValue: false
        - schema:
            type: string
            enum:
              - Location
              - Company
          in: query
          name: contextType
          description: context of the ids you're passing
          required: true
    put:
      summary: PUT Location Bulk
      operationId: put-location-bulk
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListResultLocationBulk'
        description: ''
      parameters:
        - in: query
          name: ids
          schema:
            type: string
            format: ''
          description: id of the locations or the company. Choose multiple location ids for the bulk edit or a single company id
          allowEmptyValue: false
          required: true
        - schema:
            type: string
            enum:
              - Location
              - Company
          in: query
          name: contextType
          description: context of the ids you're passing
          required: true
      description: update location Bulk
      tags:
        - location
  '/location/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: id of the location
    delete:
      summary: DELETE Location
      operationId: delete-location-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: ' delete method to delete location'
      tags:
        - location
    post:
      summary: POST Location
      operationId: post-location-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to create a location by defining all mandatory fields.
        If you want to insert some additional, media or social media fields, use the corresponding update methods afterwards.

        If a self service user wants to create a new location for her/his company, pinVerification and claimId need to be set.
        Those need to be triggerd by the /company/claim endpoint via the location main phone number.

        Path Param:
         id: id of the parental company
      tags:
        - location
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationInsert'
        description: ''
  /location/openinghours:
    get:
      summary: GET Location Opening Hours List
      tags:
        - location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultOpeningHours'
      operationId: get-location-openinghours-list
      description: get all opening hours information of a location
      parameters:
        - schema:
            type: integer
          in: query
          description: id of the location
          name: id
          required: true
        - schema:
            type: string
            enum:
              - default
              - customPeriod
              - customDate
          in: query
          description: |
            openingHoursType
          name: openingHoursType
  '/calltracking/extension/{id}':
    put:
      summary: PUT CallTracking Extension
      operationId: put-calltracking-extension
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to update or insert a list of use cases for a call tracking extensions.
        Those use cases can be freely defined or current subscriptions.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CallTrackingExtensionUpdate'
      parameters:
        - schema:
            type: string
          in: query
          name: extensions
          description: comma seperated list of extensions
          required: true
      tags:
        - calltracking
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the subscription the call tracking is attached to
  /calltracking/whisper:
    get:
      summary: GET CallTracking Whisper
      tags:
        - calltracking
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKeyValueInt'
      operationId: get-calltracking-whisper
      description: Returns a list of whisper templates. Use the ids in the PUT Call tracking method
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: context id of the current data object
          required: true
        - schema:
            type: string
            enum:
              - Company
              - Workspace
              - Location
          in: query
          name: contextType
          required: true
          description: context type the template are attached to
  /calltracking/welcome:
    get:
      summary: GET CallTracking Welcome
      tags:
        - calltracking
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKeyValueInt'
      operationId: get-calltracking-welcome
      description: Returns a list of welcome announcement templates. Use the ids in the PUT Call tracking method
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: context id of the current data object
          required: true
        - schema:
            type: string
            enum:
              - Company
              - Workspace
              - Location
          in: query
          name: contextType
          required: true
          description: context type the template are attached to
  /calltracking/conversion-tracking:
    get:
      summary: GET CallTracking ConversionTracing
      tags:
        - calltracking
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKeyValueInt'
      operationId: get-calltracking-conversion-tracking
      description: Returns a list of conversion tracking templates. Use the ids in the PUT Call tracking method
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: context id of the current data object
          required: true
        - schema:
            type: string
            enum:
              - Company
              - Workspace
              - Location
          in: query
          name: contextType
          required: true
          description: context type the template are attached to
        - schema:
            type: integer
            format: int64
          in: query
          name: licenceId
          description: license id of a licence containing call tracking
          required: true
  '/listingPortal/{id}':
    get:
      summary: GET ListingPortal
      tags:
        - listingportal
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListingPortal'
      operationId: get-listingPortal
      description: Get the listing portal details for a subscription product field
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of subscription representing a listing portal
    put:
      summary: PUT ListingPortal
      operationId: put-listingPortal
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Method to update an existing listing portal entry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListingPortalUpdate'
      tags:
        - listingportal
  /listingPortal/stage:
    get:
      summary: GET ListingPortal Stage List
      tags:
        - listingportal
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultStage'
      operationId: get-listingPortal-stage-list
      description: Gets staged data sets for listing portals which need to be approved/rejected/fixed.
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: a filter for the name or id
        - schema:
            type: string
            enum:
              - FREE
              - PREMIUM
              - BASIC
              - ALLINCLUSIVE
          in: query
          name: license
          description: optional license type filter
        - schema:
            type: string
            enum:
              - FE_ordering_process
              - TA_ordering_process
              - TA_power_listing
              - Hutzler_ordering_process
              - TG_Medien_ordering_process
              - VWH_ordering_process
          in: query
          name: listingPortal
        - schema:
            type: integer
          in: query
          name: skip
        - schema:
            type: integer
          in: query
          name: take
  '/listingPortal/stage/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: id of a stage entry
    get:
      summary: GET ListingPortal Stage
      tags:
        - listingportal
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Stage'
      operationId: get-listingPortal-stage
      description: Get entry from stage table
    put:
      summary: PUT ListingPortal Stage
      operationId: put-listingPortal-stage
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Update stage table entry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Stage'
      tags:
        - listingportal
  '/listingPortal/stage/status/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: id of stage entry
    put:
      summary: PUT ListingPortal Stage Status
      operationId: put-listingPortal-stage-status
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: set stage status
      parameters:
        - schema:
            type: boolean
          in: query
          name: status
          description: Status of stage entry
        - schema:
            type: boolean
          in: query
          name: sugarImport
          description: Set boolean whether entry should be imported to sugar
          required: true
      tags:
        - listingportal
  '/website/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: subscription id representing a website
    get:
      summary: GET Website
      tags:
        - website
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Website'
              examples:
                example-1:
                  value:
                    id: 0
                    url: string
                    subDomain: string
                    textFields:
                      - key: string
                        value: string
                    imageFields:
                      - key: string
                        value: string
                    template:
                      key: 0
                      value: string
                    siteId: string
      operationId: get-website
      description: |
        Get the website details for a subscription id.
    put:
      summary: PUT Website
      operationId: put-website
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Method to update website data
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebsiteUpdate'
      tags:
        - website
  '/website/configuration/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of a website licence
    get:
      summary: GET Website Configuration
      tags:
        - website
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebsiteConfiguration'
      operationId: get-website-configuration
      description: Get configurations for a website licence
  /contract:
    get:
      summary: GET Contract List
      tags:
        - contract
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
            application/xml:
              schema:
                $ref: '#/components/schemas/ListResultContract'
      operationId: get-contract-list
      description: Returns a list of contract of a company
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: filter for the name
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of elements
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          required: true
          description: id of the parental company
  '/contract/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: contextual id
    get:
      summary: GET Contract
      tags:
        - contract
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contract'
      operationId: get-contract
      description: |-
        get detailled contract information.
        Use the contract id for the path parameter.
    post:
      summary: POST Contract
      operationId: post-contract-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Method to create a contract including some licences for a company or a workspace. Define the context by the queryParameter and the identifier (id) in the path.
      parameters:
        - schema:
            type: string
            enum:
              - Company
              - Workspace
          in: query
          name: parentType
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractInsert'
      tags:
        - contract
    put:
      summary: PUT Contract
      operationId: put-contract-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Method to update some fields belonging to a contract. Use the id of the contract you want to update in the path parameter.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractUpdate'
      tags:
        - contract
  /licence/available:
    get:
      summary: GET Licence Available
      tags:
        - licence
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultString'
      operationId: get-licence-available
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: contextId
          description: the id of the parental company or workspace
        - schema:
            type: string
            enum:
              - Company
              - Workspace
          in: query
          name: contextType
          description: parental context
          required: true
        - schema:
            type: boolean
          in: query
          name: recursive
          description: return a list of all available licences for the respective workspace and all it's childs
        - schema:
            type: string
          in: query
          name: filter
          description: ' a filter for the name'
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n elements
        - schema:
            type: integer
          in: query
          description: take n elements
          name: take
      description: Returns a list of available licences of a company or a workspace
  '/licence/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the licence
    get:
      summary: GET Licence
      tags:
        - licence
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Licence'
      operationId: get-licence
      description: ' get the licence '
    put:
      summary: PUT Licence
      operationId: put-licence
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - licence
      description: ' Method to update some fields belonging to a licence.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenceUpdate'
  '/offer/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: contextual id
    get:
      summary: GET Offer
      tags:
        - offer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Offer'
      operationId: get-offer
      description: Returns an offer and its products with its settings. Define the offer id you want to get data for in the path as path parameter.
    post:
      summary: POST Offer
      operationId: post-offer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Create a new offer for a workspace.
        Define the workspace id in the path as path parameter.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OfferInsert'
      tags:
        - offer
    put:
      summary: PUT Offer
      operationId: put-offer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Update an existing offer.
        Define the offer id you want to update the path as path parameter.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OfferUpdate'
      tags:
        - offer
    delete:
      summary: DELETE Offer
      operationId: delete-offer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Delete an offer
        Define the offer id you want to delete the path as path parameter.
      tags:
        - offer
  /offer:
    get:
      summary: GET Offer List
      tags:
        - offer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultOffer'
      operationId: get-offer-list
      description: 'Returns a list of product offers of a certain workspace '
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: filter for the name
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n elements
        - schema:
            type: integer
          in: query
          name: take
          description: take n elements
        - schema:
            type: integer
          in: query
          name: id
          description: id of parental workspace
          required: true
        - schema:
            type: boolean
          in: query
          name: recursive
          required: true
          description: returns either the offers for one space or for one space and all its child spaces
  /offer/product/available:
    get:
      summary: GET Offer Product Available
      tags:
        - offer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultProductSetting'
      operationId: get-offer-product-available
      description: |-
        Get product settings.
        Depending on the context you will get the most abstract product settings on workspae level you can use to create an offer.
        If licences and subscriptions already have been created you can also get the product settings for those (read only).
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: contextual id
          required: true
        - schema:
            type: string
            enum:
              - Workspace
              - Licence
              - Subscription
          in: query
          name: contextType
          description: determines the parental context
          required: true
  /licence:
    get:
      summary: GET Licence List
      tags:
        - licence
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultLicence'
      operationId: get-licence-list
      description: ' Returns a list of available licences of a company or a contract '
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: ' the id of the parental company or contract'
          required: true
        - schema:
            type: string
            enum:
              - Contract
              - Company
          in: query
          required: true
          name: contextType
        - schema:
            type: string
            enum:
              - Listing
              - CallTracking
              - QR
              - ListingPortal
              - Advertisement
              - ReachEnhancement
              - Budget
              - GoogleMyBusiness
              - Targeting
              - MuellerMedienPaket
              - Website
              - DynamicVideo
              - Meinungsmeister
              - WebsiteWidget
              - DataExports
          in: query
          name: products
          description: 'optional product filter, comma seperated'
        - schema:
            type: string
            enum:
              - INACTIVE
              - ACTIVE
              - NOTBOOKABLE
          in: query
          name: statuses
          description: 'optional status filter, comma seperated'
        - schema:
            type: string
          in: query
          name: filter
          description: filter for the name
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
    parameters: []
  /listing/getDuplicates:
    get:
      summary: GET Listing Duplicate List
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultDuplicates'
      operationId: get-listing-duplicate-list
      description: This method provides you all the possible duplicates of a location on the listing publisher portals.
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          required: true
          description: id of the location you want to get possible duplicates for
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n entries
        - schema:
            type: integer
          in: query
          name: take
          description: take n entries
        - schema:
            type: string
            enum:
              - POSSIBLE_DUPLICATE
              - SUPPRESSION_REQUESTED
              - SUPPRESSED
              - UNAVAILABLE
              - DELETED
          in: query
          name: duplicateStatus
          description: comma seperated list of the status of the duplices
  /listing:
    get:
      summary: GET Listing Publisher List
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultListing'
      operationId: get-publisher-listing-list
      description: |-
        This method provides you all the statuses of each listing publisher portal, which are connected to a markee location by a listing subscription.
        You can get the information for a location, company or subscription by providing the proper context type and context id.
        You will only get information as long you have an active listing subscription.
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          description: context id
          name: id
          required: true
        - schema:
            type: string
            enum:
              - Company
              - Location
              - Subscription
          in: query
          name: contextType
          required: true
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n entries
        - schema:
            type: integer
          in: query
          name: take
          description: take n entries
  '/listing/GMBVerificationMethods/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: location id
    get:
      summary: GET Listing GMB Verification Methods
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodListing'
      operationId: get-listing-gmbverificationmethods
      description: 'This method provides all the possible verification methods for a location for Google My Business, in case a verification is still required.'
  /listing/changeListingState:
    put:
      summary: PUT Listing State
      operationId: put-listing-state
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Use this method to set the state of a single publisher portal for a location, having an active listing subscription.
        With that you can control if a portal shall get the data of the location or not.

        Set status to false if you want to opt out a portal, to true if you want to opt it in again.

        The publisher IDs are provided by the "GET Listing" Call.
      tags:
        - listing
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: id of location
          required: true
        - schema:
            type: string
          in: query
          required: true
          name: publisherId
          description: id of publisher portal
        - schema:
            type: boolean
          in: query
          name: status
          description: status you want to set
          required: true
  '/listing/connectGMB/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: location id
    get:
      summary: GET Listing GMB Connection URL
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessString'
      operationId: get-listing-connectGMB
      description: |-
        If a location has an active listing subscription and the owner needs to link her/his GMB profile to it, you can get an url by this method.
        This url is linking to a connection interface the customer needs to get to log in.
  '/listing/connectFacebook/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: location id
    get:
      summary: GET Listing Facebook Connection URL
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessString'
      operationId: get-listing-connectFacebook
      description: |-
        If a location has an active listing subscription and the owner needs to link her/his Facebook profile to it, you can get an url by this method.
        This url is linking to a connection interface the customer needs to get to log in.
  '/listing/duplicate/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: duplicate id
    get:
      summary: GET Listing Duplicate
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Duplicates'
      operationId: get-listing-duplicate
      description: |-
        This method provides detailled information about a listing duplicate.
        To get the duplicate ids, use the method "GET Listing Duplicate List"
  /listing/ignoreDuplicate:
    delete:
      summary: DELETE Listing Duplicate Delete
      operationId: delete-listing-ignoreDuplicates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - listing
      description: With this method you can ignore a duplicate and set the status to deleted.
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: locationId
          description: location id
          required: true
        - schema:
            type: integer
            format: int64
          in: query
          name: duplicateId
          required: true
          description: id of the duplicate
    parameters: []
  /listing/suppressDuplicate:
    put:
      summary: PUT Listing Duplicate Suppress
      operationId: put-listing-suppressDuplicate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - listing
      description: |-
        With this method you can suppress a duplicate.
        The publisher portal will get the information that this duplicate should not be shown anymore.
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: locationId
          description: location id
          required: true
        - schema:
            type: integer
            format: int64
          in: query
          name: duplicateId
          description: |
            id of the duplicate
          required: true
  /listing/verifyGMB:
    post:
      summary: POST Listing GMB Verification
      operationId: post-listing-verfiyGMB
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GMBResultVerificationList'
      tags:
        - listing
      description: 'This request will trigger verification codes being sent to the specified addresses, phone numbers, or email addresses.'
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          required: true
          description: id of the location
        - schema:
            type: string
            enum:
              - POSTCARD
              - EMAIL
              - PHONE
              - VETTED_PARTNER
          in: query
          name: method
          required: true
          description: verification method
        - schema:
            type: string
          in: query
          name: recipientEmail
          description: Contact Email
        - schema:
            type: string
          in: query
          name: recipientName
          description: Contact name
  /listing/completeGMB:
    post:
      summary: POST Listing GMB Verification Completion
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GMBResultVerificationList'
      operationId: post-listing-completeGMB
      description: Provides verification codes to complete the verification for entities in an account.
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: id of location
          required: true
        - schema:
            type: string
          in: query
          required: true
          name: verificationCode
          description: The verification code received from the publisher.
  '/enhancedContent/{id}':
    get:
      summary: GET Enhanced Content
      tags:
        - enhancedContent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnhancedContent'
      operationId: get-enhancedContent
      parameters: []
      description: |-
        Returns the detailed enhanced content json object defined by the enhanced content id.

        Path param:
        id of the enhanced content
    post:
      summary: POST Enhanced Content
      operationId: post-enhancedContent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      parameters: []
      description: |-
        Method to create enhanced content for a company.
        This content can be linked to locations afterwards

        Path param:
        id of the parent company
      tags:
        - enhancedContent
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnhancedContentInsert'
        description: ''
    put:
      summary: PUT Enhanced Content
      operationId: put-enhancedContent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - enhancedContent
      description: |-
        Method to update enhanced content fields

        Path Param:
        id of the enhanced content id
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnhancedContentUpdate'
    delete:
      summary: DELETE Enhanced Content
      operationId: delete-enhancedContent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        This method deletes all the data of an enhanced content, including all connections to locations

        Path Param:
        id of the enhanced content
      parameters: []
      tags:
        - enhancedContent
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
  '/enhancedContent/detail/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: ''
    get:
      summary: GET Enhanced Content Detail
      tags:
        - enhancedContent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultEnhancedContentDetail'
      operationId: get-enhancedContent-detail-id
      description: |-
        This method returns the detailed content of an enhanced content.
        It returns a list with detail elements.

        Path Param:
        id of the enhanced content
      parameters:
        - schema:
            type: integer
          in: query
          name: skip
          description: number of element to skip
        - schema:
            type: integer
          in: query
          name: take
          description: number of element to take
        - schema:
            type: string
          in: query
          name: filter
          description: filter for the name
        - schema:
            type: string
          in: query
          name: sectionIds
          description: comma separated list of section ids you can filter
    post:
      summary: POST Enhanced Content Detail
      operationId: post-enhancedContent-detail-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnhancedContentDetailInsert'
      description: |-
        create a content element for an enhanced content

        Path Param:
        id of the enhanced content
      tags:
        - enhancedContent
    put:
      summary: PUT Enhanced Content Detail
      operationId: put-enhancedContent-detail-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnhancedContentDetailUpdate'
      description: |-
        Update Enhanced Content Detail

        Path Param:
        id of the enhanced content detail
      tags:
        - enhancedContent
  '/enhancedContent/detail/basic/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: Section Id
    get:
      summary: GET Enhanced Content Detail Basic
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultEnhancedContentDetailBasic'
      operationId: get-enhancedContent-detail-basic-id
      description: This method returns the priority orders of elements inside of a section
      tags:
        - enhancedContent
  '/enhancedContent/detail/order/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: id of the section
    put:
      summary: PUT Enhanced Content Detail Order
      operationId: put-enhancedContent-detail-order-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      tags:
        - enhancedContent
      description: |-
        With this method you can update the order of elements inside of a section.
        The priorityOrder needs to be unique.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListEnhancedContentDetailOrder'
        description: ''
  '/enhancedContent/section/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
    get:
      summary: GET Enhanced Content Section List
      tags:
        - enhancedContent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultEnhancedContentSection'
      operationId: get-enhancedContent-section-id
      description: |-
        returns all current sections for an enhanced content, including their priorities inside of this content and the number of elements being connected to this section

        Path Param:
        id of the enhanced content
    post:
      summary: POST Enhanced Content Section
      operationId: post-enhancedContent-section-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Create a new section for an existing enhanced content.
        This section will be the last one initially for this content, use the update method afterwards to set the priorityOrder you want.

        Path Param:
        id of Enhanced Content
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnhancedContentSectionInsert'
        description: ''
      tags:
        - enhancedContent
    put:
      summary: PUT Enhanced Content Section
      operationId: put-enhancedContent-section-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      description: |-
        Method to update the sections for an enhanced content. You need to send the complete list of sections, being available for this content.
        Sections, being in the system and not getting sent by you will be deleted!
        In case this sections are having elements connected this will be not possible.
        Use this method especially to sort the sections by setting their priorityOrder. This order needs to be unique for this list.

        Path Param:
        id of the enhanced content
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListEnhancedContentSectionUpdate'
      tags:
        - enhancedContent
  /enhancedContent:
    get:
      summary: GET Enhanced Content List
      tags:
        - enhancedContent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultEnhancedContent'
      operationId: get-enhancedContentList
      description: |-
        Returns the Enhanced Content json object linked to a Company.
        This list represents just a minimal set of information, to get the detailed information you need to use the corresponding detail methods.
      parameters:
        - schema:
            type: string
          in: query
          name: contextIds
          description: '"comma seperated ids of location or company '
          required: true
        - schema:
            type: string
            enum:
              - Location
              - Company
          in: query
          name: contextType
          description: 'context type (location,company)'
          required: true
        - schema:
            type: integer
            format: int32
          in: query
          name: skip
          description: number of element to skip
        - schema:
            type: integer
            format: int32
          in: query
          name: take
          description: number of element to take
        - schema:
            type: string
            enum:
              - productsServices
              - menu
              - profile
              - events
          in: query
          name: contentType
          description: content type filter
        - schema:
            type: string
            enum:
              - live
              - not_connected
          in: query
          name: status
          description: status filter
        - schema:
            type: string
          in: query
          name: filter
          description: name filter
        - schema:
            type: string
          in: query
          name: language
          description: language filter
  /enhancedContent/detail:
    delete:
      summary: DELETE Enhanced Content Detail
      operationId: delete-enhancedContent-detail
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      parameters:
        - schema:
            type: string
          in: query
          name: ids
          description: 'ids of the enhanced content detail elements, comma separated '
          required: true
      tags:
        - enhancedContent
      description: ' delete a detail element from an enhanced content'
  '/miscellaneous/image/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: ''
    get:
      summary: GET Image
      tags:
        - miscellaneous
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Image'
      operationId: get-image-id
      description: |-
        Method to get an image for an id

        Path Param:
        id of image
    post:
      summary: Post Image
      operationId: post-image-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - miscellaneous
      description: "Method to insert an image for some parent (e.g. some location)\n\nPath Param:\nid of the location the image gets inserted for\n\n\nValidation criterias for pictures for image types: \n-logo:\n(supported file types:\_\"jpg\"\_\"gif\"\_\"png\"\_\"ico\")\n(no api validation)\n\n-360° picture\n(supported file types:\_\"jpg\"\_\"gif\"\_\"png\"\_\"ico\")\_\n(no api validation)\n\n-gallery picture\n(supported file types:\_\"jpg\"\_\"gif\"\_\"png\"\_\"ico\")\n(api validation: min width / hight 250 px, max width / hight 5.000 px, min file sice 10 kb, max file sice 5 MB)\n\n-social post picture\n(supported file types:\_\"jpg\"\_\"gif\"\_\"png\"\_\"ico\")\n(api validation: min width / hight 250 px, max width / hight 5.000 px, min file sice 10 kb, max file sice 5 MB)\n\n-Google cover picture\n(supported file types:\_\"jpg\"\_\"gif\"\_\"png\"\_\"ico\") \n(no api validation)\n\n-Google profil picture\n(supported file types: \"jpg\" \"gif\" \"png\" \"ico\")\n(no api validation)\n\n-Facebook cover picture\n(supported file types: \"jpg\" \"gif\" \"png\" \"ico\")\n(no api validation)\n\n-Facebook profil picture\n(supported file types: \"jpg\" \"gif\" \"png\" \"ico\")\n(no api validation)"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageInsert'
        description: ''
    delete:
      summary: Delete Image
      operationId: delete-image-id
      responses:
        '200':
          description: OK
      tags:
        - miscellaneous
      description: |-
        remove an image from some parent

        Path Param:
        the id of the image
      parameters:
        - schema:
            type: string
            enum:
              - Contact
              - Location
          in: query
          name: parentType
          description: determines the type of parent the url gets connected to
          required: true
        - schema:
            type: integer
            format: int64
          in: query
          name: parentId
          description: parent Id the image is connected to (e.g. locationId)
          required: true
        - schema:
            type: string
            enum:
              - GoogleProfilImage
              - GoogleCoverImage
              - FacebookProfileImage
              - FacebookCoverImage
              - BusinessLogo
              - CustomImage
              - Google360
              - ListingImage
              - PerformanceImage
              - SocialImage
              - ContentImage
              - CampaignImage
              - EmailLogo
              - WhiteLabelLogo
              - WhiteLabelFavicon
              - UserProfileImage
          in: query
          name: imageType
          required: true
          description: the type of the image
  '/miscellaneous/url/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
    put:
      summary: Put Url
      operationId: put-url-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        thod to update a specific url
        The following Url type have specific format:
        Instagram Url format : https://www.instagram.com/[profilenamevariable]
        Facebook Url format : https://www.facebook.com/[profilenamevariable]
        Youtube Url format : https://www.youtube.com/watch?v=[code]

        Path Param:
        id of the url
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UrlUpdate'
      tags:
        - miscellaneous
    delete:
      summary: Delete Url
      operationId: delete-url-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - miscellaneous
      description: |-
        Delete a url

        Path Param:
        the id of the url
    post:
      summary: Post Url
      operationId: post-url-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        determines the type of parent the url gets connected to

        Path Parm:
        id of the parental location
      parameters:
        - schema:
            type: string
            enum:
              - Contact
              - Location
          in: query
          name: parentType
          required: true
          description: determines the type of parent the url gets connected to
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UrlInsert'
      tags:
        - miscellaneous
  /miscellaneous/parent:
    get:
      summary: Get ParentList
      tags:
        - miscellaneous
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultParent'
      operationId: get-parents-list
      description: Returns a list of parents for one id of some type. When you want the parents of a location call this method with the location id and the type location
      parameters:
        - schema:
            type: integer
          in: query
          description: context id of the current data object
          name: id
          required: true
        - schema:
            type: string
            enum:
              - Company
              - Location
              - Subscription
              - EnhancedContent
              - Duplicate
          in: query
          name: contextType
          description: determines the type of the current context
          required: true
  /miscellaneous/globalSearch:
    get:
      summary: Get GlobalSearch
      tags:
        - miscellaneous
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultGlobalSearch'
      operationId: get-global-search
      description: |-
        This method can be used to search for workspaces, companies or locations by defining some filtering parameter.

        The 'filter' parameter gets used only for the name when at least 3 characters are defined.
        Nevertheless you can use it to search for external IDs, even those having less than 3 characters.

        You can multi-select 'contextTypes', 'productTypes' or 'statuses'.
        When none is selected, no limitations regarding those types getting applied.
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: 'a filter for the name, externalID, tag'
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: string
            enum:
              - Workspace
              - Company
              - Location
              - Subscription
          in: query
          name: contextTypes
          description: optional context type filter
        - schema:
            type: string
          in: query
          name: licences
          description: optional licence filter comma separated
        - schema:
            type: string
            enum:
              - PROCESSING
              - ACTIVE
              - EXPIRING
              - FINISHED
              - FAILED
          in: query
          name: statuses
          description: optional status filter
  /miscellaneous/duplicate:
    get:
      summary: Get Duplicates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultDuplicate'
      operationId: get-duplicates
      parameters:
        - schema:
            type: string
          in: query
          name: workspaceIds
          description: list of workspace ids
          required: true
        - schema:
            type: string
          in: query
          name: phone
          description: phone number
        - schema:
            type: string
          in: query
          name: postCode
          description: postcode
        - schema:
            type: string
          in: query
          name: city
          description: city
        - schema:
            type: string
          in: query
          name: street
          description: street
        - schema:
            type: string
          in: query
          name: house
          description: house number
        - schema:
            type: number
            format: double
          in: query
          name: similarityFactor
          description: etermines how strict the the data matching should be. A value between zero and one with value one as an exact match.
        - schema:
            type: boolean
          in: query
          name: recursive
          description: return a list of all locations containing to a workspace or also from all it's child workspaces
          required: true
        - schema:
            type: boolean
          in: query
          name: activeListing
          description: return a list of all locations having only active listing subscriptions
          required: true
        - schema:
            type: string
          in: query
          name: name
          description: name of the location
      description: Method to get a list of duplicates
      tags:
        - miscellaneous
  '/miscellaneous/profilQuality/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: id of the location
    get:
      summary: GET Profile Quality
      tags:
        - miscellaneous
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfilQuality'
      operationId: get-profilQuality-id
      description: |
        The method offers the data quality (based on the completeness of its data) for a location.
        The More fields are defined, the higher is the quality value.

        There are different use cases, which can be determined by the qualityType Parameter: Scan or Profile
        The profile use case covers more fields of the locations.

        Note:
        qualityType default value is Scan if not defined
      parameters:
        - schema:
            type: string
            enum:
              - Profile
              - Scan
          in: query
          name: qualityType
          description: 'type of the quality, default scan'
  /miscellaneous/portal:
    get:
      summary: Get Portals
      tags:
        - miscellaneous
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultString'
      operationId: get-portals
      parameters:
        - schema:
            type: integer
            format: int32
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
            format: int32
          in: query
          name: skip
          description: skip entries
        - schema:
            type: string
            enum:
              - post
              - review
              - task
              - listing
              - mueller_medien_paket
              - internal
          in: query
          name: portalType
          description: a filter of the type of the portals
        - schema:
            type: string
          in: query
          name: filter
          description: social portal names as a comma separated list
      description: Method to get List of all available portals
  /miscellaneous/countryCodes:
    get:
      summary: GET Country Codes
      tags:
        - miscellaneous
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCountryCode'
      operationId: get-country-codes
      description: |-
        Method to get List of all available country code language in ISO 3166-1 alpha-2 country code
        Examples: en_US, de_DE
      parameters:
        - schema:
            type: string
          in: query
          name: language
          description: Regional code
          required: true
    parameters: []
  /miscellaneous/states:
    get:
      summary: GET States by Country Code
      tags:
        - miscellaneous
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/KeyValueString'
      operationId: get-states
      description: Method to get List of all available states for the given Country Code
      parameters:
        - schema:
            type: string
          in: query
          name: countryCode
          description: Country of interest
          required: true
  /miscellaneous/paymentMethods:
    get:
      summary: Your GET endpoint
      tags:
        - miscellaneous
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultString'
      operationId: get-payment-methods
      description: |-
        Returns the global paymentMethods
        if the countryCode is define will return the global plus what is available for that region code
      parameters:
        - schema:
            type: string
          in: query
          name: countryCode
          description: 'country code, ISO 3166-1 alpha-2. ex: en,de'
    parameters: []
  '/websitewidget/configuration/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: website widget configuration id
    get:
      summary: GET WebsiteWidget Configuration
      tags:
        - websitewidget
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebsiteWidgetConfiguration'
      operationId: get-websitewidget-configuration
      description: |-
        Get the website widget configuration details.
        Those are containing all the generic setting of a website widget (you can change them via the update method).
    put:
      summary: PUT WebsiteWidget Configuration
      operationId: put-websitewidget-configuration
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to update website widget configuration.
        You can change the (generic) settings for all subscribed widgets.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebsiteWidgetConfigurationUpdate'
      tags:
        - websitewidget
  /websitewidget/configuration:
    post:
      summary: POST WebsiteWidget Configuration
      operationId: post-websitewidget-configuration
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - websitewidget
      description: |-
        Method to insert a website widget configuration.
        You need to define the workspace id, name and the actual type of the configuration in the body.

        Each type is having a certain set of generic settings.
        Get those settings for the type by the api call /websitewidget/type
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebsiteWidgetConfigurationInsert'
    get:
      summary: GET WebsiteWidget Configuration List
      operationId: get-websitewidget-configuration-list
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultWebsiteWidgetDefaultConfiguration'
      description: |-
        Get the website widget configuration overview models, those are containing minimal set on information.
        Use the optional query parameter to filter for the name of the configuration or the workspace it belongs to.
        Use skip and take for pagination.
      tags:
        - websitewidget
      parameters:
        - schema:
            type: integer
          in: query
          name: workspaceId
          description: id of the workspace
          required: true
        - schema:
            type: string
          in: query
          name: filter
          description: a filter for the name (workspace or configuration name)
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n entries
        - schema:
            type: integer
          in: query
          name: take
          description: take n entries
  /websitewidget/type:
    get:
      summary: GET WebsiteWidget Type
      tags:
        - websitewidget
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultWebsiteWidgetDefaultConfiguration'
      operationId: get-websitewidget-type
      description: |-
        Use this method to get all possible configurations for the website widget types.
        If you are interested in only a specific type, use the optional filter.
        Use the settings in the response to create a new website widget configuration with the corresponding POST /websitewidget/configuration method.
        The settings in the response giving you all the information, which fields you need to define and which values of which types they could have.They may also contain some default values you can change when creating a new configuration.
      parameters:
        - schema:
            type: string
            enum:
              - Review
          in: query
          name: websiteWidgetType
          description: optional filter for a specific website widget type
  '/websitewidget/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: subscription id which belongs to a website widget
    get:
      summary: GET WebsiteWidget
      tags:
        - websitewidget
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebsiteWidget'
      operationId: get-websitewidget
      description: |-
        Get the website widget details for a subscription (defined by the id path parameter).
        Those are containing all the generic setting of a website widget (you can change them via the update method of the website widget configuration) and the actual code snippets, which need to be included on the customer's website.
    put:
      summary: PUT WebsiteWidget
      operationId: put-websitewidget
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to update website widget data. You can set a customized widget id, which can get used in the javascript in addition to the subscription id.
        Be aware:
        There are restrictions for the customized widget id.
        It needs to be unique through al the widgets of this licence and must not overlap with a subscription id of this licence.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebsiteWidgetUpdate'
      tags:
        - websitewidget
  '/statisticaggregation/configuration/{licenceId}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: licenceId
        in: path
        required: true
        description: id of a licence containint the statistic aggregation product
    get:
      summary: GET StatisticAggregation Configuration
      tags:
        - statisticaggregation
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatisticAggregationConfiguration'
      operationId: get-statisticaggregation-configuration
      description: 'This method is providing a product configuration for a statistic aggregation licence, indicating which statistical source is configured and which fields need to be defined when subscribing to such a licence.'
  '/statisticaggregation/{subscriptionId}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: subscriptionId
        in: path
        required: true
        description: subscription id which belongs to a statistic aggregation
    get:
      summary: GET StatisticAggregation
      tags:
        - statisticaggregation
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatisticAggregation'
      operationId: get-statisticaggregation
      description: |-
        This information is showing you the subscribed data, e.g. the statistic source and the 3rd party system ids.
        You can not change any of those settings anymore.
  /website/templateSettings:
    get:
      summary: GET Website Template Settings List
      tags:
        - website
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsList'
      operationId: get-website-templateSettings
      description: 'Method to get template Settings '
      parameters:
        - schema:
            type: integer
          in: query
          name: templateId
          description: id of the template
          required: true
        - schema:
            type: integer
            format: int64
          in: query
          name: subscriptionId
          required: true
          description: subscription id
  '/billing/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: ''
    get:
      summary: GET Billing Account
      tags:
        - billingaccount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingAccount'
      operationId: get-billing
      description: Returns the detailed billing account object. Id in the path is the id of the billing account.
    put:
      summary: PUT Billing Account
      operationId: put-billing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Update a billing account.
        Id in the path is the id of the billing account.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingAccountUpdate'
      tags:
        - billingaccount
    post:
      summary: POST Billing Account
      operationId: post-billing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Create a billing account.
        Id in the path is the parental company or workspace id, which needs to be determined by the parentType.
      parameters:
        - schema:
            type: string
            enum:
              - Company
              - Location
          in: query
          name: parentType
          description: determines the type of parent the billing account gets connected to
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingAccountInsert'
      tags:
        - billingaccount
  /billing:
    get:
      summary: GET Billing Account List
      tags:
        - billingaccount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultBillingAccount'
      operationId: get-billing-list
      description: Returns a list of billing accounts of a certain company
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: a filter for the name
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n elements
        - schema:
            type: integer
          in: query
          name: take
          description: take n elements
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          required: true
          description: id of the parental company
  /social/post:
    get:
      summary: GET Social Post List
      tags:
        - social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSocial'
      operationId: get-social-post
      description: Method to get post list
      parameters:
        - schema:
            type: string
            format: int64
          in: query
          name: contextIds
          description: id of location or company
          required: true
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
          in: query
          description: skip entries
          name: skip
        - schema:
            type: string
            enum:
              - postId
              - socialPortal
              - canDelete
              - dateTime
              - status
          in: query
          name: sortColumn
          description: 'name of the column which gets sorted, need to be one of the fields of the model schema of the response'
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          name: sortDirection
          description: asc or desc for ascending or descending
        - schema:
            type: string
            enum:
              - Location
              - Company
              - Post
          in: query
          name: contextType
          required: true
          description: 'context type (location,company)'
        - schema:
            type: boolean
          in: query
          name: isPlanned
          description: 'Take the future, past or all date of post. When true, it retrieves all the posts which ir meant to be posted in the future. When false, it retrieves all posts with post date in the past or present. When not sent, it retrieves all posts.'
        - schema:
            type: string
          in: query
          name: socialPortal
          description: social portal names as a comma separated list
        - schema:
            type: boolean
          in: query
          name: includeDeleted
          description: set it to true to also fetch posts that got deleted on the portals
    post:
      summary: POST Social Post
      operationId: post-social-post
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      tags:
        - social
      description: |-
        Method to Post in social 
        Putting the date in the future will make it a scheduled post.

        Note!
          1. is possible to add up to 10 image's only for Facebook social portal, for the other social portal if more than 1 is provided
             we pick the first from the array
      parameters:
        - schema:
            type: string
            format: int64
          in: query
          name: contextIds
          required: true
          description: id of the locations or the company
        - schema:
            type: string
            enum:
              - Location
              - Company
          in: query
          name: contextType
          description: 'context type (location,company)'
          required: true
        - schema:
            type: string
          in: query
          name: socialPortal
          description: context of source type
          required: true
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/SocialPostInsert'
          application/json:
            schema:
              $ref: '#/components/schemas/SocialPostInsert'
        description: ''
  '/social/post/retry/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the post
    put:
      summary: RETRY Social Post
      operationId: retry-social-post
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      tags:
        - social
      description: |-
        Method to retry posting failed social posts
        Providing a list of locations will only retry posting the post for the locations in that list (in case it failed in that location).
        If no list is provided, the retry will apply to all locations where the post failed.
      parameters:
        - schema:
            type: string
            format: int64
          in: query
          name: locationIds
          required: false
          description: 'id of the locations, send this when only some of the failed post_locations should be retried'
  '/social/post/cancel/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the post
    put:
      summary: CANCEL Social Post
      operationId: cancel-social-post
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      tags:
        - social
      description: |-
        Method to cancel posting failed social posts
        Providing a list of locations will only cancel the post for the locations in that list (in case it failed in that location).
        If no list is provided, the cancellation will apply to all locations where the post failed.
      parameters:
        - schema:
            type: string
            format: int64
          in: query
          name: locationIds
          required: false
          description: 'id of the locations, send this when only some of the failed post_locations should be cancelled'
  '/social/post/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the post
    put:
      summary: PUT Social Post
      operationId: put-social-post
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      description: |2-



         Method to update Post before the post plan date 
         
        Note!
          1. is possible to add up to 10 image's only for Facebook social portal for the other social portal we pick the first from the       
             array
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SocialPostUpdate'
      tags:
        - social
    delete:
      summary: DELETE Social Post
      operationId: delete-social-post
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      description: 'Method to delete Post before the post plan date '
      parameters:
        - schema:
            type: string
          in: query
          name: contextIds
          description: comma seperated ids of location or company
        - schema:
            type: string
            enum:
              - Location
              - Company
          in: query
          name: contextType
          description: 'context type (location,company)'
      tags:
        - social
  /social/post/comment:
    post:
      summary: POST Social Post Comment
      operationId: post-social-post-comment
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      tags:
        - social
      description: Create a new comment for a post
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          required: true
          description: id of post
        - schema:
            type: string
          in: query
          name: locationIds
          description: id of location
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SocialCommentsInsert'
    get:
      summary: GET Social Post Comment
      operationId: get-social-post-comment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultCommentsSocial'
      description: 'Method to get Social comments '
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: postId
          description: id of post
          required: true
        - schema:
            type: string
            format: int64
          in: query
          name: locationIds
          description: id of location
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: string
            enum:
              - postId
              - socialPortal
              - canDelete
              - dateTime
              - status
          in: query
          name: sortColumn
          description: 'name of the column which gets sorted, need to be one of the fields of the model schema of the response'
        - schema:
            type: string
          in: query
          name: sortDirection
          description: asc or desc for ascending or descending
      tags:
        - social
  /social/post/comment/reply:
    get:
      summary: GET Social Post Comment Replies
      operationId: get-social-post-comment-replies
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultCommentReplies'
      description: Method to get Social comment replies
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: commentId
          description: id of comment
          required: true
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
      tags:
        - social
  '/social/post/comment/reply/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
    delete:
      summary: DELETE Social Post Reply
      operationId: delete-social-post-reply
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Method to delete Reply
      parameters: []
      tags:
        - social
  '/social/post/comment/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
    delete:
      summary: DELETE Social Post Comment
      operationId: delete-social-post-comment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Method to delete Comment
      parameters: []
      tags:
        - social
  /social/review:
    get:
      summary: GET Social Review List
      tags:
        - social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSocialReviews'
      operationId: get-social-review-list
      description: Method to get List of reviews
      parameters:
        - schema:
            type: string
            format: int64
          in: query
          name: ids
          required: true
          description: the ids of the context
        - schema:
            type: integer
          in: query
          name: take
          description: Get only x elements. If it's not defined, the fallback is 500 elements. The maximum value you can request is 500; And if it exceeds this, the API will reject the request.
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: string
            enum:
              - reviewId
              - socialPortal
              - dateTime
              - rating
          in: query
          name: sortColumn
          description: 'name of the column which gets sorted, need to be one of the fields of the model schema of the response'
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          name: sortDirection
          description: asc or desc for ascending or descending
        - schema:
            type: string
            enum:
              - Location
              - Company
          in: query
          description: context of the ids you're passing
          name: contextType
          required: true
        - schema:
            type: string
          in: query
          name: socialPortal
          description: social portal names as a comma separated list
        - schema:
            type: number
            format: double
          in: query
          name: minRating
          description: a filter for minimum rating
        - schema:
            type: number
            format: double
          in: query
          name: maxRating
          description: a filter for maximum rating
        - schema:
            type: boolean
          in: query
          description: 'to filter reviews if they have answer from owner '
          name: answeredStatus
        - schema:
            type: string
          in: query
          name: tags
          description: 'filter by tags, which should exist on company level'
  '/social/review/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: the id of the review
    get:
      summary: GET Social Review
      tags:
        - social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialReview'
      operationId: get-social-review
      description: Method to get List of reviews
  '/social/reviewComments/{reviewId}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: reviewId
        in: path
        required: true
    get:
      summary: GET Social Review Comments
      tags:
        - social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSocialReviewComments'
      operationId: get-social-reviewComments
      parameters:
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: string
            enum:
              - profileName
              - dateTime
              - ownerCommented
          in: query
          description: 'name of the column which gets sorted, need to be one of the fields of the model schema of the response'
          name: sortColumn
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          description: asc or desc for ascending or descending
          name: sortDirection
      description: 'Method to get List of review comments '
  /social/bulk/reviewComments:
    parameters:
      - schema:
          type: string
        name: reviewIds
        in: query
        description: comma separated list of review ids
        required: true
    get:
      summary: GET Bulk Social Review Comments
      tags:
        - social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultBulkSocialReviewComments'
      operationId: get-bulk-social-reviewComments
      parameters:
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: string
            enum:
              - profileName
              - dateTime
              - ownerCommented
          in: query
          description: 'name of the column which gets sorted, need to be one of the fields of the model schema of the response'
          name: sortColumn
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          description: asc or desc for ascending or descending
          name: sortDirection
      description: 'Method to get List of review comments '
  '/social/reviewComment/{reviewId}':
    parameters:
      - schema:
          type: string
        name: reviewId
        in: path
        required: true
        description: id list of the reviews
    post:
      summary: POST Social Review Comment
      operationId: post-social-reviewComment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListReviewCommentResponse'
      description: Method to post social review comment.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SocialReviewCommentInsert'
      tags:
        - social
  /social/portal:
    get:
      summary: GET Social Portal
      tags:
        - social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultString'
      operationId: get-social-portal
      description: Method to get List of all available portals
      parameters:
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: string
            enum:
              - post
              - review
              - task
          in: query
          name: portalType
          description: a filter of the type of the portals
        - schema:
            type: string
          in: query
          name: filter
          description: social portal names as a comma seperated list
  /social/portalFiltered:
    get:
      summary: GET Social Portals by Reviews or Posts
      tags:
        - social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultString'
      operationId: get-social-portal-filtered
      description: Method to get List of all available portals that have reviews or posts
      parameters:
        - schema:
            type: string
            format: int64
          in: query
          name: contextIds
          description: comma seperated ids of location or company
          required: true
        - schema:
            type: string
            enum:
              - Location
              - Company
          in: query
          name: contextType
          description: Context of the Id specified in contextId
          required: true
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: string
            enum:
              - post
              - review
          in: query
          name: portalType
          description: a filter of the type of the portals
          required: true
        - schema:
            type: string
          in: query
          name: filter
          description: social portal names as a comma seperated list
  /social/post/settings:
    get:
      summary: GET Social Post Settings
      tags:
        - social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialSettingsResult'
      operationId: get-social-post-settings
      description: Method to get social settings
      parameters:
        - schema:
            type: string
          in: query
          name: contextIds
          required: true
          description: comma seperated ids of location or company
        - schema:
            type: string
            enum:
              - Location
              - Company
          in: query
          name: contextType
          description: 'context type (location,company)'
          required: true
  /notificationCenter/template/group:
    get:
      summary: GET Notification Center Template Group
      tags:
        - notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultEmailTemplateGroup'
      operationId: get-notificationCenter-template-group
      description: returns a list of email templates for a given context. The result includes the template groups and all of their child templates.
      parameters:
        - schema:
            type: integer
          in: query
          name: id
          description: context id of the current data object
          required: true
        - schema:
            type: string
          in: query
          name: contextType
          description: determines the type of the current context
          required: true
  '/notificationCenter/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of notification configuration
    get:
      summary: GET Notification Center
      tags:
        - notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationConfiguration'
      operationId: get-notificationCenter-information
      description: method to get detailed information of a single notification configuration
    put:
      summary: PUT Notification Center
      operationId: put-notificationCenter
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Update an existing notification configuration
      tags:
        - notifications
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationConfigurationUpdate'
  /notificationCenter:
    get:
      summary: GET Notification Center
      tags:
        - notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultNotificationConfiguration'
      operationId: get-notificationCenter
      description: Returns a list of notification configurations. This list can be modified by some filter settings.
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: a filter for the name
        - schema:
            type: integer
          in: query
          name: skip
          description: skip a given number of entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
            format: int64
          in: query
          name: contextId
          description: 'id of the context (location,company,workspace) the notification configuration is attached to'
        - schema:
            type: string
            enum:
              - Location
              - Company
              - Workspace
          in: query
          name: contextTypes
          description: show only notification of a specific level
        - schema:
            type: boolean
          in: query
          name: active
          description: filter for active or disabled notification configurations
    post:
      summary: POST Notification Center
      operationId: post-notificationCenter
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - notifications
      description: 'Create a new notification configuration. This configuration gets attached to a special context (defined by the context id and the context type: Location,Company,Workspace). The notifications will be sent for all contexts underneath it (e.g. all locations when main context Company has been chosen) by default. You can select explicit sub contexts by using the whitelist (e.g. sent notifications only for a special set of locations in the company). You can also select a blacklist (e.g. sent for all locations of the company the notifications, except for a special set). Be aware: For the white- and blacklist you can only choose ids of the level underneath the level you''re attaching the configuration. E.g. When you attach the notification configuration to a workspace you can only use company Ids.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationConfigurationInsert'
        description: notification configuration insert object
  /notificationCenter/template/setting:
    get:
      summary: GET Notification Center Template Setting
      tags:
        - notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultTemplateSetting'
      operationId: get-notificationCenter-template-setting
      description: Returns all the settings connected to an email template. It includes the ones the user still needs to set and the ones being predefined in the template configuration (fixed value). Those can not be changed
      parameters:
        - schema:
            type: integer
          in: query
          name: workspaceId
          description: id of the workspace
          required: true
        - schema:
            type: integer
          in: query
          name: templateId
          description: id of the email template
          required: true
  /notificationCenter/notification:
    get:
      summary: GET Notification Center Notification
      tags:
        - notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultNotification'
      operationId: get-notificationCenter-notification
      description: Get a list of notifications template for a notification configuration
      parameters:
        - schema:
            type: integer
          in: query
          name: id
          description: id of notification configuration
          required: true
        - schema:
            type: string
          in: query
          name: reportType
          description: filter for the report type of the templates
  '/notificationCenter/notification/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the notification
    get:
      summary: GET Notification Center Notification
      tags:
        - notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Notification'
      operationId: get-notificationCenter-notification-detailedInformation
      description: method to get detailed information of a single notification template
    put:
      summary: PUT Notification Center Notification
      operationId: put-notificationCenter-notification
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Update an existing notification template
      tags:
        - notifications
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationUpdate'
        description: notification update object
    post:
      summary: POST Notification Center Notification
      operationId: post-notificationCenter-notification
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - notifications
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationInsert'
        description: notification insert object
      description: Create a new notification template for a notification configuration
    delete:
      summary: DELETE Notification Center Notification
      operationId: delete-notificationCenter-notification
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - notifications
      description: delete a single notification
  /notificationCenter/recipients:
    get:
      summary: GET Notification Center Recipients
      tags:
        - notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultRecipients'
      operationId: get-notificationCenter-recipients
      description: Get a list of recipients group for a notification configuration
      parameters:
        - schema:
            type: integer
          in: query
          name: id
          description: id of notification configuration
          required: true
        - schema:
            type: string
          in: query
          description: a filter for the name
          name: filter
        - schema:
            type: integer
          in: query
          name: skip
          description: skip a given number of entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
    post:
      summary: POST Notification Center Recipients
      operationId: post-notificationCenter-recipients
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - notifications
      parameters: []
      description: 'Create a new recipients group for a notification configuration template '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipientsInsert'
        description: insert object
  '/notificationCenter/recipients/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the recipients
    put:
      summary: PUT Notification Center Recipients
      operationId: put-notificationCenter-recipients
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - notifications
      description: Update a recipients group for a notification configuration template
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipientsUpdate'
        description: insert object
    delete:
      summary: DELETE Notification Center Recipients
      operationId: delete-notificationCenter-recipients-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - notifications
      description: delete a single recipients group
  /notifications/userConfiguration:
    get:
      summary: GET user notification configurations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListUserNotificationConfiguration'
      operationId: get-notifications-userConfiguration
      description: returns the notification configurations for the logged in user. Currently only for Business owner like users.
      tags:
        - notifications
  '/notifications/userConfiguration/company/{companyId}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: companyId
        in: path
        required: true
        description: id of the company of interest
      - schema:
          type: boolean
        name: enabled
        in: query
        required: true
        description: Whether the notifications for the given company should be supressed or not for the user.
    post:
      summary: PUT user notification configuration for a company
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: post-notifications-userConfiguration-company
      description: Sets whether or not the logged user will receive notifications for the given company. Currently only for Business owner like users.
      tags:
        - notifications
  '/notifications/userConfiguration/company/{companyId}/notification/{notificationId}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: companyId
        in: path
        required: true
        description: id of the company of interest
      - schema:
          type: integer
          format: int32
        name: notificationId
        in: path
        required: true
        description: id of the notification configuration of interest
      - schema:
          type: boolean
        name: enabled
        in: query
        required: true
        description: Whether the notifications for the given company should be supressed or not for the user.
    post:
      summary: PUT user notification configuration for a company
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: post-notifications-userConfiguration-company-notification
      description: Sets whether or not the logged user will receive emails for the given configuration. Currently only for Business owner like users.
      tags:
        - notifications
  '/userManagement/security/lock/{userId}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: userId
        in: path
        required: true
        description: the id of the user
    put:
      summary: PUTLock User
      operationId: put-userManagement-security-lock
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: lock a user
      tags:
        - security
  '/userManagement/security/unlock/{userId}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: userId
        in: path
        required: true
        description: the id of the user
    put:
      summary: PUT Unlock User
      operationId: put-userManagement-security-unlock
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: unlock a user
      tags:
        - security
  /userManagement/security/changePassword:
    put:
      summary: PUT Change Password
      operationId: put-userManagement-security-changePassword
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: change the password of a user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangePassword'
        description: the change password object
      tags:
        - security
  /userManagement/security/permissions:
    get:
      summary: GET Permissions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultPermission'
      operationId: get-userManagement-security-permissions
      description: returns the list of permissions
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: contextId
          description: the id of the context
          required: true
        - schema:
            type: string
            enum:
              - Location
              - Company
              - Workspace
          in: query
          description: context type
          name: contextType
          required: true
      tags:
        - security
    delete:
      summary: DELETE Permissions
      operationId: delete-userManagement-security-permissions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'deletes a group from user of a space, company or location'
      parameters:
        - schema:
            type: integer
          in: query
          name: userId
          description: the id of the user
          required: true
        - schema:
            type: integer
          in: query
          description: the id of the group
          required: true
          name: groupId
        - schema:
            type: integer
            format: int64
          in: query
          description: the id of the context
          required: true
          name: contextId
        - schema:
            type: string
            enum:
              - Location
              - Company
              - Workspace
          in: query
          description: context type
          name: contextType
          required: true
      tags:
        - security
    put:
      summary: PUT Permissions
      operationId: put-userManagement-security-permissions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'adds a group to a user to a space, company or location'
      parameters:
        - schema:
            type: integer
          in: query
          required: true
          description: the id of the user
          name: userId
        - schema:
            type: integer
          in: query
          required: true
          description: the id of the group
          name: groupId
        - schema:
            type: integer
            format: int64
          in: query
          required: true
          description: the id of the context
          name: contextId
        - schema:
            type: string
            enum:
              - Location
              - Company
              - Workspace
          in: query
          name: contextType
          description: context type
          required: true
      tags:
        - security
  /userManagement/security/authenticate:
    post:
      summary: POST Authenticate
      operationId: post-userManagement-security-authenticate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessString'
      description: returns the sessionId of the user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ip'
        description: ip of the user
      tags:
        - security
      deprecated: true
  /userManagement/security/password/forgotten:
    put:
      summary: PUT Password Forgotten
      operationId: put-userManagement-security-password-forgotten
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: sends a password reset email to the user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordForgotten'
        description: password reset object
      tags:
        - security
  /userManagement/security/password/reset:
    put:
      summary: PUT Password Reset
      operationId: put-userManagement-security-password-reset
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: sends a password reset email to the user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordActivation'
        description: password reset object
      tags:
        - security
  '/userManagement/security/userGroups/{userId}':
    parameters:
      - schema:
          type: integer
        name: userId
        in: path
        required: true
        description: id of the user from which we want to access the groups
    get:
      summary: GET User Groups
      tags:
        - security
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultUserGroupSpace'
      operationId: get-userManagement-security-userGroups
      description: get context and group for user
  /userManagement/security/availableGroups:
    get:
      summary: GET Available Groups
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKeyValueInt'
      operationId: get-userManagement-security-availableGroups
      description: get available groups for current user
      tags:
        - security
  /userManagement/user:
    get:
      summary: GET User List
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultUserAccount'
      operationId: get-userManagement-user-list
      description: get the user list
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: contextId
          description: the id of the context
        - schema:
            type: string
            enum:
              - Location
              - Company
              - Workspace
          in: query
          name: contextType
          description: the id of the group
        - schema:
            type: string
          in: query
          name: filter
          description: a filter for the name
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          name: sortDirection
          description: asc or desc for ascending or descending
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
      tags:
        - user
    post:
      summary: POST User
      operationId: post-userManagement-user
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: returns id of the created user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserAccountInsert'
        description: returns id of the created user
      tags:
        - user
  '/userManagement/user/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: the id of the user
    get:
      summary: GET User
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAccount'
      operationId: get-userManagement-user
      description: get a single user
      tags:
        - user
    put:
      summary: PUT User
      operationId: put-userManagement-user
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - user
      description: returns the id of the updated user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserAccountUpdate'
        description: the user object which should be updated
    delete:
      summary: DELETE User
      operationId: delete-userManagement-user
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: delete a single user
      tags:
        - user
  /userManagement/isUnique:
    get:
      summary: GET User Management Is Unique
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessBoolean'
      operationId: get-userManagement-isUnique
      description: determines if a username or an email is unique an can be used to register new user accounts
      parameters:
        - schema:
            type: string
          in: query
          name: userName
          description: the user name or email
          required: true
        - schema:
            type: integer
          in: query
          name: ignoreUserId
          description: a user id which shall be ignored for this check
      tags:
        - user
  /userManagement/profile:
    get:
      summary: GET User Management Profile
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAccount'
      operationId: get-userManagement-profile
      description: returns the profile of the logged in user
      tags:
        - user
  /userManagement/user/emailConsent:
    get:
      summary: GET User consented to receive emails
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailConsent'
      operationId: get-userManagement-user-emailConsent
      description: returns if the logged in user consented to receive emails.
      tags:
        - user
  /userManagement/user/emailConsentRequested:
    get:
      summary: GET User requested email to consent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailConsent'
      operationId: get-userManagement-user-emailConsentRequested
      description: returns if the logged in user requested email to consent to receive emails.
      tags:
        - user
  '/qr/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the subscription the qr code is attached to
    get:
      summary: GET QrCode
      tags:
        - qr
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QrCode'
      operationId: get-qr
      description: ' Method to achieve a specific qr code '
    put:
      summary: PUT QrCode
      operationId: put-qr
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QrCodeUpdate'
      description: 'Method to update a specific qr code '
      tags:
        - qr
  /qr/configuration:
    get:
      summary: GET QrCode Configuration
      tags:
        - qr
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QrCodeConfiguration'
      operationId: get-qr-configuration
      description: 'With this method you can get the configuration of the licence which is including a qr code. This will give you the type of the qr code, depending on this information you need to set a destination url in the POST subscription method (if type is CustomRedirect) or not (if type is ReviewRedirect) '
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: licenceId
          description: ' id of the licence '
          required: true
  '/admin/workspaceSetting/whiteLabelStatus/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the workspace setting object
    put:
      summary: PUT Admin Workspace Setting Whitelabel Status
      operationId: put-workspace-setting-white-label-status
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'set whitelabel setting status to activate this setting. This will take a while until its active! '
      tags:
        - workspacesetting
  '/admin/workspaceSetting/domainStatus/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the space setting
    get:
      summary: GET Admin Workspace Setting Domain Status
      tags:
        - workspacesetting
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessBoolean'
      operationId: get-workspace-setting-domain-status
      description: get status if domain is valid and pointing to us.
  '/admin/workspaceSetting/whiteLabel/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: the id of the workspace setting object
    put:
      summary: PUT Admin Workspace Setting White Label
      operationId: put-workspace-setting-white-label
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: update a whitelabel setting
      tags:
        - workspacesetting
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WhiteLabelSettingUpdate'
        description: white label setting object
    delete:
      summary: DELETE Admin Workspace Setting White Label
      operationId: delete-workspace-setting-white-label
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: delete a whitelabel setting. This whitelabel setting will not be available afterwards anymore!
      tags:
        - workspacesetting
    post:
      summary: POST Admin Workspace Setting White Label
      operationId: post-workspace-setting-white-label
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - workspacesetting
      description: create a new WhiteLabel Setting for a Workspace
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WhiteLabelSettingInsert'
        description: white label setting insert object
  /admin/listingScan:
    get:
      summary: GET Admin Listing Scan
      tags:
        - listingscan
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListListingScan'
      operationId: get-admin-listingScan
      description: Get a list of available listing scan elements.
      parameters:
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: string
          in: query
          description: a filter for the scan id or the scan name
          name: filter
        - schema:
            type: string
          in: query
          name: workspaceId
          description: filter for workspace ids as comma separated list
    post:
      summary: POST Admin Listing Scan
      operationId: post-admin-listingScan
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: create a new listing scan element
      tags:
        - listingscan
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListingScanInsert'
        description: listing scan insert object
  '/admin/listingScan/{id}':
    parameters:
      - schema:
          type: integer
          format: int32
        name: id
        in: path
        required: true
        description: the id of the listing scan item
    get:
      summary: GET Admin Listing Scan Element
      tags:
        - listingscan
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListingScan'
      operationId: get-admin-listingScan-element
      description: get a listing scan element by id
    put:
      summary: PUT Admin Listing Scan Element
      operationId: put-admin-listingScan-element
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: update a listing scan object
      tags:
        - listingscan
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListingScanUpdate'
        description: listing scan update object
    delete:
      summary: DELETE Admin Listing Scan Element
      operationId: delete-admin-listingScan-element
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: delete method to delete listing scan object
      tags:
        - listingscan
  '/admin/contentCampaign/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: ''
    get:
      summary: GET Admin Content Campaign
      tags:
        - contentcampaign
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentCampaign'
      operationId: get-content-campaign-id
      description: |-
        get a Content Campaign element by id
        Path Params:
        id: the id of the Content Campaign element
    put:
      summary: PUT Admin Content Campaign
      operationId: put-content-campaign-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        update an existing content campaign element
        Path Params:
        id: id of the content campaig
      tags:
        - contentcampaign
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentCampaignUpdate'
        description: content campaign update object
    delete:
      summary: DELETE Admin Content Campaign
      operationId: delete-content-campaign-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        delete a complete content campaign. The campaign will not be available afterwards anymore!
        Path Params:
        id: id of the content campaign object
      tags:
        - contentcampaign
    post:
      summary: POST Admin Content Campaign
      operationId: post-content-campaign-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentCampaignInsert'
        description: content campaign insert object
      description: |-
        create a new Content Campaign element
        Path Params:
        id: workspace id
      tags:
        - contentcampaign
  '/admin/contentCampaign/cancel/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the content campaign
    put:
      summary: PUT Admin Content Campaign Cancel
      operationId: put-cancel-content-campaign
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - contentcampaign
      description: cancel an existing content campaign
  /admin/contentCampaign/element/available:
    get:
      summary: GET Admin Content Campaign Element Available
      tags:
        - contentcampaign
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListContentCampaignAvailableElement'
      operationId: get-content-campaign-element-available
      description: get available elements of a content campaign
  /admin/contentCampaign:
    get:
      summary: GET Admin Content Campaign Workspace
      tags:
        - contentcampaign
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListContentCampaign'
      operationId: get-content-campaign
      description: get a list of content campaigns for a workspace
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: workspace id
          required: true
        - schema:
            type: integer
            format: int32
          in: query
          name: skip
          description: skip entries
        - schema:
            type: integer
            format: int32
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: string
            enum:
              - active
              - done
              - planned
              - cancelled
          in: query
          name: status
          description: status filter
        - schema:
            type: string
          in: query
          name: filter
          description: filter for the content campaign name
  /admin/contentCampaign/config:
    get:
      summary: GET Admin Content Campaign Config
      tags:
        - contentcampaign
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentCampaignConfiguration'
      operationId: get-content-campaign-config
      description: get the content campaign configuration for a landing page. You need to authenticate with a token
  '/admin/contentCampaign/template/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: 'the id of the workspace '
    get:
      summary: GET Admin Content Campaign Template
      tags:
        - contentcampaign
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultEmailTemplateGroup'
      operationId: get-content-campaign-template
      description: get a Available Templates by workspace id
  /admin/user/emailConsent:
    post:
      parameters:
        - schema:
            type: string
          in: query
          name: domain
          description: white label domain name
          required: true
      summary: POST User email consent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: post-admin-user-emailConsent
      description: Sends email through Keycloak to ask for the logged user's consent to receive emails. User's salutation information is required to send the email.
      tags:
        - userRequest
  /dashboard/task:
    get:
      summary: GET Optimization Task List
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultOptimizationTask'
      operationId: get-optimization-task-list
      description: 'Method to get optimization tasks, as not linked gmb and facebook accounts, not answered reviews, handling of listing duplicates etc...'
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: id of the workspace
          required: true
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: string
            enum:
              - location
              - portal
              - startDate
          in: query
          name: sortColumn
          description: name of the column which gets sorted
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          name: sortDirection
          description: asc or desc for ascending or descending
        - schema:
            type: string
            enum:
              - ProfileLinking
              - ProfileLinkingManual
              - UnansweredReviews
              - Duplicate
          in: query
          name: taskType
          description: the type of the task
        - schema:
            type: string
            enum:
              - OPEN
              - PENDING
              - DONE
          in: query
          name: status
          description: the status of the task
        - schema:
            type: string
          in: query
          name: locationIds
          description: list of location ids
        - schema:
            type: string
          in: query
          name: portal
          description: portal of the task
        - schema:
            type: boolean
          in: query
          name: ignore
          description: filter to show the ignore task
      tags:
        - optimization
  '/dashboard/task/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the task
    put:
      summary: PUT Optimization Task
      operationId: put-optimization-task
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'Update tasks, e.g. ignore them, update a note or set the status of task manually. Values you don''t set will be ignored in this update!'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OptimizationTaskUpdate'
        description: dashboard
      tags:
        - optimization
  '/dashboard/locationList/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the workspaceId
    get:
      summary: GET Task Location List
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKeyValueInt'
      operationId: get-task-location-list
      description: Method is returning all locations of a workspace having tasks connected
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: name filter
        - schema:
            type: integer
          in: query
          description: take a given number of entries
          name: take
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
      tags:
        - optimization
  /dashboard/statistic:
    get:
      summary: GET Optimization Task Statistic
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKeyValueIntNumber'
      operationId: get-optimization-task-statistic
      description: Method to get amount of tasks for workspace with respect to the task type
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: id
          description: id of the workspaceId
          required: true
        - schema:
            type: string
            enum:
              - ProfileLinking
              - ProfileLinkingManual
              - UnansweredReview
              - Duplicate
          in: query
          name: taskType
          description: the type of the task
        - schema:
            type: string
            enum:
              - OPEN
              - PENDING
              - DONE
          in: query
          name: status
          description: the status of the task
        - schema:
            type: string
          in: query
          name: locationIds
          description: list of location ids
        - schema:
            type: string
          in: query
          name: portal
          description: portal of the task
        - schema:
            type: boolean
          in: query
          name: ignore
          description: filter to show the ignore task
      tags:
        - optimization
  /dashboard/performance/pacing/spendBudgetTarget:
    get:
      summary: GET Spent Budget Performance Pacing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKeyValueDouble'
      operationId: get-spent-budget-performance-pacing
      description: Method to get the spend budget and target budget
      parameters:
        - schema:
            type: string
          in: query
          name: contextIds
          description: comma separated ids of context
          required: true
        - schema:
            type: string
            enum:
              - Workspace
              - Company
              - Location
              - Subscription
          in: query
          name: contextType
          description: context you want to get the pacing information for
          required: true
      tags:
        - pacing
  /dashboard/performance/pacing/campaigns:
    get:
      summary: GET Campaign Performance Pacing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultPacingGraph'
      operationId: get-campaign-performance-pacing
      description: Method to get the data for the sea pacing graph
      parameters:
        - schema:
            type: string
          in: query
          name: contextIds
          description: comma separated ids of context
          required: true
        - schema:
            type: string
            enum:
              - Workspace
              - Company
              - Location
              - Subscription
          in: query
          name: contextType
          description: context you want to get the pacing information for
          required: true
      tags:
        - pacing
  '/tag/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: the id of the tag
    delete:
      summary: DELETE Tag
      operationId: delete-tag
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: 'delete a tag, be careful, this also deletes all connections between location and assigned tag'
      tags:
        - tag
    post:
      summary: POST Tag
      operationId: post-tag
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: Creating tag
      tags:
        - tag
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagInsert'
        description: tag insert
  '/tag/disconnect/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: the id of the tag
    delete:
      summary: DELETE Tag Disconnect
      operationId: delete-tag-disconnect
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: remove the tag only from the current location
      parameters:
        - schema:
            type: integer
          in: query
          name: locationId
          description: id of location the tag gets connected to
          required: true
      tags:
        - tag
  '/tag/connect/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the tag
    post:
      summary: POST Tag Connect
      operationId: post-tag-connect
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - tag
      description: connecting tag and location
      parameters:
        - schema:
            type: integer
          in: query
          name: locationId
          description: id of location the tag gets connected to
          required: true
  /tag:
    get:
      summary: GET Tag List
      tags:
        - tag
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultTag'
      operationId: get-tag-list
      description: |-
        Returns a list of tags related to a company, containing only the minimal set of information.
        The search needs to be restricted by a company id and can be limited by some optional query parameter.
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: a filter for the name
        - schema:
            type: string
          in: query
          name: sortColumn
          description: 'name of the column which gets sorted, need to be one of the fields of the model schema of the response'
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          name: sortDirection
          description: asc or desc for ascending or descending
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: integer
          in: query
          name: id
          required: true
          description: the id of the parental company
  '/contact/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: id of the company
    post:
      summary: POST Contact
      operationId: post-contact
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - contact
      description: 'You can define a new contact person for companies with this method. Right now, only one contact person per company is allowed.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactInsert'
        description: contact object
    put:
      summary: PUT Contact
      operationId: put-contact
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - contact
      description: 'Method to update a existing contact. Set all fields mentioned in the model description, only the optional ones can be left out. Some of the contact update fields need to be in a specific format: * emails: represents a list of emails, the minimum length of this list is 1, each email needs to be in a specific format: ''foo@bar.de'' * phone, mobile: need to be in a specific format: e.g. ''49-123-456789'' "'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactUpdate'
        description: contact object
  /contact:
    get:
      summary: GET Contact
      tags:
        - contact
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultContact'
      operationId: get-contact
      description: |-
        Returns a list of contacts, each representing a sales man of the defined workspace
        The search needs to be restricted by a workspace id and can be limited by some optional query parameter.
      parameters:
        - schema:
            type: integer
          in: query
          name: id
          description: the id of the parental workspace
          required: true
  /activity/location/total:
    get:
      summary: GET Activity Location Total
      tags:
        - activity
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: get-activity-location-total
      description: get the total number of locations
  /activity/user/login:
    get:
      summary: GET Activity User Login
      tags:
        - activity
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: get-activity-user-login
      description: get a number of logins of a period of time
      parameters:
        - schema:
            type: string
          in: query
          name: from
          description: 'date of format [yyyy-MM-dd] determining the including start date for filtering'
        - schema:
            type: string
          in: query
          name: to
          description: 'date of format [yyyy-MM-dd] determining the including end date for filtering'
  /activity/subscription:
    get:
      summary: GET Activity Subscription
      tags:
        - activity
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultActivity'
      operationId: get-activity-subscription
      description: get all the subscriptions running in a time span
      parameters:
        - schema:
            type: string
          in: query
          name: from
          description: 'date of format [yyyy-MM-dd] determining the including start date for filtering'
        - schema:
            type: string
          in: query
          name: to
          description: 'date of format [yyyy-MM-dd] determining the including end date for filtering'
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
        - schema:
            type: string
            enum:
              - PROCESSING
              - ACTIVE
              - EXPIRING
              - FINISHED
              - FAILED
          in: query
          name: statuses
          description: optional status filter
  /activity/chronology:
    get:
      summary: GET Activity Chronology
      tags:
        - activity
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultActivityChronology'
      operationId: get-activity-chronology
      description: get created companies locations or subscriptions chronology for a time span
      parameters:
        - schema:
            type: string
            enum:
              - Day
              - Month
              - Year
          in: query
          name: chronology
          description: determines the chronological type of the data representation
          required: true
        - schema:
            type: string
            enum:
              - Company
              - Location
              - Subscription
          in: query
          required: true
          name: contextType
          description: determines the parental context
        - schema:
            type: string
          in: query
          name: from
          description: 'date of format [yyyy-MM-dd] determining the including start date for filtering'
        - schema:
            type: string
          in: query
          name: to
          description: 'date of format [yyyy-MM-dd] determining the including end date for filtering'
        - schema:
            type: boolean
          in: query
          required: true
          name: summedUp
          description: true for the absolut number and false for the relative number
  /activity/location/origin:
    get:
      summary: GET Activity Location Origin
      tags:
        - activity
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultActivity'
      operationId: get-activity-location-origin
      description: get a list of the origin of the locations
      parameters:
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
  /activities/company/total:
    get:
      summary: GET Activities Company Total
      tags:
        - activity
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: get-activities-company-total
      description: get the total number of companies
  '/internal/monitoring/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: it of the Monitoring Error
    put:
      summary: PUT Internal Monitoring
      operationId: put-internal-monitoring
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - internal
      description: Method to put Monitoring Messages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MonitoringInsert'
        description: monitoring
  /phone:
    get:
      summary: GET Phone
      tags:
        - phone
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultPhone'
      operationId: get-phone-list
      parameters:
        - schema:
            type: integer
            format: int32
          in: query
          name: id
          description: id of the parental location / contact
          required: true
        - schema:
            type: string
            enum:
              - Contact
              - Location
          in: query
          name: contextType
          required: true
      description: returns a list of phone objects for some context
  '/phone/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
    post:
      summary: POST Phone
      operationId: post-phone
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - phone
      description: |-
        add an alternative phone to a contact or a location
        Path Params:
        id: id of the parental location / contact/ user
      parameters:
        - schema:
            type: string
            enum:
              - Location
              - Contact
              - User
          in: query
          name: parentType
          description: etermines the type of parent the phone number gets connected to
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhoneInsert'
    put:
      summary: PUT Phone
      operationId: put-phone
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to update a specific phone
        Path Param:
        id: id of the phone
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhoneUpdate'
        description: ''
      tags:
        - phone
    delete:
      summary: DELETE Phone
      operationId: delete-phone
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        delete a phone and all connections to it
        Path Param:
        id: the id of the phone
      tags:
        - phone
  '/phone/mainphone/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
    put:
      summary: PUT MainPhone
      operationId: put-main-phone
      responses:
        '200':
          description: OK
      description: |-
        Method to update a specific main phone

        Path Param:
        id: id of the phone
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MainPhoneUpdate'
      tags:
        - phone
  '/address/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
    put:
      summary: PUT Address
      operationId: put-address-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to update an existing address
        Path Param:
        id: id of the address
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddressUpdate'
      tags:
        - address
    post:
      summary: POST Address
      operationId: post-address
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - address
      description: |-
        Method to create a new address


        Note: if you use the Location parentType you will add address to a location
        if you use the BillingAccount parentType  you will add addres to a b

        Path Param:
        id: id of the parent
      parameters:
        - schema:
            type: string
            enum:
              - BillingAccount
              - Location
              - Contract
          in: query
          name: parentType
          description: determines the type of parent the address gets connected to
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddressInsert'
        description: ''
    delete:
      summary: DELETE address
      operationId: delete-address-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to delete an addres
        Path Param:
        id: id of the address
      tags:
        - address
  /meta/salutations:
    get:
      summary: GET SalutationList
      tags:
        - meta
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultString'
      operationId: get-meta-salutations
      description: returns a list valid salutations in the language of your own user settings
  /meta/legal-types:
    get:
      summary: GET LegalTypeList
      tags:
        - meta
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultString'
      operationId: get-meta-legal-types
      description: returns a list of valid legal types
  /meta/budget-types:
    get:
      summary: GET BudgetTypeList
      tags:
        - meta
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultKeyValueInt'
      operationId: get-meta-budget-types
      description: returns a list of budget types
  /meta/categories:
    get:
      summary: GET CategoryList
      tags:
        - meta
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultKeyValueInt'
      operationId: get-meta-categories
      description: 'Returns a list of categories. You can change the translation by setting the language parameter, but be aware: if there is now translation for a category you will get the german ones. Additionally you can pass a workspace id, a workspace can have a different category set configured.'
      parameters:
        - schema:
            type: string
          in: query
          name: language
          description: 'language code, ISO 3166-1 alpha-2 , e.g. en. If not defined, the language setting of your user is getting used'
        - schema:
            type: integer
            format: int32
          in: query
          name: workspaceId
          description: 'workspace id, if you want to get the category set for a special workspace. If not defined, you will get the default markee category set'
  /meta/categorySearch:
    get:
      summary: GET CategorySearch
      tags:
        - meta
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultCategorySearch'
      operationId: get-meta-category-search
      description: 'Returns a list of categories or category aliases based on a seach term. You can change the translation by setting the language parameter, but be aware: if there is now translation for a category you will get the german ones. Additionally you can pass a workspace id, a workspace can have a different category set configured.'
      parameters:
        - schema:
            type: string
          in: query
          name: query
          description: search term
          required: true
        - schema:
            type: string
          in: query
          name: language
          description: 'language code, ISO 3166-1 alpha-2 , e.g. en. If not defined, the language setting of your user is getting used'
        - schema:
            type: integer
            format: int32
          in: query
          name: workspaceId
          description: 'workspace id, if you want to get the category set for a special workspace. If not defined, you will get the default markee category set'
  /stats/aggregated:
    get:
      summary: GET Statistic Aggregated
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultAggregated'
      operationId: get-stats-aggregated
      description: |-
        Returns list of aggregated statistics for different products and licences.
        The statistics will be aggregated with respect to the chosen time interval.
        If available you will see the periodically change compared to the statistics of the foregone period, which is getting determined by the same number of days you defined with from and to.
        In case the statistics are getting shown for just a single product line (e.g. listing) you will see the extended kpis listed as an additional detailed layer. Otherwise (e.g. listing and sea) you will see the product lines as this layer. To see which kpis are available feel free to get them by the 'possible kpis' call.
      parameters:
        - schema:
            type: string
          in: query
          description: 'list of context ids, comma separated'
          name: ids
          required: true
        - schema:
            type: string
            enum:
              - Company
              - Location
              - Subscription
          in: query
          name: contextType
          description: determines the parental context
          required: true
        - schema:
            type: string
          in: query
          name: kpis
          description: 'the kpis you want to get statistics for, see ''possible kpis'' call to see the available kpis for your product/licence filter configuration'
        - schema:
            type: string
            enum:
              - ReachEnhancement
              - Listing
              - Advertisement
              - ListingPortal
              - CallTracking
          in: query
          name: products
          description: select all the products you want to see statistics for
        - schema:
            type: string
          in: query
          name: licenceIds
          description: 'filter for licences, comma seperated licence ids'
        - schema:
            type: string
            format: date
          in: query
          name: from
          description: date of format 'yyyy-MM-dd' determining the including start date for filtering
        - schema:
            type: string
            format: date
          in: query
          name: to
          description: date of format 'yyyy-MM-dd' determining the including end date for filtering
        - schema:
            type: boolean
          in: query
          name: includeMetaData
          description: 'with this parameter you can control if more detailled meta data shall get included in thie response (if available). Be ware: this can slow down the response time. Default is false'
      tags:
        - statistic
  /stats/chronology:
    get:
      summary: GET Statistic Chronology
      tags:
        - statistic
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultChronology'
      operationId: get-stats-chronology
      description: 'Returns list of chronological statistics for different products and licences. The statistics will be aggregated with respect to the chosen time interval and the aggregation type. With this you can decide to get the statics on a daily, monthly or yearly basis. In case the statistics are getting shown for just a single product line (e.g. listing) you will see the extended kpis listed as an additional detailed layer. Otherwise (e.g. listing and sea) you will see the product lines as this layer. To see which kpis are available feel free to get them by the ''possible kpis'' call. '
      parameters:
        - schema:
            type: string
          in: query
          description: 'list of context ids, comma separated'
          name: ids
          required: true
        - schema:
            type: string
            enum:
              - Company
              - Location
              - Subscription
          in: query
          name: contextType
          description: determines the parental context
          required: true
        - schema:
            type: string
          in: query
          name: kpis
          description: 'the kpis you want to get statistics for, see ''possible kpis'' call to see the available kpis for your product/licence filter configuration'
        - schema:
            type: string
            enum:
              - ReachEnhancement
              - Listing
              - Advertisement
              - ListingPortal
              - CallTracking
          in: query
          name: products
          description: select all the products you want to see statistics for
        - schema:
            type: string
          in: query
          name: licenceIds
          description: 'filter for licences, comma seperated licence ids'
        - schema:
            type: string
            format: date
          in: query
          name: from
          description: date of format 'yyyy-MM-dd' determining the including start date for filtering
        - schema:
            type: string
            format: date
          in: query
          name: to
          description: date of format 'yyyy-MM-dd' determining the including end date for filtering
        - schema:
            type: string
            enum:
              - Day
              - Month
              - Year
              - Week
          in: query
          name: aggregationType
          required: true
          description: determines the chronological aggregation type of the data representation
        - schema:
            type: boolean
          in: query
          name: includeMetaData
          description: 'with this parameter you can control if more detailled meta data shall get included in thie response (if available). Be ware: this can slow down the response time. Default is false'
  /stats/kpi:
    get:
      summary: GET Statistic KPIs
      tags:
        - statistic
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKpis'
      operationId: get-stats-kpi
      description: 'Returns a list of possible kpis. You can filter for products and/or licences to see what you could get by the statistics calls. Remark: To get the detailed extended kpis for a licence/product you need to set the filter correspondingly. '
      parameters:
        - schema:
            type: string
            enum:
              - ReachEnhancement
              - Listing
              - Advertisement
              - ListingPortal
              - CallTracking
          in: query
          name: products
          description: select all the products you want to see statistics for
        - schema:
            type: string
          in: query
          name: licenceIds
          description: 'filter for licences, comma seperated'
  /stats/call:
    get:
      summary: GET Statistic Call
      tags:
        - statistic
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultCallsDetail'
      operationId: get-stats-call
      description: returns call tracking statistics in a tabled way
      parameters:
        - schema:
            type: string
          in: query
          name: ids
          description: 'list of context ids, comma separated'
          required: true
        - schema:
            type: string
            enum:
              - Company
              - Location
              - Subscription
          in: query
          name: contextType
          description: determines the parental context
          required: true
        - schema:
            type: boolean
            format: date
          in: query
          name: filtered
          description: using filtered date or raw ones
          required: true
        - schema:
            type: string
            format: date
          in: query
          name: from
          description: date of format 'yyyy-MM-dd' determining the including start date for filtering
        - schema:
            type: string
            format: date
          in: query
          name: to
          description: date of format 'yyyy-MM-dd' determining the including end date for filtering
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries of list
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
  /analytics/benchmark:
    get:
      summary: GET benchmark data
      tags:
        - statistic
      description: The analytics/benchmarks endpoint provides access to benchmark data, allowing to assess the relative performance of metrics across different periods, geographies and categories. Benchmarks are calculated using descriptive statistics, primarily relying on bucket limits to represent the distribution of data. Benchmarks are based on the CET timezone, refreshed daily at midnight CET, and stored for fast access. Refer to the 'period' parameter for available timeframes.
      operationId: get-analytics-benchmark
      parameters:
        - name: contextType
          in: query
          description: The context type for the IDs provided.
          required: true
          schema:
            type: string
            enum:
              - Location
              - Company
            example: "Location"
        - name: ids
          in: query
          description: A comma-separated list of entity IDs to include in the benchmark.
          required: true
          schema:
            type: string
            example: "123456,123445"
        - name: kpis
          in: query
          description: This parameter defines which Key Performance Indicators (KPIs) you want to query. Each KPI represents a specific metric that provides insight into performance, such as engagement or conversions.
          required: true
          schema:
            type: string
            enum:
              - impression
              - conversion
              - engage
              - contact
            example: "impression,conversion"
        - name: aggregationType
          in: query
          description: Determines the granularity of the benchmarks retrieved. It specifies how the data should be grouped over time. If this parameter is not specified in the request, the API defaults to Day as the aggregation type.
          schema:
            type: string
            enum:
              - Day
              - Week
              - Month
              - Year
            example: "Month"
        - name: geography
          in: query
          description: The ID of the geography. When not set, requests the benchmark for all available geographies. Use [`GET location list`](#tag/location/operation/get-location-list) with BenchmarkDetails to find the geography id of your locations.
          schema:
            type: integer
            format: int64
            example: "2134"
        - name: categoryHierarchy
          in: query
          description: The ID of the category hierarchy. When not set, requests the benchmark for all available categories. Use [`GET location list`](#tag/location/operation/get-location-list) with BenchmarkDetails to find the category hierarchy id of your locations.
          schema:
            type: integer
            format: int64
            example: "5678"
        - name: period
          in: query
          description: Predefined time period for benchmarks. These periods are calculated in advance for optimal performance and allow efficient querying of the data.
          schema:
            type: string
            enum:
              - 7d
              - 14d
              - 30d
              - 90d
              - lastWeek
              - lastMonth
              - lastYear
            example: "30d"
        - name: from
          in: query
          description: The start date for the benchmark query, specified in YYYY-MM-DD format. It defines the beginning of the date range for which benchmarks are retrieved. This parameter must be used together with the to parameter unless the period parameter is provided.
          schema:
            type: string
            format: date
            example: "2024-01-01"
        - name: to
          in: query
          description: The end date for the benchmark query, specified in YYYY-MM-DD format. It defines the last date of the range for which benchmarks are retrieved. This parameter must be used in conjunction with the from parameter unless the period parameter is provided.
          schema:
            type: string
            format: date
            example: "2024-01-02"
      responses:
        '200':
          description: Successfully retrieved benchmark data.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnalyticsResults'
  /company/claim:
    post:
      summary: POST Start Claim
      operationId: post-company-claim
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessString'
      description: |-
        Use this method to claim a company/location.
        You can claim an existing company/location by using the corresponding location id or you can trigger it by using the phone number of this location you want to insert.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartClaim'
      tags:
        - claim
  '/company/claim/{claimId}':
    parameters:
      - schema:
          type: string
          format: uuid
        name: claimId
        in: path
        required: true
        description: 'claim id, returned by the initialized claiming step'
    put:
      summary: PUT Finish Claim
      operationId: put-company-claim-claimId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessBoolean'
      description: update the claiming process by setting the correct pin
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FinishClaim'
      tags:
        - claim
  /content/workspace:
    get:
      summary: GET Workspace List
      tags:
        - workspace
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultWorkspace'
      operationId: get-content-workspace-list
      description: 'Returns a list of workspaces. Every workspace has a parentId that references the workspace directly above the workspace, name and shortname that describe the workspace and an optional custom fields company property that is used to configure certain settings for all the companies under the workspace.'
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: a filter for the name
        - schema:
            type: integer
          in: query
          name: id
          description: limit by space
        - schema:
            type: string
          in: query
          name: sort
          description: ' asc or desc for ascending or descending'
        - schema:
            type: integer
          in: query
          description: skip entries
          name: skip
        - schema:
            type: integer
          in: query
          name: take
          description: take a given number of entries
    post:
      summary: POST Workspace
      operationId: post-content-workspace
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - workspace
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Workspace'
      description: 'Create a new workspace. The model has a parentId that references the workspace directly above the new workspace, name and shortname that describe the new workspace and an optional custom fields company property that is used to configure certain settings for all the companies under the new workspace.'
  '/content/workspace/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
    get:
      summary: GET Workspace
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workspace'
      operationId: get-content-workspace
      description: 'Returns a workspace. The model has a parentId that references the workspace directly above it, name and shortname that describe the workspace and an optional custom fields company property that is used to configure certain settings for all the companies under it.'
      tags:
        - workspace
  '/website/monoSync/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
    get:
      summary: Your GET endpoint
      tags:
        - website
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonoSyncOverview'
      operationId: get-website-monosync
      description: |-
        End point call for monoSync product
        Path Param:
        id: Subscription id
  /location/bulk/openinghours:
    put:
      summary: PUT Bulk Opening Hours
      operationId: put-location-bulk-openinghours
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      tags:
        - location
      description: This method will delete openign hours if they exist base on the openingHoursType that is in the request body for locations and post new ones in a bulk function
      parameters:
        - schema:
            type: string
          in: query
          name: id
          description: location ids
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpeningHoursInsert'
    parameters: []
  '/social/review/comment/{commentId}':
    parameters:
      - schema:
          type: integer
        name: commentId
        in: path
        required: true
    put:
      summary: PUT Review Comment
      operationId: put-social-review-comment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
              examples: {}
            application/xml:
              schema:
                type: object
                properties: {}
      tags:
        - social
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SocialReviewCommentUpdate'
      description: |
        Update a comment of a review.
  '/company/{companyId}/google-attributes':
    parameters:
      - schema:
          type: integer
          format: int64
        name: companyId
        in: path
        required: true
        description: Id of the company
    get:
      summary: GET Grouped Google Attributes
      tags:
        - company
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultGoogleAttributeGroup'
      operationId: get-company-companyId-google-attributes
      description: |-
        Get grouped google main categories for attributes bulk edit.
        For the company id and list of locations given as parameter this method finds and returns a list of categories.
        For each of them it returns a list of locations which have this categorie as main categorie.
        It returns a list of attributes that belong to that category and a bulk state that indicates if those attributes have the same value for all locations on that list or not.
      parameters:
        - schema:
            type: string
          in: query
          name: locationIds
          description: comma seperated list of location ids
  '/reachEnhancement/{id}/segment':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: reach enhancement id
    get:
      summary: GET Reach Enhancement Segment List
      operationId: get-reach-enhancement-id-segment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSegment'
      tags:
        - sea
        - socialAd
        - localCampaigns
      description: |
        get segment list for the different reach enhancement we have in the system (at the moment sea, socialAd or localCampaign).
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: optional filter for the segment name
        - schema:
            type: integer
          in: query
          name: skip
          description: optinal integer to skip the first n results
        - schema:
            type: integer
          in: query
          name: take
          description: optional filter to get only n results
        - schema:
            type: string
            enum:
              - active
              - paused_pending
              - paused
              - active_pending
              - failed
              - invalid
          in: query
          name: segmentStatus
          description: comma separated list of segment statuses
  /reachEnhancement/segment/social/target-types:
    get:
      summary: GET Social Ad Target Types
      tags:
        - socialAd
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultKeyValueInt'
      operationId: get-reach-enhancement-segment-social-target-types
      description: |-
        Get different target types for social ad segments.
        Those types defines the goals of your socia ad campaign
  '/reachEnhancement/{reachEnhancementId}/segment/social':
    parameters:
      - schema:
          type: integer
        name: reachEnhancementId
        in: path
        required: true
        description: your social ad campaign id
    post:
      summary: POST Segment Social
      operationId: post-reach-enhancement-reachEnhancementId-segment-social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Create a segment for a social ad campaign.
        When you create a segment you need to define a target (see GET Social Ad Target Types /reachEnhancement/segment/social/target-types), if needed a special adCategory and of course the facebook page you want to use for the campaign.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SegmentSocialInsert'
      tags:
        - socialAd
  '/reachEnhancement/{reachEnhancementId}/segment/social/{segmentId}':
    parameters:
      - schema:
          type: integer
        name: reachEnhancementId
        in: path
        required: true
        description: your social ad campaign id
      - schema:
          type: integer
        name: segmentId
        in: path
        required: true
        description: your segment id of this campaign
    get:
      summary: GET Segment Social
      tags:
        - socialAd
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SegmentSocial'
      operationId: get-reach-enhancement-reachEnhancementId-segment-social-segmentId
      description: |-
        Get Segment social detail

        Note: Get the status of your segment, the adCategory it belongs to (e.g:"Housing"). Get type of advertising this segment is promoting to e.g: "Promote a Facebook page" and the name of the segment.
    put:
      summary: PUT Segment Social
      operationId: put-reach-enhancement-reachEnhancementId-segment-social-segmentId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Update the segment social name.
        All other fields of a social segment can not be changed after the creation.
      tags:
        - socialAd
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SegmentSocialUpdate'
  /reachEnhancement/segment/social/pause:
    put:
      summary: PUT Segment Social Pause
      operationId: put-reach-enhancement-segment-social-pause
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      tags:
        - socialAd
      parameters:
        - schema:
            type: string
          in: query
          name: ids
          description: comma seperated list of segment ids
          required: true
        - schema:
            type: boolean
          in: query
          description: indicates if the segments shall be paused or activated
          name: shallBePaused
          required: true
      description: Method to pause a segment social of a social ad campaign.
  '/reachEnhancement/segment/social/{segmentId}':
    parameters:
      - schema:
          type: integer
        name: segmentId
        in: path
        required: true
        description: unique segment id you want to delete
    delete:
      summary: DELETE Segment Social
      operationId: delete-reachEnhancement-segment-social-segmentId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Method to delete a segment of a social ad campaign.


        Note:
        At least one segment need to stay you can not delete all of them.
      tags:
        - socialAd
  '/reachEnhancement/segment/{segmentId}/targeting/demographic':
    parameters:
      - schema:
          type: integer
        name: segmentId
        in: path
        required: true
    get:
      summary: GET Demographic
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Demographic'
      operationId: get-reach-enhancement-segment-targeting-demographic
      description: 'Get segment targeting demographic, this includes the age and gender.'
      tags:
        - socialAd
    put:
      summary: PUT Demographic
      operationId: put-reachEnhancement-segment-segmentId-targeting-demographic
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - socialAd
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DemographicUpdate'
      description: |-
        update segment targeting demographic

        Note:  define the age and gender targeting group of people this segment is referring to
  '/reachEnhancement/segment/{reachEnhancementType}/{segmentId}/targeting/location':
    parameters:
      - schema:
          type: string
          enum:
            - sea
            - socialAd
        name: reachEnhancementType
        in: path
        required: true
        description: the campaign type the segment belongs to
      - schema:
          type: integer
        name: segmentId
        in: path
        required: true
        description: the corresponding segment id of this campaign type
    get:
      summary: GET Social Ad Targeting Location
      tags:
        - socialAd
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetingLocation'
      operationId: get-reachEnhancement-segment-segmentId-targeting-location
      description: |
        Get the location targeting of a segment.
        This call can be used for all subtypes of reach enhancements campaigns (sea, socialAd)

        Note: 
        excludedLocations: the location(city , town, postcode) that will not be effect by the social ad segment
        includedLocations: the location (city , town, postcode) that will be effect by the social ad segment
        radius: we use radious of km from your location for the social ad segment
    put:
      summary: PUT Social Ad Location
      operationId: put-reachEnhancement-segment-segmentId-targeting-location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TargetingLocationUpdate'
        description: ''
      description: |
        Update the location targeting of a segment

        Note:
        excludedLocations: the location(city , town, postcode) that will not be effect by the Social Ad 
        includedLocations: the location (city , town, postcode) that will be effect by the Social Ad
        radius:   we use radious of km from your location for the Social Ad to effect
        radius or includedLocations must be defined

        KeyValueStrings 
        use the api /reachEnhancement/EngineCodes to get the 'engineCode' which is the 'key' and 'name' which is the 'value', 
        name can be postcode too.
      tags:
        - socialAd
  /targeting/interest/vertical:
    get:
      summary: GET Vertical Interest List
      tags:
        - socialAd
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultVertical'
      operationId: get-targeting-interest-vertical
      parameters:
        - schema:
            type: integer
          in: query
          name: skip
          description: number of element to skip
        - schema:
            type: integer
          in: query
          name: take
          description: number of element to take
        - schema:
            type: string
          in: query
          name: filter
          description: filter for the name
      description: 'Get the available list of vertical interest targeting for Social Ad '
  /targeting/interest:
    get:
      summary: GET Interest List
      tags:
        - socialAd
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultInterests'
      operationId: get-targeting-interest
      description: |-
        Get the available list of interest targeting for Social Ad 

        Note: use this api endpoint /targeting/interest/vertical to get the vertical interest list
      parameters:
        - schema:
            type: integer
          in: query
          name: skip
          description: number of element to skip
        - schema:
            type: integer
          in: query
          name: take
          description: number of element to take
        - schema:
            type: string
          in: query
          name: filter
          description: filter for the name
        - schema:
            type: string
          in: query
          name: vertical
          description: name from the vertical interest list
  '/reachEnhancement/segment/{segmentId}/targeting/interest':
    parameters:
      - schema:
          type: integer
        name: segmentId
        in: path
        required: true
    get:
      summary: GET Segment Interest
      tags:
        - socialAd
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SocialAdInterest'
      operationId: get-reachEnhancement-segment-segmentId-targeting-interest
      description: |
        Get the interest list of a social ad segment
    put:
      summary: PUT Segment Interest
      operationId: put-reachEnhancement-segment-segmentId-targeting-interest
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - socialAd
      description: |
        Put interests for a social ad segment

        Note: 
        use this api endpoint /targeting/interest to get a list of available interest
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SocialAdInterestUpdate'
  '/reachEnhancement/segment/{segmentId}/ad':
    parameters:
      - schema:
          type: integer
        name: segmentId
        in: path
        required: true
    get:
      summary: GET Segment Ad List
      tags:
        - socialAd
      operationId: get-reachEnhancement-segment-segmentId-ad
      description: |
        Get list of ads that belong to a segment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultAd'
      parameters:
        - schema:
            type: string
          in: query
          name: filter
          description: optional filter for the ad headline
        - schema:
            type: integer
          in: query
          name: skip
          description: optinal integer to skip the first n results
        - schema:
            type: integer
          in: query
          name: take
          description: optional filter to get only n results
    post:
      summary: POST Segment Ad
      operationId: post-reachEnhancement-segment-segmentId-ad
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - socialAd
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SegmentAdInsert'
      description: |
        Post a new ad for a segment

        Note:
        Ads require different fields base on the target type of the segment.

        Each image insert need to be use with the imageType "SegmentAdImage"

        The fields you need to define depend on the targe type:

        Drive Traffic To The Website
        the following fields are required : headline, subscription, description, images, destinationUrl, text and call to action

        Reach the maximum audience with your ad
        destinationUrl, at least 2 carrousel cards and call to action
  '/reachEnhancement/segment/ad/{adId}':
    parameters:
      - schema:
          type: integer
        name: adId
        in: path
        required: true
    get:
      summary: GET Segment Ad
      tags:
        - socialAd
      operationId: get-reachEnhancement-segment-ad-adId
      description: Get detailled information of an ad.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SegmentAd'
      parameters: []
    put:
      summary: PUT Segment Ad
      operationId: put-reachEnhancement-segment-ad-adId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - socialAd
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SegmentAdUpdate'
      description: |-
        Update information for an ad.

        Note: the same restriction apply here as in the post method for ads.
        Please read the notes there
        POST Segment Ad /reachEnhancement/segment/{segmentId}/ad
    delete:
      summary: DELETE Segment Ad
      operationId: delete-reachEnhancement-segment-ad-adId
      tags:
        - socialAd
      description: Delete an ad
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
  '/reachEnhancement/segment/{segmentId}/targeting/advanced-location':
    parameters:
      - schema:
          type: integer
        name: segmentId
        in: path
        required: true
    get:
      summary: GET Advanced Targeting
      tags:
        - socialAd
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdvanceTargeting'
      operationId: get-reachEnhancement-segment-segmentId-advance-targeting-location
      description: |-
        Get the advanced targeting for a segment-

        Note: 
        get the confgiured advanced location targeting for a segment
        e.g:"Everyone who lives in or was recently in this location".
        matchType: is only for displayAd segments which are not suported yet.
    put:
      summary: PUT Advanced Targeting
      operationId: put-reachEnhancement-segment-segmentId-advance-targeting-location
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        Update the advance targeting for a segment.

        To the the available options for the advanced targeting, see:
        GET Advanced Targeting List  /reachEnhancement/segment/targeting/advanced-location
      tags:
        - socialAd
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KeyValueInt'
  /reachEnhancement/segment/targeting/advanced-location:
    get:
      summary: GET Advanced Targeting List
      tags:
        - socialAd
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultAdvanceTargeting'
      operationId: get-reachEnhancement-segment-targeting-advanced-location
      description: |-
        Get the possible Advanced Location Targeting e.g: 'Everyone who lives in or was recently in this location'
        for better location targeting.
        matchType: is only for displayAds segments, which are not suported yet
  '/listing/publisher-suggestion/{suggestionId}/{accept}':
    parameters:
      - schema:
          type: string
        name: suggestionId
        in: path
        required: true
      - schema:
          type: boolean
        name: accept
        in: path
        required: true
    put:
      summary: PUT Publisher suggestion
      operationId: put-listing-publisher-suggestion-suggestionId-accept
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - listing
      description: |-
        This method is called when a user decides to accept or reject a suggestion.
        It updates the suggestion status from Open to Accepted/Rejected.
        If it is accepted it also updates that information in the markee DB.
  '/licence/{licenceId}/configuration/dynamic-video':
    get:
      summary: GET Dynamic Video Licence Configuration
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsList'
      operationId: get-dynamic-video-configuration
      description: |-
        With this call you are able to get the configuration of a dnymic video licence.

        The response contains all data you can or have to set when subsribing to such a licence.
      tags:
        - dynamicvideo
    parameters:
      - schema:
          type: integer
          format: int64
        name: licenceId
        in: path
        required: true
        description: licence id you want to subsribe to
  '/dynamic-video/{subscriptionId}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: subscriptionId
        in: path
        required: true
        description: unique subscription id that belongs to a dynamic video
    get:
      summary: GET Details To Dynamic Video Subscription
      tags:
        - dynamicvideo
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DynamicVideo'
      operationId: get-dynamic-video
      description: |-
        This method provides detaillend information of a dynamic video subscription.

        In case you enabled the "Youtube Upload" AddOn for your subscription and defined (via PUT Dynamic Video Youtube) a title and description for your youtube video, you will the the corresponding youtube video url in this object too.

        Requirement:
        Either a standard youtube channel authorized on workspace level or a custom youtube channel authorized on location level.
    put:
      summary: PUT Dynamic Video Changes
      operationId: put-dynamic-video
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |
        You can change the settings (if available) of the dynamic video with this call. 

        Which settings you can or need to set is defined either in the call "GET Details To Dynamic Video Subscription" or "GET Dynamic Video Licence Configuration".

        BE AWARE!
        The update is not triggering a new video creation generation, it is just changing the settings.
        If you want to regenerate the video with those updated settings you have to use the call "PUT Dynamic Video Regeneration"
      tags:
        - dynamicvideo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DynamicVideoUpdate'
  '/dynamic-video/{subscriptionId}/regenerate':
    parameters:
      - schema:
          type: integer
          format: int64
        name: subscriptionId
        in: path
        required: true
        description: unique subscription id that belongs to a dynamic video
    put:
      summary: PUT Dynamic Video Regeneration
      operationId: put-dynamic-video-subscriptionId-regenerate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |
        You can retrigger the video creation with this call.

        You can do it whenever you changed the settings or some data that are getting used for those videos have been changed.

        As soon as the new video url is available it will be available through the call "GET Details To Dynamic Video Subscription".

        Important:
        * When there is a generation still in progress, you can't trigger an additional regeneration!
        * if your video in on youtube it will be deleted in order to upload it use the PUT Youtube Video Action api call  action (upload)
      tags:
        - dynamicvideo
  '/dynamic-video/{subscriptionId}/youtube':
    parameters:
      - schema:
          type: integer
          format: int64
        name: subscriptionId
        in: path
        required: true
        description: subscription id that belongs to dynamic video
    put:
      summary: PUT Youtube Video Data
      operationId: put-dynamic-video-youtube
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - dynamicvideo
      description: |
        In case you have an enabled addon "Youtube Upload" for your subscription, you can change your title and description of this video via this update too. Those changes will be not synced to your youtube video , please use the PUT Youtube Video Action api call else nothing will happen to your video 

        You can also select a custom channel by defining channel id and if you want a playlist too.
        Make sure though that you go through the oauth flow to authorize markee to sync data to the custom youtube channel.

        Important:
        * To  upload , delete or update your video on youtube please use the PUT Youtube Video Action api call else nothing will happen to your video 

        Note:
        * As long as there aren't any youtube data set, we do not upload your dynamic video to youtube, no matter if you do have the addon enabled or not.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/YoutubeVideoUpdate'
  '/reachEnhancement/{reachEnhancementId}/localCampaigns/targeting/language':
    get:
      description: 'Get the Language Targeting information of a Local Campaign. This is a type of targeting based on a set of language codes according to ISO 639-1. BE AWARE! This targeting does not translate your ads to the languages you target, the ads will be shown in the language they were created. The targeting is to focus on users with this languages as preference on their devices. By default the campaigns don''t have this type of targeting so they will focus on all languages without preferences. Only one set of languages can be set for a single campaign. This call gets you the set of language codes that a certain local campaign identified by the reachEnhancementId parameter is targeting.'
      operationId: get-language-targeting
      tags:
        - localCampaigns
      parameters:
        - name: reachEnhancementId
          in: path
          description: Id of the reach enhancement local campaign of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      responses:
        '200':
          description: Information of the Language Targeting
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LanguageCriterion'
      summary: GET Information of the Language Targeting of the Campaign
    post:
      description: 'Create language targeting for a Local Campaign. This is a type of targeting based on a set of language codes according to ISO 639-1. BE AWARE! This targeting does not translate your ads to the languages you target, the ads will be shown in the language they were created. The targeting is to focus on users with this languages as preference on their devices. By default the campaigns don''t have this type of targeting so they will focus on all languages without preferences. Only one set of languages can be set for a single campaign. This call will cause the local campaign identified by the reachEnhancementId parameter to target users with any of the languages in the set as preference.'
      operationId: post-language-targeting
      tags:
        - localCampaigns
      parameters:
        - name: reachEnhancementId
          in: path
          description: Id of the reach enhancement local campaign of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      requestBody:
        description: Data for the new language Criterion
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LanguageCriterionInsert'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      summary: POST Create language targeting for a local campaign
    put:
      description: 'Update the language targeting of a Local Campaign. This is a type of targeting based on a set of language codes according to ISO 639-1. BE AWARE! This targeting does not translate your ads to the languages you target, the ads will be shown in the language they were created. The targeting is to focus on users with this languages as preference on their devices. By default the campaigns don''t have this type of targeting so they will focus on all languages without preferences. Only one set of languages can be set for a single campaign. This call will update the set of languages that the local campaign identified by the reachEnhancementId parameter targets.'
      operationId: put-language-targeting
      tags:
        - localCampaigns
      parameters:
        - name: reachEnhancementId
          in: path
          description: Id of the reach enhancement local campaign of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      requestBody:
        description: Data for the new Language Criterion
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LanguageCriterionUpdate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      summary: PUT Update the language targeting radius
    delete:
      description: 'Delete the language targeting of a Local Campaign. This is a type of targeting based on a set of language codes according to ISO 639-1. BE AWARE! This targeting does not translate your ads to the languages you target, the ads will be shown in the language they were created. The targeting is to focus on users with this languages as preference on their devices. By default the campaigns don''t have this type of targeting so they will focus on all languages without preferences. Only one set of languages can be set for a single campaign. This call will delete any language specific targeting on the local campaign identified by the reachEnhancementId parameter, this will cause the campaign to go back to default behavior, this means targeting all languages.'
      operationId: delete-language-targeting
      tags:
        - localCampaigns
      parameters:
        - name: reachEnhancementId
          in: path
          description: Id of the reach enhancement local campaign of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      summary: DELETE Remove the language targeting of a Local Campaign
  '/reachEnhancement/{reachEnhancementId}/segment/localCampaigns':
    post:
      description: Creates a segment (Ad Group) for a Local Campaign. Ad groups are a way or grouping ads under a same place identified by a name. This call will create an ad group with the provided name for the local campaign identified by the reachEnhancementId parameter.
      operationId: post-local-campaigns-segment
      tags:
        - localCampaigns
      parameters:
        - name: reachEnhancementId
          in: path
          description: Id of the reach enhancement local campaign of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      requestBody:
        description: Data of a segment (Ad Group)
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalCampaignsSegmentInsert'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      summary: POST Create a segment (Ad Group) for a local campaign
  '/reachEnhancement/segment/localCampaigns/{segmentId}':
    get:
      description: Get a segment (Ad Group) of a local campaign by ID. Ad groups are a way or grouping ads under a same place identified by a name. This call fetches the name and status of a specific ad group identified by the segmentId on the path.
      operationId: get-local-campaigns-segment
      tags:
        - localCampaigns
      parameters:
        - name: segmentId
          in: path
          description: Id of the segment (Ad Group) of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      responses:
        '200':
          description: Information of the segment (Ad Group) of the local campaign
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalCampaignsSegment'
      summary: GET Information of a single segment (Ad Group)
    put:
      description: Update a segment (Ad Group) of a local campaign. Ad groups are a way or grouping ads under a same place identified by a name. This call updates the name of a specific ad group identified by the segmentId on the path.
      operationId: put-local-campaigns-segment
      tags:
        - localCampaigns
      parameters:
        - name: segmentId
          in: path
          description: Id of the segment (Ad Group) of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      requestBody:
        description: Data of a segment (Ad Group)
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalCampaignsSegmentUpdate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      summary: PUT Update the information of a segment (Ad Group) of a local campaign
    delete:
      description: Delete a segment (Ad Group) from a Local Campaign. Ad groups are a way or grouping ads under a same place identified by a name. This call deletes the ad group identified by the segmentId on the path. BE AWARE! If there is any ads under this ad group they will also get deleted.
      operationId: delete-local-campaigns-segment
      tags:
        - localCampaigns
      parameters:
        - name: segmentId
          in: path
          description: Id of the ad group of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      summary: DELETE Removes a segment (Ad Group) from a local campaign
  '/reachEnhancement/segment/{segmentId}/localAd':
    get:
      description: 'Get all the Ads of a segment (Ad Group). Local Ads are a type of ads that have images, text and video assets. This ads use 3 different types of Images (LocalAdMarketingImages, LocalAdSquareMarketingImages and LocalAdLogoImages), it is required at least one image of the LocalAdLogoImage type and at least one image of the LocalAdMarketingImages type. LocalAdMarketingImages images must have a 1.91:1 ratio with a 1% tolerance and must be at least 600X314. LocalAdSquareMarketingImages images must have a 1:1 ratio with a 1% tolerance and must be at least 314X314. LocalAdLogoImagesimages must have a 1:1 ratio with a 1% tolerance and must be at least 116X116. This call gets all the information of all the local ads under the segment(ad group) identified by the segmentId parameter.'
      operationId: get-local-ads
      tags:
        - localCampaigns
      parameters:
        - name: segmentId
          in: path
          description: Id of the segment (Ad Group) of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
        - name: skip
          in: query
          description: Optional integer to skip the first n results
          schema:
            type: integer
            format: int32
          example: 1
        - name: take
          in: query
          description: Optional integer to get only n results
          schema:
            type: integer
            format: int32
          example: 1
      responses:
        '200':
          description: List of the Ads of a segment (Ad Group)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalAdList'
      summary: GET A list of Ads from a segment (Ad Group)
    post:
      description: 'Creates an Ad for a Local Campaign. Local Ads are a type of ads that have images, text and video assets. This ads use 3 different types of Images (LocalAdMarketingImages, LocalAdSquareMarketingImages and LocalAdLogoImages), it is required at least one image of the LocalAdLogoImage type and at least one image of the LocalAdMarketingImages type. LocalAdMarketingImages images must have a 1.91:1 ratio with a 1% tolerance and must be at least 600X314. LocalAdSquareMarketingImages images must have a 1:1 ratio with a 1% tolerance and must be at least 314X314. LocalAdLogoImagesimages must have a 1:1 ratio with a 1% tolerance and must be at least 116X116. This call creates an ad under the segment(ad group) identified by the segmentId parameter.'
      operationId: post-local-ad
      tags:
        - localCampaigns
      parameters:
        - name: segmentId
          in: path
          description: Id of the segment (Ad Group) of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      requestBody:
        description: Data of a local ad
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalAdInsert'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      summary: POST Create a Ad for a local campaign
  '/reachEnhancement/segment/localAd/{localAdId}':
    get:
      description: 'Get an Ad of a local campaign by ID. Local Ads are a type of ads that have images, text and video assets. This ads use 3 different types of Images (LocalAdMarketingImages, LocalAdSquareMarketingImages and LocalAdLogoImages), it is required at least one image of the LocalAdLogoImage type and at least one image of the LocalAdMarketingImages type. LocalAdMarketingImages images must have a 1.91:1 ratio with a 1% tolerance and must be at least 600X314. LocalAdSquareMarketingImages images must have a 1:1 ratio with a 1% tolerance and must be at least 314X314. LocalAdLogoImagesimages must have a 1:1 ratio with a 1% tolerance and must be at least 116X116. This call gets the information of the ad identified by the localAdId parameter.'
      operationId: get-local-ad
      tags:
        - localCampaigns
      parameters:
        - name: localAdId
          in: path
          description: Id of the ad of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      responses:
        '200':
          description: Information of a local ad
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalAd'
      summary: GET Information of a Single Local Ad
    put:
      description: 'Update a Local Ad. Local Ads are a type of ads that have images, text and video assets. This ads use 3 different types of Images (LocalAdMarketingImages, LocalAdSquareMarketingImages and LocalAdLogoImages), it is required at least one image of the LocalAdLogoImage type and at least one image of the LocalAdMarketingImages type. LocalAdMarketingImages images must have a 1.91:1 ratio with a 1% tolerance and must be at least 600X314. LocalAdSquareMarketingImages images must have a 1:1 ratio with a 1% tolerance and must be at least 314X314. LocalAdLogoImagesimages must have a 1:1 ratio with a 1% tolerance and must be at least 116X116. This call updates the information of the ad identified by the localAdId parameter.'
      operationId: put-local-ad
      tags:
        - localCampaigns
      parameters:
        - name: localAdId
          in: path
          description: Id of the ad of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      requestBody:
        description: Data of a local ad
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalAdUpdate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      summary: PUT Update the Information of a local ad
    delete:
      description: 'Delete a Local Ad. Local Ads are a type of ads that have images, text and video assets. This ads use 3 different types of Images (LocalAdMarketingImages, LocalAdSquareMarketingImages and LocalAdLogoImages), it is required at least one image of the LocalAdLogoImage type and at least one image of the LocalAdMarketingImages type. LocalAdMarketingImages images must have a 1.91:1 ratio with a 1% tolerance and must be at least 600X314. LocalAdSquareMarketingImages images must have a 1:1 ratio with a 1% tolerance and must be at least 314X314. LocalAdLogoImagesimages must have a 1:1 ratio with a 1% tolerance and must be at least 116X116. This call deletes the ad identified by the localAdId parameter.'
      operationId: delete-local-ad
      tags:
        - localCampaigns
      parameters:
        - name: localAdId
          in: path
          description: Id of the ad of interest
          required: true
          schema:
            type: integer
            format: int64
          example: 1234567890
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      summary: DELETE Removes a local ad
  /reachEnhancement/segment/localCampaigns/pause:
    put:
      summary: PUT Segment Local Campaigns Pause
      operationId: put-reach-enhancement-segment-local-campaigns-pause
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      tags:
        - localCampaigns
      parameters:
        - schema:
            type: string
          in: query
          name: ids
          description: comma seperated list of segment ids
          required: true
        - schema:
            type: boolean
          in: query
          description: indicates if the ad group shall be paused or activated
          name: shallBePaused
          required: true
      description: Method to pause segment(ad group)(s) of a local campaign. Ad groups are a way or grouping ads under a same place identified by a name. This call sets the state to enabled or paused of all the segments(ad groups) defined in the ids parameter.
  /reachEnhancement/pause:
    put:
      summary: PUT Reach Enhancement Pause
      operationId: put-reach-enhancement-pause
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSuccess'
      tags:
        - localCampaigns
        - sea
        - socialAd
      parameters:
        - schema:
            type: string
          in: query
          name: ids
          description: comma seperated list of reach enhancement ids
          required: true
        - schema:
            type: boolean
          in: query
          description: indicates if the campaign shall be paused or activated
          name: shallBePaused
          required: true
      description: 'Method to pause a reach enhancement campaign. Reach Enhancement campaigns are different type of advertisement campaigns (SEA, Social Ads, Local Campaigns) that serve ads on different media. This call sets the state to enabled or paused of all the campaigns defined in the ids parameter.'
  '/reachEnhancement/{reachEnhancementId}/budget':
    get:
      summary: GET Reach Enhancement Budget
      tags:
        - localCampaigns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReachEnhancementBudget'
      operationId: get-reach-enhancement-budget
      description: 'Get the budget of a reach enhancement campaign. All the reach enhancement campaigns (SEA, Social Ads, Local Campaigns) use a budget to serve ads. Depending on the campaign type some budget target types might not be supported. Local Campaigns use only Euro as a budget target type. This call gets the information of a budget of the campaign identified by the reachEnhancementId parameter.'
    put:
      summary: PUT Reach Enhancement Budget
      tags:
        - localCampaigns
      requestBody:
        description: Budget Target
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReachEnhancementBudgetUpdate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: put-reach-enhancement-budget
      description: 'Update the budget of a reach enhancement campaign. All the reach enhancement campaigns (SEA, Social Ads, Local Campaigns) use a budget to serve ads. Depending on the campaign type some budget target types might not be supported. Local Campaigns use only Euro as a budget target type. This call updates the budget target of the campaign identified by the reachEnhancementId parameter.'
    parameters:
      - schema:
          type: integer
          format: int64
        name: reachEnhancementId
        in: path
        required: true
        description: id of the reach enhancement subscription
  '/admin/workspaceSetting/{wssId}/customFields':
    parameters:
      - schema:
          type: integer
          format: int64
        name: wssId
        in: path
        required: true
    post:
      summary: POST Create a new custom field
      tags:
        - workspacesetting
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: post-admin-workspaceSetting-wssId-customFields
      description: |-
        This endpoint creates a new company custom field for a workspace.
        The configuration of this custom field is saved at space settings and its information is retrieved through get workspace call.
        If the custom field is of type "select" or "multi_select" a validation is done that attribute allowed values has at least one value.
        Name attribute is an array of keyValueLanguage and it can has the name in different languages and the corresponding language code. There is a validation if the languag is supported.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFieldInsert'
        description: 'Information about custom field. '
        required: true
  '/admin/workspaceSetting/{wssId}/customFields/{key}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: wssId
        in: path
        description: id of the workspace settings
        required: true
      - schema:
          type: string
        name: key
        in: path
        description: key of the custom field
        required: true
    delete:
      summary: DELETE Removes a custom field
      operationId: delete-admin-workspaceSetting-wssId-customFields-key
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - workspacesetting
      description: |
        This endpoint deletes a company related custom field for a specific workspace and all the information that might have been saveed for this custom field at companies under that workspace.
        The delete won't take place if there are active subscription under this workspace.
    put:
      summary: PUT Update a custom field
      operationId: put-admin-workspaceSetting-wssId-customFields-key
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFieldUpdate'
        required: true
        description: Information for updateing custom field
      description: |-
        This endpoint updates the attributes of name and required of custom fields.
        Name attribute is an array of keyValueLanguage and it can has the name in different languages and the corresponding language code. There is a validation if the languag is supported.
      tags:
        - workspacesetting
  '/meinumei/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: 'subscription Id '
    get:
      summary: GET Meinungsmeister
      tags:
        - meinungsmeister
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Meinungsmeister'
      operationId: get-meinumei-id
      description: Get the Meinungsmeister details for a subscription id.
  '/messages/conversation/{conversationId}/channel/{channelId}/messages':
    parameters:
      - schema:
          type: string
        name: conversationId
        in: path
        required: true
        description: conversation_id
      - schema:
          type: integer
        name: channelId
        in: path
        required: true
        description: 'channel_id i.e. google, facebook, whatsapp etc'
    get:
      summary: Get conversation by id
      tags:
        - gbm
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  response:
                    $ref: '#/components/schemas/ConversationMessagesResponse'
      operationId: get-gbm-conversation-id
      description: returns messages by a conversation ID.
      parameters:
        - schema:
            type: integer
            minimum: 0
            maximum: 50
          in: query
          name: take
          description: 'takes a given number of entries, the default value of take is 20'
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
  /messages/conversations:
    get:
      summary: GET conversations
      tags:
        - gbm
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationResponse'
      operationId: get-gbm-conversations
      description: returns a list of google business message grouped by conversations
      parameters:
        - schema:
            type: string
            format: int64
          in: query
          name: contextIds
          required: true
          description: comma separated location_ids or company_ids
        - schema:
            type: integer
            minimum: 0
            maximum: 50
          in: query
          name: take
          description: 'takes a given number of entries, the default value of take is 10'
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
        - schema:
            type: string
            enum:
              - asc
              - desc
          in: query
          name: sortDirection
          description: asc or desc for ascending or descending
        - schema:
            type: boolean
          in: query
          name: isAnswered
          description: true for yes and false otherwise
        - schema:
            type: integer
          in: query
          name: channelId
          description: 'channel_id i.e. google, facebook, whatsapp. all channels if not applied'
        - schema:
            type: string
            enum:
              - Location
              - Company
          in: query
          name: contextType
          description: context type (location or company)
          required: true
    parameters: []
  '/messages/channel/{channelId}/conversations/{conversationId}/messages/{messageId}':
    parameters:
      - schema:
          type: integer
        name: channelId
        in: path
        required: true
        description: 'channel_id i.e google , facebook, whatsapp etc'
      - schema:
          type: string
        name: conversationId
        in: path
        required: true
        description: covnersation_id
      - schema:
          type: string
        name: messageId
        in: path
        required: true
        description: message_id
    get:
      summary: GET a message by ID
      operationId: get-gbm-conversation-conversationId-messageId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Message'
      description: returns a specific message
      tags:
        - gbm
  '/messages/conversation/{conversationId}/channel/{channelId}/is-read/{status}':
    parameters:
      - schema:
          type: string
        name: conversationId
        in: path
        required: true
        description: conversation_id
      - schema:
          type: integer
        name: channelId
        in: path
        required: true
        description: 'channel_id i.e. google, facebook, whatsapp etc'
      - schema:
          type: boolean
        name: status
        in: path
        required: true
        description: either true for read or false for un-read message
    put:
      summary: update the conversation status
      operationId: put-gbm-conversation-id-status
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessString'
      description: this endpoint change the status of the conversation from read to un-read and vise versa
      tags:
        - gbm
  '/messages/conversation/{conversationId}/channel/{channelId}/agent/{agentId}/message':
    parameters:
      - schema:
          type: string
        name: conversationId
        in: path
        required: true
        description: conversation ID
      - schema:
          type: integer
        name: channelId
        in: path
        required: true
        description: 'channel_id i.e. google, facebook whatsapp etc'
      - schema:
          type: integer
          format: int64
        name: agentId
        in: path
        required: true
        description: agent_id
    post:
      summary: POST new message
      operationId: post-gbm-conversation-conversationId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - gbm
      description: this endpoint creates a message under an existing conversation.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GbmMessageInsert'
  /messages/channels:
    get:
      summary: Messaging Channels
      tags:
        - gbm
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MessagingChannel'
      operationId: get-gbm-channels
      description: This endpoint returns the messaging channels
    parameters: []
  '/messages/config/{locationId}':
    post:
      summary: POST New Message Configuration
      operationId: post-messages-config
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - gbm
      description: This is endpiont is used to store information for configuring the messages channels
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MessagesConfigInsert'
        description: Request model for messages configuration
    parameters:
      - schema:
          type: integer
          format: int64
        name: locationId
        in: path
        required: true
        description: locationId
  /messages/config/agents:
    get:
      summary: GET message agents
      tags:
        - gbm
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentsResultListResponse'
      operationId: get-messages-config-agents
      description: this endpoints is used to retrieve agents information for the provided subscription_id
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: locationId
          required: true
          description: location_id
        - schema:
            type: integer
            format: int64
          in: query
          name: agentId
          description: agent_id
        - schema:
            type: integer
          in: query
          name: take
          description: 'takes a given number of entries, the default value of take is 10'
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
    parameters: []
  '/messages/config/{locationId}/{agentId}':
    put:
      summary: PUT message configuration
      operationId: put-messages-config
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - gbm
      description: this endpoint is used to update the agents configuration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MessagesConfigInsert'
        description: the model is to set the values an agent to be updated
    parameters:
      - schema:
          type: integer
          format: int64
        name: locationId
        in: path
        required: true
        description: location_id by which the agent is attached
      - schema:
          type: integer
          format: int64
        name: agentId
        in: path
        required: true
        description: agent_id
  /messages/agentTypes:
    get:
      summary: GET agent types
      tags:
        - gbm
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AgentTypes'
      operationId: get-messages-agentTypes
      description: this endpoint lists the agent_types
  /messages/brands:
    get:
      summary: GET brands
      tags:
        - gbm
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessagesBrandList'
      operationId: get-messages-brands
      description: this endpoint lists all avaialble.
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: brandId
          description: brand_id
        - schema:
            type: integer
          in: query
          name: take
          description: 'takes a given number of entries, the default value of take is 10'
        - schema:
            type: integer
          in: query
          name: skip
          description: skip entries
    parameters: []
  /userManagement/user/cookieConsent:
    put:
      summary: PUT USER cookie policy
      operationId: put-userManagement-user-cookieConsent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - user
      description: This endpoint takes a boolean value from user for cookie policy. true = accept and false = deny
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CookieConsent'
        description: ''
  '/miscellaneous/youtube/channel/{contextType}/{contextId}':
    get:
      summary: GET Youtube Channel
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KeyValueString'
      operationId: get-youtube-channel
      parameters: []
      tags:
        - miscellaneous
      description: ''
    parameters:
      - schema:
          type: string
        name: contextType
        in: path
        required: true
        description: parental context
      - schema:
          type: integer
          format: int64
        name: contextId
        in: path
        required: true
        description: the id of the parental context
  '/miscellaneous/youtube/play-list/{contextType}/{contextId}/youtube_channel/{youtube_channel}':
    get:
      summary: GET Youtube Playlist
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/KeyValueString'
      operationId: get-youtube-play-list
      parameters: []
      description: ''
      tags:
        - miscellaneous
    parameters:
      - schema:
          type: string
        name: contextType
        in: path
        required: true
        description: parental context
      - schema:
          type: integer
          format: int64
        name: contextId
        in: path
        required: true
        description: the id of the parental context
      - schema:
          type: string
        name: youtube_channel
        in: path
        required: true
        description: the Id of the youtube channel
  /oauth/token:
    parameters: []
    get:
      summary: get token
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OauthResponse'
      operationId: get-oauth
      tags:
        - oauth
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: featureType
          description: Type of identifier for markee feature using oauth
          required: true
        - schema:
            type: string
          in: query
          name: featureId
          description: ID for the markee feature using oauth
          required: true
        - schema:
            type: string
            enum:
              - LOCATION
              - COMPANY
              - WORKSPACE
          in: query
          name: contextType
          description: 'Context type (location, company, workspace)'
          required: true
        - schema:
            type: integer
            format: int64
          in: query
          name: contextId
          description: ID for context
          required: true
      description: Request token for third party content
    delete:
      summary: revoke token
      operationId: delete-oauth-token
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - oauth
      description: Revoke permissions for third party access to the third party product corresponding to the markee identifiers
      parameters:
        - schema:
            type: integer
            format: int64
          in: query
          name: featureType
          description: Type of identifier for markee feature using oauth
          required: true
        - schema:
            type: string
          in: query
          name: featureId
          description: ID for the markee feature using oauth
          required: true
        - schema:
            type: string
            enum:
              - LOCATION
              - COMPANY
              - WORKSPACE
          in: query
          name: contextType
          description: 'Context type (location, company, workspace)'
          required: true
        - schema:
            type: integer
            format: int64
          in: query
          name: contextId
          description: ID for context
          required: true
        - schema:
            type: string
          in: query
          name: providerUserId
          description: 'Provider User ID,  the ID you get while getting the access token.'
          required: true
  '/oauth/check/{data}':
    parameters:
      - schema:
          type: string
        name: data
        in: path
        required: true
    post:
      summary: check url
      operationId: post-oauth-check-data
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OauthResponse'
      tags:
        - oauth
      description: Validate landing page/callback url data for third party authorization
  '/onboarding/{onboardingId}/company':
    post:
      summary: POST a company from the onboarding flow
      operationId: post-onboarding-company
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      tags:
        - onboarding
      description: |
        With this method you can process a pending data set from the portal oboarding flow.

        The user you pass in the authentication must be the user that is getting connected to the created company/location afterwards.
        It must be a self service user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Onboarding'
    parameters:
      - schema:
          type: integer
          format: int64
        name: onboardingId
        in: path
        required: true
        description: unique id of the staged onboarding data
  '/listing/GBPActions/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: location id
    get:
      summary: GET Listing GBP Pending actions
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GBPPendingActions'
      operationId: get-listing-gbp-pending-actions
      description: Get the next if any pending action for the GBP product
    post:
      summary: POST Listing GBP action
      tags:
        - listing
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GBPAction'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: post-listing-gbp-action
      description: This method is used to send a response to Google for a pending action
  '/location/syncGBPLocation/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: location id
    post:
      summary: POST Listing Sync GBP Location
      tags:
        - location
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GBPLocation'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: post-location-sync-gbp-location
      description: This method is used to sync a Google Location data to a Markee location
  '/listing/GBPSpaceAccount/{id}':
    parameters:
      - schema:
          type: integer
          format: int32
        name: id
        in: path
        required: true
        description: space id
      - schema:
          type: string
          enum:
            - Location
            - Company
            - Workspace
        in: query
        name: contextType
        description: 'Context type (location, company, workspace)'
        required: true
    get:
      summary: GET Listing GBP Account
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GBPAccount'
      operationId: get-listing-gbp-account
      description: Get the account configured for a specific space
  '/listing/GBPAccount/{id}':
    parameters:
      - schema:
          type: integer
          format: int32
        name: id
        in: path
        required: true
        description: space id
      - schema:
          type: string
          enum:
            - Location
            - Company
            - Workspace
        in: query
        name: contextType
        description: 'Context type (location, company, workspace)'
        required: true
    get:
      summary: GET Listing GBP Accessible Account list
      parameters:
        - schema:
            type: integer
          in: query
          name: skip
          description: skip n elements of the list
        - schema:
            type: integer
          in: query
          name: take
          description: take n elements of the list
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GBPAccountList'
      operationId: get-listing-gbp-accounts
      description: Get the list of available GBP accounts accessible with the closest token
    post:
      summary: POST Listing GBP account
      tags:
        - listing
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GBPAccount'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      operationId: post-listing-gbp-account
      description: This method is used to map a specific GBP account to a space
  /listing/GBPAccount/locations:
    post:
      summary: GBPAccountLocations
      operationId: post-listing-GBPAccount-locations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GBPAccountLocationsResponse'
      description: This endpont is used to list all locations under a GBP account.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GBPAccountLocationsRequest'
        description: ''
      tags:
        - listing
  '/listing/publisher/{licenseId}':
    get:
      summary: GET Listing Publisher
      tags:
        - listing
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultPublisher'
      operationId: get-listing-publisher
      description: |-
        Use that endpoint to get potential supported publishers for your licence and a specific country.

        Be aware:
        Due to category or data constraints of individual publishers it may happen that locations do not get synced to a publisher even though the licence and country constellation does say so!
      parameters:
        - schema:
            type: string
          in: query
          name: countryCode
          required: true
          description: ISO 3166-1 alpha-2 country code
    parameters:
      - schema:
          type: integer
          format: int64
        name: licenseId
        in: path
        required: true
        description: 'unqiue license id '
  '/dynamic-video/{subscriptionId}/youtube/action':
    parameters:
      - schema:
          type: integer
          format: int64
        name: subscriptionId
        in: path
        required: true
    put:
      summary: PUT Youtube Video Action
      operationId: put-youtube-action
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
      description: |-
        In this api call we are doing different updated depending on the action :
            * delete:
                    the video will be deleted form YouTube with out effecting  the subscription
            * upload:
                     if you wish for your video to be upload to youtube you need make this action
            * update:
                     if have changes on you video title , description  chanel etc , you need  this action to sync the data
                     
        API Validation:  only if the subscription is not finished and video generation is done and no ather update, upload is taking place at the moment
      parameters:
        - schema:
            type: string
            enum:
              - delete
              - upload
              - update
          in: query
          name: action
          required: true
          description: 'action for a video on YouTube '
      tags:
        - dynamicvideo
  "/contentGeneration/availability":
    get:
      summary: GET Content Generation Availability
      tags:
        - contentGeneration
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentGenerationAvailability'
      operationId: get-content-generation-availability
      description: |-
        This API call is used to check if a location is able to generate content for a specific
        resource like Review Responses.
      parameters:
        - schema:
            type: string
            enum:
              - Workspace
              - Company
              - Location
              - Subscription
              - Review
          in: query
          name: contextType
          required: true
          description: context type
        - schema:
            type: string
          in: query
          name: contextId
          required: true
          description: Id of the context used to generate content. e.g., reviewId, locationId, etc.
        - schema:
            type: string
            enum:
              - ReviewResponse
              - LocationDescription
          in: query
          name: contentResource
          required: true
          description: Which content you want to generate with AI
  "/contentGeneration/generate":
    get:
      summary: GET Generate Content
      tags:
        - contentGeneration
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentGenerationGenerateResponse'
      operationId: get-content-generation-generate
      description: |-
        This API call generates content using the corresponding provider. It is designed to be generic, parameters define the generated content.
      parameters:
        - schema:
            type: string
            enum:
              - Workspace
              - Company
              - Location
              - Subscription
              - Review
          in: query
          name: contextType
          required: true
          description: context type
        - schema:
            type: string
          in: query
          name: contextId
          required: true
          description: Id of the context used to generate content. e.g., reviewId, locationId, etc.
        - schema:
            type: string
            enum:
              - ReviewResponse
              - LocationDescription
          in: query
          name: contentResource
          required: true
          description: Which content you want to generate with AI
  '/listing/connect/{id}':
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: Unique identifier of the location.
    get:
      summary: GET Listing Connection URL
      tags:
        - listing
      responses:
        '200':
          description: Successfully retrieved the connection URL.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectionUrlResponse'
      operationId: get-listing-connect-id
      description: |
        Returns the URL and HTTP action required to connect a location to a publisher profile (e.g., Facebook, Google My Business, LinkedIn, Instagram).

        Use this endpoint to obtain the connection interface URL the customer must visit to authenticate their account.

        **Supported publishers:** FACEBOOK, GOOGLEMYBUSINESS, LINKEDIN
      parameters:
        - schema:
            type: string
            enum:
              - LINKEDIN
              - GOOGLEMYBUSINESS
              - FACEBOOK
          in: query
          name: publisher
          description: Publisher for which to get the connection URL.
          required: true
  /social/connection/instagram/status:
    put:    
      summary: Check Instagram connection status
      description: |
        Initiates a check of the Instagram connection status for a specific location.

        **Behavior:**
        - While the check is in progress, the status becomes `PROCESSING`.
        - If eligibility is confirmed, the status updates to `ACTIVE`.
        - If the check fails, the status reverts to `UNAVAILABLE`, allowing retry.
      operationId: triggerInstagramStatus
      tags:
        - social
      parameters:
        - name: locationId
          in: query
          required: true
          schema:
            type: string
          description: Unique identifier of the location.
          example: "12345"
      responses:
        '200':
          description: Successfully triggered the Instagram status check.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessString'        
  /social/connection:
    get:
      summary: Get Social Connections
      tags:
        - social
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultSocialConnection'
      operationId: get-social-connection
      description: 'Get information on social connection status and info such as Facebook, Google My Business, etc.'
      parameters:
        - schema:
            type: integer
            format: int64
          name: contextId
          in: query
          required: true
          description: ID of Location or Company
        - schema:
            type: string
            enum:
              - Company
              - Location
          in: query
          name: contextType
          description: Type of location or company
          required: true
components:
  schemas:
    WorkspaceSettingOverview:
      title: WorkspaceSettingOverview
      type: object
      x-examples: {}
      properties:
        id:
          type: integer
          description: unique id of the workspace setting
        name:
          type: string
          description: free name of the workspace setting
        isWhiteLabeled:
          type: boolean
          description: indicates if a white label definition exists for this workspace setting
      required:
        - id
        - name
        - isWhiteLabeled
    WorkspaceSettingList:
      title: WorkspaceSettingList
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/WorkspaceSettingOverview'
        total:
          type: integer
      required:
        - data
        - total
      x-examples:
        example-1:
          data:
            - id: 15
              name: FOO
              whilteLabeled: true
            - id: 20
              name: BAR
              whilteLabeled: false
            - id: 30
              name: LIW
              whilteLabeled: true
            - id: 50
              name: uff
              whilteLabeled: false
          total: 4
    EmailSetting:
      title: EmailSetting
      type: object
      x-examples: {}
      properties:
        emailName:
          type: string
        emailSender:
          type: string
          format: email
        emailFooter:
          type: string
        emailLogo:
          $ref: '#/components/schemas/Image'
      required:
        - emailName
        - emailSender
        - emailFooter
        - emailLogo
    CookieConsent:
      title: CookieConsent
      type: object
      description: ''
      properties:
        technicalNecessaryCookies:
          type: boolean
        performanceCookies:
          type: boolean
        functionalCookies:
          type: boolean
    GeneralSetting:
      title: GeneralSetting
      type: object
      properties:
        imprintUrl:
          type: string
        privacyUrl:
          type: string
        termsConditionsUrl:
          type: string
        defaultCountry:
          type: string
          x-stoplight:
            id: kbo8scqs4cai2
          description: 'default country setting for this workspace, indicating where (most of the) locations are located. ISO 3166-1 alpha-2'
      required:
        - imprintUrl
        - privacyUrl
    PasswordPolicySetting:
      title: PasswordPolicySetting
      type: object
      properties:
        passwordMinLength:
          type: integer
        passwordUppercaseChar:
          type: integer
        passwordLowercaseChar:
          type: integer
        passwordDigits:
          type: integer
        passwordSpecialChar:
          type: integer
      required:
        - passwordMinLength
        - passwordUppercaseChar
        - passwordLowercaseChar
        - passwordDigits
        - passwordSpecialChar
    Image:
      title: Image
      type: object
      description: 'Image model, containing all information of an uploaded image'
      properties:
        id:
          type: integer
          format: int64
        fileName:
          type: string
        url:
          type: string
        imageType:
          type: string
          enum:
            - GoogleProfilImage
            - GoogleCoverImage
            - FacebookProfileImage
            - FacebookCoverImage
            - BusinessLogo
            - Google360
            - PerformanceImage
            - SocialImage
            - ContentImage
            - CampaignImage
            - EmailLogo
            - WhiteLabelLogo
            - WhiteLabelFavicon
            - UserProfileImage
            - CustomImage
            - ListingImage
            - WebsiteWidgetImage
            - SegmentAdImage
            - LocalAdLogoImage
            - LocalAdSquareMarketingImage
            - LocalAdMarketingImage
            - MessageImage
            - MeinungsmeisterLogo
          description: 'Shows the image type. Note: Since an image can be linked to multiple contextes, this field may be empty.'
      required:
        - id
        - fileName
        - url
    WhiteLabelSetting:
      title: WhiteLabelSetting
      type: object
      description: ''
      x-tags:
        - admin
      properties:
        primaryColor:
          type: string
        loginBackgroundColor:
          type: string
        domain:
          type: string
        domainActive:
          type: boolean
        logo:
          $ref: '#/components/schemas/Image'
        favicon:
          $ref: '#/components/schemas/Image'
        status:
          type: string
        errorMessage:
          type: string
        googleMapApiKey:
          type: string
        redirectUrl:
          type: string
      required:
        - domain
        - domainActive
        - status
      x-examples:
        example-1:
          primaryColor: string
          loginBackgroundColor: string
          domain: string
          domainActive: true
          logo:
            id: 0
            fileName: string
            url: string
          favicon:
            id: 0
            fileName: string
            url: string
          status: string
          errorMessage: string
          googleMapApiKey: string
    Error:
      title: Error
      type: object
      properties:
        errorCode:
          type: integer
        errorMessage:
          type: string
        fields:
          type: array
          items:
            type: string
        values:
          type: array
          items:
            type: string
        exampleValue:
          type: string
        additionalInformation:
          type: string
      required:
        - errorCode
        - errorMessage
    ListResultLocation:
      title: ListResultLocation
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/LocationOverview'
        total:
          type: integer
          description: 'number of results, ignoring skip and take parameter'
      required:
        - data
        - total
      description: this model contains all the locations and a total amount of possible locations
    AddressOverview:
      title: AddressOverview
      type: object
      properties:
        id:
          type: integer
          description: unique id of address
        postCode:
          type: string
          description: optional postcode. Depending on the country it's defined or not
        city:
          type: string
          description: city name
        state:
          type: string
          description: ISO code for state
        street:
          type: string
          description: street
        house:
          type: string
          description: house number
        additive:
          type: string
          description: an additional address information
        countryCode:
          type: string
        subLocality:
          type: string
          description: 'Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.'
        coordinate:
          $ref: '#/components/schemas/Coordinate'
      required:
        - id
        - city
        - street
        - countryCode
      x-examples:
        example-1:
          id: 1
          postcode: '90419'
          city: Nürnberg
          street: Burgschmietstraße 4
          house: '4'
      description: This model has the minimum set of information for an address
    SubscriptionOverview:
      title: SubscriptionOverview
      type: object
      description: This model contains the minimum set of information about subscriptions
      x-examples:
        example-1: {}
      properties:
        id:
          type: integer
          description: unique id of the subscription
          format: int64
        note:
          type: string
          description: an optional user defined note
        location:
          $ref: '#/components/schemas/KeyValueInt'
        licence:
          $ref: '#/components/schemas/KeyValueInt'
        startDate:
          type: string
          description: start date of the subscription
          format: date
          example: '2020-01-14'
        endDate:
          type: string
          description: the optional end date of a subscription
          format: date
          example: '2020-12-31'
        expireDate:
          type: string
          description: In case the subscription is longer valid as the defined endDate (e.g. because of a minimum runtime of third party system) this date will contain this information
          format: date
          example: '2020-12-31'
        status:
          type: string
          enum:
            - PROCESSING
            - ACTIVE
            - EXPIRING
            - EXPIRINGON
            - FINISHED
            - FAILED
          description: status of the subscription
        productFields:
          type: array
          description: 'array of product fields, important if the subscription is containing different product lines'
          items:
            $ref: '#/components/schemas/SubscriptionProductField'
        warnings:
          type: array
          description: list of warnings for a subscription
          items:
            type: string
        errors:
          type: array
          description: list of errors of a subscription
          items:
            type: string
        availableConnections:
          type: array
          description: defines all the possible connections for this subscription and their current status
          items:
            $ref: '#/components/schemas/SubscriptionConnection'
        externalId:
          type: string
          description: 'user defined optional external id, can be used for order numbers etc.'
        name:
          type: string
          description: optional name of subscription in case the licence name is not sufficient
        copyable:
          type: boolean
          description: indicates if a subscription can be used in the copy method
        subscriptionAddOns:
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionAddon'
        suppressNotifications:
          type: boolean
          description: Says if this subscription actively suppressed from any kind of notification.
        suppressTasks:
          type: boolean
          description: |-
            indicates if tasks shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
      required:
        - id
        - location
        - licence
        - startDate
        - status
        - productFields
        - copyable
        - suppressNotifications
        - suppressTasks
    KeyValueInt:
      title: KeyValueInt
      type: object
      description: 'key value, containt an integer as key (e.g. an id) and a value (e.g. a name)'
      properties:
        key:
          type: integer
          format: int64
        value:
          type: string
      required:
        - key
        - value
    SubscriptionProductField:
      title: SubscriptionProductField
      type: object
      description: subscriptions containing different product lines are splitted into this product field
      properties:
        id:
          type: integer
          description: unique id of the seperated product field of a subscription
          format: int64
        product:
          type: string
          description: product identifier
          enum:
            - Listing
            - CallTracking
            - QR
            - ListingPortal
            - Advertisement
            - ReachEnhancement
            - Budget
            - GoogleMyBusiness
            - Targeting
            - MuellerMedienPaket
            - Website
            - WebsiteWidget
            - StatisticAggregation
            - MonoSync
            - DynamicVideo
            - Meinungsmeister
            - DataExports
      required:
        - id
        - product
    SubscriptionConnection:
      title: SubscriptionConnection
      type: object
      description: possible connection between another subscription is defined in this model
      properties:
        subscriptionId:
          type: integer
          format: int64
          description: unique id of a subscription
        product:
          type: string
          description: product identifier
        note:
          type: string
          description: optional note to this connection
        connected:
          type: boolean
          description: indicates if the connection has been established
      required:
        - subscriptionId
        - product
        - connected
    SubscriptionAddon:
      title: SubscriptionAddon
      type: object
      description: 'possible addons, which can be booked for a subscription'
      properties:
        id:
          description: 'unique id of this addon, can be used to book the addon for a subscription'
          type: integer
        name:
          type: string
          description: name of this addon
        currentStatus:
          type: boolean
          description: indicates if the addon is booked or not
        product:
          type: string
          description: product line of this addon
      required:
        - id
        - name
        - currentStatus
        - product
    LocationOverview:
      title: LocationOverview
      type: object
      description: minimum set of data for a location
      properties:
        id:
          type: integer
          description: unique id of a location
        name:
          type: string
          description: name of location
        externalId:
          type: string
          description: 'optional external id, defined by the user'
        address:
          $ref: '#/components/schemas/AddressOverview'
        subscriptions:
          type: array
          description: connected subscription of this location
          items:
            $ref: '#/components/schemas/SubscriptionOverview'
        mainPhone:
          $ref: '#/components/schemas/MainPhone'
        eMail:
          type: string
        openingHoursInfo:
          $ref: '#/components/schemas/OpeningHoursInfo'
        profileQuality:
          $ref: '#/components/schemas/ProfilQualityOverview'
        isClaimed:
          type: boolean
          description: if exists a user that is connected to this location as business Owner
        benchmarkDetails:
          $ref: '#/components/schemas/BenchmarkDetails'
      required:
        - id
        - name
        - isClaimed
    LocationMedia:
      title: LocationMedia
      type: object
      description: |-
        media data of a location.
        This models containing information about google, facebook, business logos as well as different urls.
      x-examples:
        example-1: {}
      properties:
        id:
          type: integer
          description: unique id of location
          format: int64
        youtubeUrl:
          type: array
          description: 'list of youtube urls. Url need to be a youtube url, otherwise an exception is getting thrown'
          items:
            $ref: '#/components/schemas/Url'
        businessLogo:
          $ref: '#/components/schemas/Image'
        customImages:
          type: array
          description: gallery images
          items:
            $ref: '#/components/schemas/Image'
        googleProfile:
          $ref: '#/components/schemas/Image'
        googleCover:
          $ref: '#/components/schemas/Image'
        facebookProfile:
          $ref: '#/components/schemas/Image'
        google360:
          $ref: '#/components/schemas/Image'
        facebookUrl:
          $ref: '#/components/schemas/Url'
        tikTokUrl:
          $ref: '#/components/schemas/Url'
        linkedInUrl:
          $ref: '#/components/schemas/Url'
        xingUrl:
          $ref: '#/components/schemas/Url'
        twitterHandle:
          type: string
          description: 'twitter handle, '
        reservationsUrl:
          $ref: '#/components/schemas/Url'
        menuUrl:
          $ref: '#/components/schemas/Url'
        orderUrl:
          $ref: '#/components/schemas/Url'
        instagramUrl:
          $ref: '#/components/schemas/Url'
        name:
          type: string
        foursquareExtra:
          type: string
        facebookCover:
          $ref: '#/components/schemas/Image'
      required:
        - id
        - name
    Url:
      title: Url
      type: object
      description: 'model, which contains all information about an url'
      properties:
        id:
          description: 'unique id of url object, can be used to update this specific url'
          type: integer
        url:
          type: string
          description: the url value
        display:
          type: string
          description: display url if defined
      required:
        - id
        - url
    LocationUpdateMedia:
      title: LocationUpdateMedia
      type: object
      description: update model for media data
      properties:
        foursquareExtra:
          type: string
          description: ''
        twitterHandle:
          type: string
        customImages:
          type: array
          description: 'list of unique IDs of gallery images, represents the order in which they should be saved'
          items:
            type: integer
    Success:
      title: Success
      type: object
      properties:
        value:
          type: integer
          description: 'in case the request was successfull, this id represents the inserted/updated data set'
          format: int64
    Parent:
      title: Parent
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        additionalText:
          type: string
        parentType:
          type: string
          enum:
            - Location
            - Company
            - Workspace
            - Subscription
            - EnhancedContent
            - Duplicate
      required:
        - id
        - name
        - parentType
    CompanyOverview:
      title: CompanyOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        workspace:
          $ref: '#/components/schemas/Parent'
        name:
          type: string
        locationCount:
          type: integer
        acquisitionDate:
          type: string
          format: date
        lastActivity:
          type: string
          format: date
        externalId:
          type: string
        licences:
          type: array
          items:
            type: string
        isClaimed:
          type: boolean
          description: if exists a user that is connected to this company as business Owner
        businessLogo:
          $ref: "#/components/schemas/Image"
      required:
        - id
        - workspace
        - name
        - locationCount
        - acquisitionDate
        - isClaimed
    ListResultCompany:
      title: ListResultCompany
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CompanyOverview'
        total:
          type: integer
      required:
        - data
        - total
    Tag:
      title: Tag
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
      required:
        - id
        - name
    Phone:
      title: Phone
      type: object
      properties:
        id:
          type: integer
          format: int64
        phoneType:
          type: string
          enum:
            - landline
            - mobile
            - fax
        phone:
          type: string
          description: 'phone number, format e.g. 49-911-123456'
        tracked:
          type: boolean
      required:
        - id
        - phone
        - tracked
    Company:
      title: Company
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        shortName:
          type: string
        legalType:
          type: string
          enum:
            - AG
            - GbR
            - GmbH
            - GmbH & Co. KG
            - OHG
            - UG
            - UG & Co. KG
            - eG
        contact:
          $ref: '#/components/schemas/Contact'
        salesMan:
          $ref: '#/components/schemas/Contact'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        externalId:
          type: string
        licences:
          type: array
          items:
            type: string
        imprint:
          type: string
        globalImprint:
          type: boolean
        dataPrivacy:
          type: string
        globalDataPrivacy:
          type: boolean
        imprintUrl:
          type: string
        dataPrivacyUrl:
          type: string
        isClaimed:
          type: boolean
          description: if exists a user that is connected to this company as business Owner
        vatNr:
          type: string
        customFieldsCompany:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
      required:
        - id
        - name
        - isClaimed
    Contact:
      title: Contact
      type: object
      properties:
        id:
          type: integer
          format: int64
        salutation:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        eMails:
          type: array
          minItems: 1
          items:
            type: string
        mainPhone:
          $ref: '#/components/schemas/Phone'
        alternativePhones:
          type: array
          items:
            $ref: '#/components/schemas/Phone'
      required:
        - id
        - salutation
        - lastName
        - eMails
        - mainPhone
    CompanyInsert:
      title: CompanyInsert
      type: object
      properties:
        name:
          type: string
        shortName:
          type: string
        legalType:
          type: string
          enum:
            - AG
            - GbR
            - GmbH
            - GmbH & Co. KG
            - OHG
            - UG
            - UG & Co. KG
            - eG
        contact:
          $ref: '#/components/schemas/ContactInsert'
        salesManId:
          type: integer
          description: 'id of a sales man, defined on workspace level'
        externalId:
          type: string
        locationInsert:
          $ref: '#/components/schemas/LocationInsert'
        vatNr:
          type: string
      required:
        - name
    PhoneInsert:
      title: PhoneInsert
      type: object
      properties:
        phoneType:
          type: string
          enum:
            - landline
            - mobile
            - fax
        phone:
          type: string
          description: 'format e.g.:  49-911-123456'
        tracked:
          type: boolean
          description: is this phone number a call tracking number? (e.g. hotline)
      required:
        - phoneType
        - phone
        - tracked
    ContactInsert:
      title: ContactInsert
      type: object
      properties:
        salutation:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        eMails:
          type: array
          minItems: 1
          items:
            type: string
        mainPhone:
          type: string
          description: 'main phone number, format e.g. 49-911-123456'
        alternativePhones:
          type: array
          items:
            $ref: '#/components/schemas/PhoneInsert'
      required:
        - salutation
        - lastName
        - eMails
        - mainPhone
    CompanyUpdate:
      title: CompanyUpdate
      type: object
      properties:
        name:
          type: string
        shortName:
          type: string
        legalType:
          type: string
          enum:
            - AG
            - GbR
            - GmbH
            - GmbH & Co. KG
            - OHG
            - UG
            - UG & Co. KG
            - eG
        salesManId:
          type: integer
          description: 'id of a sales man, defined on workspace level'
        externalId:
          type: string
        imprint:
          type: string
        globalImprint:
          type: boolean
        dataPrivacy:
          type: string
        globalDataPrivacy:
          type: boolean
        imprintUrl:
          type: string
        dataPrivacyUrl:
          type: string
        vatNr:
          type: string
        customFieldsCompany:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
      required:
        - name
    ListResultSubscription:
      title: ListResultSubscription
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionOverview'
        total:
          type: integer
      required:
        - data
        - total
    SubscriptionWebsite:
      title: SubscriptionWebsite
      type: object
      properties:
        subDomain:
          type: string
        domain:
          type: string
        templateId:
          type: integer
        textFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        imageFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
      required:
        - templateId
      description: Set this part in case the licence you subscribe to contains the website product
    KeyValueString:
      title: KeyValueString
      type: object
      properties:
        key:
          type: string
        value:
          type: string
      required:
        - key
        - value
    SubscriptionMandatoryConnection:
      title: SubscriptionMandatoryConnection
      type: object
      description: Set this part in case the licence you subscribe to demans a special connection to another subscription
      properties:
        subscriptionId:
          type: integer
          format: int64
      required:
        - subscriptionId
    LocationTargeting:
      title: LocationTargeting
      type: object
      properties:
        name:
          type: string
        radius:
          type: integer
        matchType:
          type: string
          enum:
            - BROAD
            - PHRASE
            - EXACT
            - NEGATIVE
            - NEGATIVE_EXACT
            - NEGATIVE_PHRASE
      required:
        - name
    SubscriptionTargeting:
      title: SubscriptionTargeting
      type: object
      description: Set this part in case the licence you subscribe to contains a targeting
      properties:
        keywordList:
          type: array
          items:
            $ref: '#/components/schemas/KeywordTargeting'
        buIdList:
          type: array
          items:
            type: string
        buAIdList:
          type: array
          items:
            type: string
        kgsList:
          type: array
          items:
            type: string
        tIdList:
          type: array
          items:
            type: string
        locationList:
          type: array
          items:
            $ref: '#/components/schemas/LocationTargeting'
        taoIdList:
          type: array
          items:
            type: string
        ignoreTargeting:
          type: boolean
    KeywordTargeting:
      title: KeywordTargeting
      type: object
      properties:
        value:
          type: string
        matchType:
          type: string
          enum:
            - BROAD
            - PHRASE
            - EXACT
            - NEGATIVE
            - NEGATIVE_EXACT
            - NEGATIVE_PHRASE
      required:
        - value
    SubscriptionBudget:
      title: SubscriptionBudget
      type: object
      description: Set this part in case the licence you subscribe to contains a budget
      properties:
        budgetTarget:
          type: integer
          description: set the budget target in case the licence does not have a fixed one configured
        budgetTargetType:
          type: string
          description: set a budget target type in case the licence does not have a preconfigured one
          enum:
            - Call
            - Click
            - Interactions
            - Euro
    AdSettings:
      title: AdSettings
      type: object
      description: Ad Settings for SEA ( Reach Enhancement) Campaigns
      properties:
        suppressDefaultCampaign:
          type: boolean
        headlines:
          type: array
          items:
            type: string
        descriptions:
          type: array
          items:
            type: string
      required:
        - suppressDefaultCampaign
        - headlines
        - descriptions
    CustomSegmentSetting:
      title: CustomSegmentSetting
      type: object
      description: Customized segment setting for a sea subscription
      properties:
        keywordList:
          type: array
          items:
            $ref: '#/components/schemas/KeywordTargeting'
        segmentTextList:
          type: array
          items:
            $ref: '#/components/schemas/AdSettings'
      required:
        - keywordList
        - segmentTextList
    SubscriptionReachEnhancement:
      title: SubscriptionReachEnhancement
      type: object
      description: Set this part in case the licence you subscribe to contains a sea (reach enhancement)
      properties:
        destinationUrl:
          type: string
        displayUrl:
          type: string
        name:
          type: string
        radius:
          type: integer
        categoryTaxonomyId:
          type: integer
          description: in case you want to use a predefined category taxonomy pass the id
        customSetting:
          $ref: '#/components/schemas/CustomSegmentSetting'
        excludedLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        includedLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        budgetTarget:
          type: integer
          description: target of the budget. Either defined via a fixed licence configuration or this value. One of those must be defined.
        budgetTargetType:
          type: string
          enum:
            - Call
            - Click
            - Interactions
            - Euro
      required:
        - destinationUrl
        - name
    SubscriptionGelbeSeiten:
      title: SubscriptionGelbeSeiten
      type: object
      properties:
        taoIds:
          type: array
          items:
            type: string
    ImageSpecificInsert:
      title: ImageSpecificInsert
      type: object
      properties:
        fileType:
          type: string
          enum:
            - jpg
            - png
            - gif
            - ico
        data:
          type: string
          description: base64 encoded string of the image
      required:
        - fileType
        - data
    KeyValueImageInsert:
      title: KeyValueImageInsert
      type: object
      properties:
        key:
          type: string
        value:
          $ref: '#/components/schemas/ImageSpecificInsert'
      required:
        - key
        - value
    SubscriptionAdvertisement:
      title: SubscriptionAdvertisement
      type: object
      description: Set this part in case the licence you subscribe to contains a advertisement product
      properties:
        destinationUrl:
          type: string
        priority:
          type: string
          enum:
            - VeryLow
            - Low
            - Normal
            - High
            - VeryHigh
        textFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        imageFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueImageInsert'
        campaignType:
          type: string
          enum:
            - open
            - closed
        keywordList:
          type: array
          items:
            $ref: '#/components/schemas/KeywordTargeting'
        buIdList:
          type: array
          items:
            type: string
        buAIdList:
          type: array
          items:
            type: string
        kgsList:
          type: array
          items:
            type: string
        tIdList:
          type: array
          items:
            type: string
        locationList:
          type: array
          items:
            $ref: '#/components/schemas/LocationTargeting'
        taoIdList:
          type: array
          items:
            type: string
        ignoreTargeting:
          type: boolean
      required:
        - destinationUrl
        - priority
        - campaignType
    SubscriptionQrCode:
      title: SubscriptionQrCode
      type: object
      properties:
        name:
          type: string
        destinationUrl:
          type: string
      required:
        - name
    SubscriptionCallTracking:
      title: SubscriptionCallTracking
      type: object
      properties:
        registerPermission:
          type: boolean
          description: allowance to use customer data of the company
        callTrackingPermission:
          description: allowance to register call tracking numbers for the company
          type: boolean
      required:
        - registerPermission
        - callTrackingPermission
      description: Set this part in case the licence you subscribe to contains a call tracking
    SubscriptionInsert:
      title: SubscriptionInsert
      type: object
      description: ''
      properties:
        startDate:
          type: string
          format: date
          description: start date of the subscription. Needs to be today or in the future
        endDate:
          type: string
          format: date
          description: 'optional end date, needs to in the future and after the start date'
        callTracking:
          $ref: '#/components/schemas/SubscriptionCallTracking'
        qrCode:
          $ref: '#/components/schemas/SubscriptionQrCode'
        advertisement:
          $ref: '#/components/schemas/SubscriptionAdvertisement'
        gelbeSeiten:
          $ref: '#/components/schemas/SubscriptionGelbeSeiten'
        reachEnhancement:
          $ref: '#/components/schemas/SubscriptionReachEnhancement'
        budget:
          $ref: '#/components/schemas/SubscriptionBudget'
        targeting:
          $ref: '#/components/schemas/SubscriptionTargeting'
        listingPortal:
          $ref: '#/components/schemas/SubscriptionListingPortal'
        mandatoryConnection:
          $ref: '#/components/schemas/SubscriptionMandatoryConnection'
        webSite:
          $ref: '#/components/schemas/SubscriptionWebsite'
        externalId:
          type: string
        name:
          type: string
        statisticAggregation:
          $ref: '#/components/schemas/SubscriptionStatisticAggregation'
        monoSync:
          $ref: '#/components/schemas/SubscriptionMonoSync'
        reachEnhancementSocial:
          $ref: '#/components/schemas/SubscriptionReachEnhancementSocial'
        dynamicVideo:
          $ref: '#/components/schemas/SubscriptionDynamicVideo'
        reachEnhancementLocalCampaigns:
          $ref: '#/components/schemas/SubscriptionReachEnhancementLocalCampaigns'
        meinungsmeister:
          $ref: '#/components/schemas/SubscriptionMeinungsmeister'
      required:
        - startDate
    SubscriptionListingPortal:
      title: SubscriptionListingPortal
      type: object
      description: Set this part in case the licence you subscribe to contains a individual listing portal (e.g. firmeneintrag)
      properties:
        path:
          type: string
          description: 'optional path, if not set the path will be set automatically.'
    Budget:
      title: Budget
      type: object
      properties:
        id:
          type: integer
          format: int64
        budgetTarget:
          type: integer
        budgetTargetType:
          type: string
          enum:
            - Call
            - Click
            - Interactions
            - Euro
      required:
        - id
        - budgetTarget
        - budgetTargetType
    BudgetUpdate:
      title: BudgetUpdate
      type: object
      properties:
        budgetTarget:
          type: integer
      required:
        - budgetTarget
    BudgetTarget:
      title: BudgetTarget
      type: object
      properties:
        budgetTargetType:
          type: string
          enum:
            - Call
            - Click
            - Interactions
            - Euro
        budgetTarget:
          type: integer
    SubscriptionUpdate:
      title: SubscriptionUpdate
      type: object
      properties:
        startDate:
          type: string
          format: date
          description: 'start date of subscription, can not be changed when already started.'
        endDate:
          type: string
          format: date
          description: 'end date of subscription runtime, can be empty (means unlimited) or a date in the future. Can not be changed when already reached.'
        connections:
          type: array
          description: array of subscription ids you want connect
          items:
            type: integer
            format: int64
        externalId:
          type: string
          description: 'external id of subscription, can be used to set order number etc.'
        name:
          type: string
          description: customized name
      required:
        - startDate
    SubscriptionCopy:
      title: SubscriptionCopy
      type: object
      properties:
        startDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
        externalId:
          type: string
        name:
          type: string
      required:
        - startDate
    SubscriptionInformation:
      title: SubscriptionInformation
      type: object
      properties:
        informationType:
          type: string
          enum:
            - TEXT
            - URL
            - ACTION
        description:
          type: string
        value:
          type: string
      required:
        - informationType
        - description
        - value
    ListResultSubscriptionInformation:
      title: ListResultSubscriptionInformation
      type: object
      properties:
        locationIds:
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionInformation'
        total:
          type: integer
      required:
        - locationIds
        - total
    Targeting:
      title: Targeting
      type: object
      properties:
        id:
          type: integer
          format: int64
        ignoreTargeting:
          type: boolean
        keywordList:
          type: array
          items:
            $ref: '#/components/schemas/KeywordTargeting'
        buIdList:
          type: array
          items:
            type: string
        buAIdList:
          type: array
          items:
            type: string
        kgsList:
          type: array
          items:
            type: string
        tIdList:
          type: array
          items:
            type: string
        locationList:
          type: array
          items:
            $ref: '#/components/schemas/LocationTargeting'
        taoIdList:
          type: array
          items:
            type: string
      required:
        - id
        - ignoreTargeting
    TargetingUpdate:
      title: TargetingUpdate
      type: object
      properties:
        ignoreTargeting:
          type: boolean
        keywordList:
          type: array
          items:
            $ref: '#/components/schemas/KeywordTargeting'
        buIdList:
          type: array
          items:
            type: string
        buAIdList:
          type: array
          items:
            type: string
        kgsList:
          type: array
          items:
            type: string
        tIdList:
          type: array
          items:
            type: string
        locationList:
          type: array
          items:
            $ref: '#/components/schemas/LocationTargeting'
        taoIdList:
          type: array
          items:
            type: string
      required:
        - id
        - ignoreTargeting
    ListResultTargetingType:
      title: ListResultTargetingType
      type: object
      description: ''
      properties:
        data:
          type: array
          items:
            type: string
            enum:
              - Keyword
              - BuAId
              - AdSpace
              - KGS
              - TId
              - TaoId
              - Location
        total:
          type: integer
      required:
        - data
    LocationTargetingGroup:
      title: LocationTargetingGroup
      type: object
      properties:
        groupName:
          type: string
        locationsGroup:
          type: array
          items:
            type: string
      required:
        - groupName
        - locationsGroup
    ListResultKeyValueString:
      title: ListResultKeyValueString
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        total:
          type: integer
      required:
        - data
    ListResultLong:
      title: ListResultLong
      type: object
      properties:
        data:
          type: array
          items:
            type: integer
            format: int64
        total:
          type: integer
      required:
        - data
        - total
    ReachEnhancement:
      title: ReachEnhancement
      type: object
      properties:
        id:
          type: integer
          format: int64
        destinationUrl:
          type: string
        displayUrl:
          type: string
        reachEnhancementType:
          type: string
          enum:
            - sea
            - displayAd
            - socialAd
            - localCampaigns
        info:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        data:
          type: object
          properties:
            localCampaign:
              type: object
              allOf:
                - $ref: '#/components/schemas/ReachEnhancementLocalCampaigns'
        suppressLocationExtensions:
          type: boolean
        enabled:
          type: boolean
      required:
        - id
        - reachEnhancementType
        - suppressLocationExtensions
    SegmentOverview:
      title: SegmentOverview
      type: object
      properties:
        segmentId:
          type: integer
          format: int64
        name:
          type: string
        key:
          type: integer
          deprecated: true
        value:
          type: string
          deprecated: true
        segmentStatus:
          type: string
          enum:
            - active
            - paused_pending
            - paused
            - active_pending
            - failed
            - invalid
        segmentMessage:
          type: string
          description: detailled information in case a segment failed
        isCustomised:
          type: boolean
      required:
        - segmentId
        - name
        - segmentStatus
    ReachEnhancementUpdate:
      title: ReachEnhancementUpdate
      type: object
      properties:
        destinationUrl:
          type: string
        displayUrl:
          type: string
        suppressLocationExtensions:
          type: boolean
        data:
          type: object
          properties:
            localCampaign:
              type: object
              allOf:
                - $ref: '#/components/schemas/ReachEnhancementLocalCampaignsUpdate'
    Segment:
      title: Segment
      type: object
      description: ''
      properties:
        segmentId:
          type: integer
          format: int64
        segmentTextList:
          type: array
          items:
            $ref: '#/components/schemas/AdSettings'
        excludedLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        radius:
          type: integer
        bookable:
          type: boolean
        keywordList:
          type: array
          items:
            $ref: '#/components/schemas/KeywordTargeting'
        parentalTaxonomy:
          $ref: '#/components/schemas/KeyValueInt'
        key:
          type: integer
        value:
          type: string
        name:
          type: string
        segmentStatus:
          type: string
          enum:
            - active
            - paused_pending
            - paused
            - active_pending
            - failed
        includedLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        segmentMessage:
          type: string
      required:
        - segmentId
        - segmentTextList
        - bookable
        - keywordList
        - key
        - value
        - name
        - segmentStatus
    SegmentUpdate:
      title: SegmentUpdate
      type: object
      properties:
        categoryTaxonomyId:
          type: integer
          format: int32
        name:
          type: string
        radius:
          type: integer
        excludedLocations:
          type: array
          description: use engine codes to exclude certain locations
          items:
            $ref: '#/components/schemas/KeyValueString'
        customSetting:
          $ref: '#/components/schemas/CustomSegmentSetting'
        includedLocations:
          type: array
          description: use engine codes as key values to included certian locations
          items:
            $ref: '#/components/schemas/KeyValueString'
      required:
        - name
    SegmentInsert:
      title: SegmentInsert
      type: object
      properties:
        categoryTaxonomyId:
          type: integer
          format: int32
        name:
          type: string
        radius:
          type: integer
        customSetting:
          $ref: '#/components/schemas/CustomSegmentSetting'
        excludedLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        includedLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
      required:
        - name
    CategoryTaxonomy:
      title: CategoryTaxonomy
      type: object
      properties:
        id:
          type: integer
          format: int64
        segmentTextList:
          type: array
          items:
            $ref: '#/components/schemas/AdSettings'
        radius:
          type: integer
        bookable:
          type: boolean
        keywordList:
          type: array
          items:
            $ref: '#/components/schemas/KeywordTargeting'
        parentalTaxonomy:
          $ref: '#/components/schemas/KeyValueInt'
        name:
          type: string
      required:
        - id
        - segmentTextList
        - radius
        - bookable
        - keywordList
        - name
    CategorySearchResult:
      title: CategorySearchResult
      type: object
      properties:
        id:
          type: integer
        displayName:
          type: string
        categoryName:
          type: string
        aliasId:
          type: integer
      required:
        - id
        - displayName
        - categoryName
    CategoryTaxonomyOverview:
      title: CategoryTaxonomyOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        suggestedCategoryList:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        radius:
          type: integer
        parentalTaxonomy:
          $ref: '#/components/schemas/KeyValueInt'
        bookable:
          type: boolean
      required:
        - id
        - name
    ListResultCategorySearch:
      title: ListResultCategorySearch
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CategorySearchResult'
        total:
          type: integer
      required:
        - data
        - total
    ListResultCategoryTaxonomy:
      title: ListResultCategoryTaxonomy
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CategoryTaxonomyOverview'
        total:
          type: integer
      required:
        - data
        - total
    EngineCodeOverview:
      title: EngineCodeOverview
      type: object
      properties:
        engineCode:
          type: string
        name:
          type: string
        canonicalName:
          type: string
        parentId:
          type: string
        countryCode:
          type: string
        targetType:
          type: string
      required:
        - engineCode
        - name
    ListEngineCode:
      title: ListEngineCode
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EngineCodeOverview'
        total:
          type: integer
    LocationBasic:
      title: LocationBasic
      type: object
      properties:
        id:
          type: integer
          format: int64
        externalId:
          type: string
        name:
          type: string
        categories:
          type: array
          items:
            $ref: '#/components/schemas/LocationCategory'
        address:
          $ref: '#/components/schemas/Address'
        mainPhone:
          $ref: '#/components/schemas/MainPhone'
        alternativePhones:
          type: array
          items:
            $ref: '#/components/schemas/Phone'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        closed:
          type: boolean
        eMail:
          type: string
        website:
          $ref: '#/components/schemas/Url'
        currentOffer:
          $ref: '#/components/schemas/Url'
        currentOfferText:
          type: string
        serviceArea:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueServiceArea'
        isClaimed:
          type: boolean
          description: if exists a user that is connected to this location as business Owner
        openingHoursInfo:
          $ref: '#/components/schemas/OpeningHoursInfo'
        profileQuality:
          $ref: '#/components/schemas/ProfilQualityOverview'
      required:
        - id
        - name
        - isClaimed
    Address:
      title: Address
      type: object
      properties:
        id:
          type: integer
          format: int64
        country:
          type: string
        postCode:
          type: string
        city:
          type: string
        state:
          type: string
        house:
          type: string
        additive:
          type: string
        subLocality:
          type: string
          description: 'Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.'
        coordinate:
          $ref: '#/components/schemas/Coordinate'
        suppress:
          type: boolean
        street:
          type: string
      required:
        - id
        - country
        - city
        - street
    Coordinate:
      title: Coordinate
      type: object
      properties:
        lat:
          type: number
          format: double
        lon:
          type: number
          format: double
      required:
        - lat
        - lon
    MainPhone:
      title: MainPhone
      type: object
      properties:
        id:
          type: integer
          format: int64
        phone:
          type: string
        tracked:
          type: boolean
        localPhone:
          type: string
      required:
        - id
        - phone
        - tracked
    KeyValueContent:
      title: KeyValueContent
      type: object
      properties:
        key:
          type: string
          enum:
            - SpecialOffer
            - Description
            - YearOfFoundation
            - Products
            - Services
            - SpecialField
            - Memberships
            - Trademarks
            - Languages
            - Keywords
        value:
          type: array
          items:
            type: string
      required:
        - key
        - value
    LocationUpdateBasic:
      title: LocationUpdateBasic
      type: object
      properties:
        name:
          type: string
        externalId:
          type: string
        categories:
          type: array
          items:
            $ref: '#/components/schemas/LocationCategory'
        closed:
          type: boolean
        eMail:
          type: string
        currentOfferText:
          type: string
        serviceArea:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueServiceArea'
      required:
        - name
        - categories
    OpeningHours:
      title: OpeningHours
      type: object
      properties:
        id:
          type: integer
          format: int64
        days:
          type: array
          items:
            $ref: '#/components/schemas/OpeningDay'
        note:
          type: string
        dateInterval:
          $ref: '#/components/schemas/DateInterval'
        openingHoursType:
          type: string
          enum:
            - default
            - customPeriod
            - customDate
        temporarilyClosedUntil:
          type: string
          format: date
      required:
        - id
        - openingHoursType
    OpeningDay:
      title: OpeningDay
      type: object
      description: ''
      properties:
        day:
          type: string
          enum:
            - Mon
            - Tue
            - Wed
            - Thu
            - Fri
            - Sat
            - Sun
        openingDayType:
          type: string
          enum:
            - singleInterval
            - doubleInterval
            - nonstopOpened
            - closed
        timeIntervals:
          type: array
          items:
            $ref: '#/components/schemas/DayInterval'
      required:
        - day
        - openingDayType
    HumanMessagingAvailability:
      title: HumanMessagingAvailability
      type: object
      description: This is used to map opening days for Google Business Messages or any other messaging channel.
      properties:
        endDay:
          type: string
          enum:
            - FRIDAY
            - SATURDAY
            - SUNDAY
            - MONDAY
            - TUESDAY
            - WEDNESDAY
            - THURSDAY
        endTime:
          $ref: '#/components/schemas/TimeInterval'
        startDay:
          type: string
          enum:
            - SATURDAY
            - SUNDAY
            - MONDAY
            - TUESDAY
            - WEDNESDAY
            - THURSDAY
            - FRIDAY
        startTime:
          $ref: '#/components/schemas/TimeInterval'
        timeZone:
          type: string
      required:
        - endDay
        - startDay
        - timeZone
    DateInterval:
      title: DateInterval
      type: object
      properties:
        from:
          type: string
          format: date
        to:
          type: string
          format: date
      required:
        - from
    DayInterval:
      title: DayInterval
      type: object
      properties:
        from:
          type: string
        to:
          type: string
      required:
        - from
        - to
    ImageOverview:
      title: ImageOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        fileName:
          type: string
        imageType:
          type: string
          enum:
            - GoogleProfilImage
            - GoogleCoverImage
            - FacebookProfileImage
            - FacebookCoverImage
            - BusinessLogo
            - Google360
            - PerformanceImage
            - SocialImage
            - ContentImage
            - CampaignImage
            - EmailLogo
            - WhiteLabelLogo
            - WhiteLabelFavicon
            - UserProfileImage
            - CustomImage
            - ListingImage
            - WebsiteWidgetImage
            - SegmentAdImage
            - LocalAdLogoImage
            - LocalAdSquareMarketingImage
            - LocalAdMarketingImage
            - MessageImage
          description: 'Shows the image type. Note: Since an image can be linked to multiple contextes, this field may be empty.'
      required:
        - id
    ListResultOpeningHours:
      title: ListResultOpeningHours
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OpeningHoursOverview'
        total:
          type: integer
      required:
        - data
        - total
    OpeningHoursOverview:
      title: OpeningHoursOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        openingHoursType:
          type: string
          enum:
            - default
            - customPeriod
            - customDate
        dateInterval:
          $ref: '#/components/schemas/DateInterval'
        temporarilyClosedUntil:
          type: string
          format: date
      required:
        - id
        - openingHoursType
    OpeningHoursInsert:
      title: OpeningHoursInsert
      type: object
      description: ''
      properties:
        days:
          type: array
          items:
            $ref: '#/components/schemas/OpeningDayInsert'
        note:
          type: string
        dateInterval:
          $ref: '#/components/schemas/DateIntervalInsert'
        openingHoursType:
          type: string
          enum:
            - default
            - customPeriod
            - customDate
        temporarilyClosedUntil:
          type: string
          format: date
      required:
        - days
        - openingHoursType
    OpeningDayInsert:
      title: OpeningDayInsert
      type: object
      properties:
        day:
          type: string
          enum:
            - Mon
            - Tue
            - Wed
            - Thu
            - Fri
            - Sat
            - Sun
        openingDayType:
          type: string
          enum:
            - singleInterval
            - doubleInterval
            - nonstopOpened
            - closed
        timeIntervals:
          type: array
          items:
            $ref: '#/components/schemas/DayIntervalInsert'
      required:
        - day
        - openingDayType
    DayIntervalInsert:
      title: DayIntervalInsert
      type: object
      properties:
        from:
          type: string
        to:
          type: string
      required:
        - from
        - to
    DateIntervalInsert:
      title: DateIntervalInsert
      type: object
      properties:
        from:
          type: string
          format: date
        to:
          type: string
          format: date
    OpeningHoursUpdate:
      title: OpeningHoursUpdate
      type: object
      properties:
        days:
          type: array
          items:
            $ref: '#/components/schemas/OpeningDayUpdate'
        note:
          type: string
        dateInterval:
          $ref: '#/components/schemas/DateIntervalUpdate'
        openingHoursType:
          type: string
          enum:
            - default
            - customPeriod
            - customDate
        temporarilyClosedUntil:
          type: string
          format: date
      required:
        - days
        - openingHoursType
    OpeningDayUpdate:
      title: OpeningDayUpdate
      type: object
      properties:
        day:
          type: string
          enum:
            - Tue
            - Wed
            - Thu
            - Fri
            - Sat
            - Sun
            - Mon
        openingDayType:
          type: string
          enum:
            - singleInterval
            - doubleInterval
            - nonstopOpened
            - closed
        timeIntervals:
          type: array
          items:
            $ref: '#/components/schemas/DayIntervalUpdate'
      required:
        - day
        - openingDayType
    DayIntervalUpdate:
      title: DayIntervalUpdate
      type: object
      properties:
        from:
          type: string
        to:
          type: string
      required:
        - from
        - to
    DateIntervalUpdate:
      title: DateIntervalUpdate
      type: object
      properties:
        from:
          type: string
          format: date
        to:
          type: string
          format: date
    LocationAdditional:
      title: LocationAdditional
      type: object
      description: ''
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        yearOfFoundation:
          type: string
        products:
          type: array
          items:
            type: string
        services:
          type: array
          items:
            type: string
        specialFields:
          type: array
          items:
            type: string
        memberships:
          type: array
          items:
            type: string
        trademarks:
          type: array
          items:
            type: string
        languages:
          type: array
          items:
            type: string
        keywords:
          type: array
          items:
            type: string
        paymentMethods:
          type: array
          items:
            type: string
        possiblePaymentMethods:
          type: array
          items:
            type: string
        imprint:
          type: string
        locationImprint:
          type: boolean
        dataPrivacy:
          type: string
        locationDataPrivacy:
          type: boolean
        imprintUrl:
          type: string
        dataPrivacyUrl:
          type: string
        slogan:
          type: string
      required:
        - id
        - name
    LocationUpdateAdditional:
      title: LocationUpdateAdditional
      type: object
      description: ''
      properties:
        description:
          type: string
        yearOfFoundation:
          type: string
        products:
          type: array
          items:
            type: string
        services:
          type: array
          items:
            type: string
        specialFields:
          type: array
          items:
            type: string
        memberships:
          type: array
          items:
            type: string
        trademarks:
          type: array
          items:
            type: string
        languages:
          type: array
          items:
            type: string
        keywords:
          type: array
          items:
            type: string
        paymentMethods:
          type: array
          items:
            type: string
        imprint:
          type: string
        dataPrivacy:
          type: string
        imprintUrl:
          type: string
        dataPrivacyUrl:
          type: string
        slogan:
          type: string
    ListResultProduct:
      title: ListResultProduct
      type: object
      properties:
        data:
          type: array
          items:
            type: string
        total:
          type: integer
          format: int32
      required:
        - data
        - total
    CategoryField:
      title: CategoryField
      type: object
      properties:
        name:
          type: string
        id:
          type: integer
        data:
          type: array
          items:
            $ref: '#/components/schemas/GoogleAttributes'
      required:
        - name
        - id
        - data
    GoogleAttributes:
      title: GoogleAttributes
      type: object
      properties:
        attributeId:
          type: string
        groupName:
          type: string
        name:
          type: string
        allowedValues:
          type: array
          items:
            type: string
        value:
          type: string
      required:
        - attributeId
        - groupName
        - name
        - allowedValues
    ListGoogleAttributesUpdate:
      title: ListGoogleAttributesUpdate
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/GoogleAttributesUpdate'
      required:
        - data
    GoogleAttributesUpdate:
      title: GoogleAttributesUpdate
      type: object
      properties:
        attributeId:
          type: string
        value:
          type: string
      required:
        - attributeId
    LocationBulkValue:
      title: LocationBulkValue
      type: object
      properties:
        bulkState:
          type: string
          enum:
            - PARTIAL
            - ALL
            - NONE
        bulkValue:
          type: string
    LocationBulk:
      title: LocationBulk
      type: object
      properties:
        locationValues:
          type: array
          items:
            $ref: '#/components/schemas/LocationBulkValue'
        locationKey:
          type: string
          example: NAME
          enum:
            - NAME
            - CATEGORIES
            - TAG
            - EMAIL
            - WEBSITE
            - DISPLAY_URL
            - PHONE_MAIN
            - PHONE_LANDLINE
            - PHONE_MOBILE
            - PHONE_FAX
            - CURRENT_OFFER
            - CURRENT_OFFER_URL
            - DESCRIPTION
            - PRODUCTS
            - SERVICES
            - SPECIAL_FIELDS
            - MEMBERSHIP
            - BRANDS
            - LANGUAGES
            - FOUNDING_YEAR
            - KEYWORDS
            - PAYMENTS_METHODS
            - LOGO
            - PANORAMA
            - GMB_PROFILE
            - GMB_BACKGROUND
            - FACEBOOK_PROFILE
            - FACEBOOK_BACKGROUND
            - TWITTER
            - YOUTUBE_URL
            - FACEBOOK_URL
            - OPENINGHOURS
            - SPECIALOPENINGHOURS
            - MENU_URL
            - ORDER_URL
            - RESERVATIONS_URL
            - GALLERY
      required:
        - locationKey
    ListResultLocationBulk:
      title: ListResultLocationBulk
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/LocationBulk'
        total:
          type: integer
          format: int32
      required:
        - data
        - total
    ListResultSuccess:
      title: ListResultSuccess
      type: object
      properties:
        ids:
          type: array
          items:
            type: integer
            format: int64
        total:
          type: integer
      required:
        - ids
        - total
    ImageInsert:
      title: ImageInsert
      type: object
      properties:
        imageType:
          type: string
          enum:
            - GoogleProfilImage
            - GoogleCoverImage
            - FacebookProfileImage
            - FacebookCoverImage
            - BusinessLogo
            - Google360
            - PerformanceImage
            - SocialImage
            - ContentImage
            - CampaignImage
            - EmailLogo
            - WhiteLabelLogo
            - WhiteLabelFavicon
            - UserProfileImage
            - CustomImage
            - ListingImage
            - WebsiteWidgetImage
            - SegmentAdImage
            - LocalAdLogoImage
            - LocalAdSquareMarketingImage
            - LocalAdMarketingImage
            - MessageImage
            - MeinungsmeisterLogo
          description: define the type of the image
        fileType:
          type: string
          enum:
            - jpg
            - gif
            - png
            - ico
          description: file type in case you have this information
        data:
          type: string
          description: define either an base64 data representation of the image
        url:
          type: string
          description: 'or an url. '
      required:
        - imageType
    LocationInsert:
      title: LocationInsert
      type: object
      properties:
        name:
          type: string
        categories:
          type: array
          items:
            $ref: '#/components/schemas/LocationCategory'
        address:
          $ref: '#/components/schemas/AddressInsert'
        mainPhone:
          $ref: '#/components/schemas/MainPhoneInsert'
        claimId:
          type: string
          description: self service user need to start a claiming first
        pinVerification:
          type: string
        email:
          type: string
          description: email contact for this location
      required:
        - name
        - categories
        - address
        - mainPhone
    AddressInsert:
      title: AddressInsert
      type: object
      properties:
        country:
          type: string
        postCode:
          type: string
        city:
          type: string
        state:
          type: string
        street:
          type: string
        house:
          type: string
        additive:
          type: string
        subLocality:
          type: string
          description: 'Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.'
        coordinate:
          $ref: '#/components/schemas/Coordinate'
        suppress:
          type: boolean
      required:
        - country
        - city
        - street
    MainPhoneInsert:
      title: MainPhoneInsert
      type: object
      properties:
        phone:
          type: string
        tracked:
          type: boolean
        localPhone:
          type: string
      required:
        - phone
        - tracked
    Advertisement:
      title: Advertisement
      type: object
      properties:
        id:
          type: integer
          format: int64
        destinationUrl:
          type: string
        advertisementType:
          type: string
        textFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        imageFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        priority:
          type: string
          enum:
            - VeryLow
            - Low
            - Normal
            - High
            - VeryHigh
        campaignType:
          type: string
          enum:
            - open
            - closed
      required:
        - id
        - destinationUrl
        - advertisementType
        - priority
        - campaignType
    AdvertisementUpdate:
      title: AdvertisementUpdate
      type: object
      properties:
        destinationUrl:
          type: string
        textFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        imageFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        priority:
          type: string
          enum:
            - VeryLow
            - Low
            - Normal
            - High
            - VeryHigh
      required:
        - destinationUrl
        - priority
    AdvertisementFields:
      title: AdvertisementFields
      type: object
      description: object containing an advertisement type and its settings
      properties:
        advertisementType:
          type: string
          description: name of the adspace type that is targeted
        textFields:
          type: array
          description: optional list of text fields that are connected to this advertisement type.
          items:
            $ref: '#/components/schemas/AdvertisementTextField'
        imageFields:
          type: array
          description: optional list of image fields that are connected to this advertisement type.
          items:
            $ref: '#/components/schemas/AdvertisementImageField'
    AdvertisementTextField:
      title: AdvertisementTextField
      type: object
      description: object that defines the settings of a text field connected to a specific adspace type.
      properties:
        fieldType:
          type: string
          description: the input type of text field
        name:
          type: string
          description: 'name of the text field (description, title, display url, etc.)'
        minValue:
          type: integer
          description: optional minimum constraint regarding the text field character count
        maxValue:
          type: integer
          description: optional maximum constraint regarding the text field character count
        mandatory:
          type: boolean
          description: property that establishes if the text field needs to be defined for the adspace type that is being targeted.
      required:
        - fieldType
        - name
        - mandatory
    AdvertisementImageField:
      title: AdvertisementImageField
      type: object
      description: object that defines the settings of an image field connected to a specific adspace type.
      properties:
        name:
          type: string
          description: 'name of the image field (skyscraper, mobile, bottom, etc.)'
        minWidth:
          type: integer
          description: optional minimum constraint regarding the width of the image field
        minHeight:
          type: integer
          description: optional minimum constraint regarding the height of the image field
        maxWidth:
          type: integer
          description: optional maximum constraint regarding the width of the image field
        maxHeight:
          type: integer
          description: optional maximum constraint regarding the height of the image field
        mandatory:
          type: boolean
          description: property that establishes if the image field needs to be defined for the adspace type that is being targeted.
      required:
        - name
        - mandatory
    ListResultAdvertisementFields:
      title: ListResultAdvertisementFields
      type: object
      description: 'Object containing a list of available adspaces with their corresponding field settings and constraints, as well as the total amount of available adspaces.'
      properties:
        data:
          type: array
          description: 'list of all the available adspaces for the product, with all their settings.'
          items:
            $ref: '#/components/schemas/AdvertisementFields'
        total:
          type: integer
          description: number of available adspaces for the product.
      required:
        - data
        - total
    WebsiteUpdate:
      title: WebsiteUpdate
      type: object
      properties:
        textFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        imageFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
    Website:
      title: Website
      type: object
      x-examples: {}
      properties:
        id:
          type: integer
          format: int64
        url:
          type: string
        subDomain:
          type: string
        textFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        imageFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        template:
          $ref: '#/components/schemas/KeyValueInt'
        siteId:
          type: string
      required:
        - id
        - template
    WebsiteConfiguration:
      title: WebsiteConfiguration
      type: object
      properties:
        templates:
          type: array
          items:
            $ref: '#/components/schemas/WebsiteTemplates'
        domain:
          $ref: '#/components/schemas/KeyValueString'
    WebsiteTemplates:
      title: WebsiteTemplates
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        url:
          type: string
          format: uri
      required:
        - id
        - name
    LocationSubscription:
      title: LocationSubscription
      type: object
      properties:
        locationId:
          type: integer
          format: int64
        subscriptionId:
          type: integer
          format: int64
      required:
        - locationId
        - subscriptionId
    ListResultSubscriptionIds:
      title: ListResultSubscriptionIds
      type: object
      properties:
        subscriptionIds:
          type: array
          deprecated: true
          items:
            type: integer
            format: int64
        idSet:
          type: array
          items:
            $ref: '#/components/schemas/LocationSubscription'
        total:
          type: integer
      required:
        - subscriptionIds
        - idSet
        - total
    CallTracking:
      title: CallTracking
      type: object
      properties:
        id:
          type: integer
          format: int64
        redirectPhone:
          $ref: '#/components/schemas/Phone'
        basePhone:
          $ref: '#/components/schemas/Phone'
        poolSize:
          type: integer
        whisper:
          $ref: '#/components/schemas/KeyValueInt'
        welcomeAnnouncement:
          $ref: '#/components/schemas/KeyValueInt'
        conversionTrackingProfile:
          $ref: '#/components/schemas/KeyValueInt'
        conversionTrackingCaller:
          type: boolean
        spamAnalysis:
          type: boolean
        spamProtect:
          type: boolean
        dynamicCallTracking:
          type: boolean
        quarantine:
          type: boolean
        note:
          type: string
        extensions:
          type: array
          items:
            $ref: '#/components/schemas/CallTrackingExtension'
        conversionTracked:
          type: boolean
      required:
        - id
        - redirectPhone
        - poolSize
    PhoneOverview:
      title: PhoneOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        phoneType:
          type: string
          enum:
            - landline
            - mobile
            - fax
            - mainPhone
            - tracked
        phone:
          type: string
        tracked:
          type: boolean
          description: indicates if this phone number is a tracked number (e.g. hotline)
      required:
        - id
        - phoneType
        - phone
        - tracked
    CallTrackingExtension:
      title: CallTrackingExtension
      type: object
      properties:
        id:
          type: integer
          format: int64
        extension:
          type: integer
        connectedSubscription:
          $ref: '#/components/schemas/KeyValueInt'
        note:
          type: string
      required:
        - id
        - extension
    CallTrackingExtensionUpdate:
      title: CallTrackingExtensionUpdate
      type: object
      properties:
        connectedSubscription:
          type: integer
          description: subscription of this location you want to pass as a use case for this number extension
          format: int64
        note:
          type: string
    CallTrackingUpdate:
      title: CallTrackingUpdate
      type: object
      description: ''
      properties:
        redirectPhone:
          type: integer
          description: phone id
        whisper:
          type: integer
          description: id of whisper template
        welcomeAnnouncement:
          type: integer
          description: id of welcome announcement template
        conversionTrackingProfile:
          type: integer
          description: id of conversion tracking profile template
        conversionTrackingCaller:
          type: boolean
        spamAnalysis:
          type: boolean
        spamProtect:
          type: boolean
        dynamicCallTracking:
          type: boolean
        quarantine:
          type: boolean
        note:
          type: string
        conversionTracked:
          type: boolean
      required:
        - redirectPhone
    ListResultKeyValueInt:
      title: ListResultKeyValueInt
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        total:
          type: integer
    ListingPortal:
      title: ListingPortal
      type: object
      properties:
        id:
          type: integer
          format: int64
        listingPortal:
          type: string
          enum:
            - Firmeneintrag
            - SutterPages
            - Telaustria
            - UGDE
            - Kuechentreff
            - ProOptik
            - Lunapark
            - interfleur
        url:
          type: string
          format: uri
        textFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        imageFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
      required:
        - id
        - listingPortal
    ListingPortalUpdate:
      title: ListingPortalUpdate
      type: object
      properties:
        url:
          type: string
          format: uri
        textFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        imageFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
      required:
        - url
    StageOverview:
      title: StageOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        source:
          type: string
          enum:
            - FE_ordering_process
            - TA_ordering_process
            - TA_power_listing
            - Hutzler_ordering_process
            - TG_Medien_ordering_process
            - VWH_ordering_process
        licenseType:
          type: string
          enum:
            - FREE
            - BASIC
            - PREMIUM
            - ALLINCLUSIVE
        name:
          type: string
        approved:
          type: boolean
        date:
          type: string
          format: date
      required:
        - id
        - source
        - licenseType
        - name
        - date
    ListResultStage:
      title: ListResultStage
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/StageOverview'
        total:
          type: integer
      required:
        - data
        - total
    Stage:
      title: Stage
      type: object
      properties:
        id:
          type: integer
          format: int64
        source:
          type: string
          enum:
            - FE_ordering_process
            - TA_ordering_process
            - TA_power_listing
            - Hutzler_ordering_process
            - TG_Medien_ordering_process
            - VWH_ordering_process
        licenseType:
          type: string
          enum:
            - FREE
            - BASIC
            - PREMIUM
            - ALLINCLUSIVE
        externalId:
          type: string
        action:
          type: string
        data:
          $ref: '#/components/schemas/StageData'
        name:
          type: string
        approved:
          type: boolean
        sugarImport:
          type: boolean
        note:
          type: string
        date:
          type: string
          format: date
      required:
        - id
        - source
        - licenseType
        - data
        - sugarImport
        - date
    StageData:
      title: StageData
      type: object
      properties:
        company:
          $ref: '#/components/schemas/Company'
        location:
          $ref: '#/components/schemas/LocationBasic'
        locationAdditional:
          $ref: '#/components/schemas/LocationAdditional'
        billingAccount:
          $ref: '#/components/schemas/BillingAccount'
        openingHours:
          $ref: '#/components/schemas/OpeningHours'
        logo:
          $ref: '#/components/schemas/ImageInsert'
        pictures:
          type: array
          items:
            $ref: '#/components/schemas/ImageInsert'
      required:
        - company
        - location
    BillingAccount:
      title: BillingAccount
      type: object
      properties:
        id:
          type: integer
        businessName:
          type: string
        address:
          $ref: '#/components/schemas/Address'
        differentAddress:
          $ref: '#/components/schemas/Address'
        parentType:
          type: string
          enum:
            - Company
            - Workspace
      required:
        - id
        - businessName
        - address
        - parentType
    LicenceOverview:
      title: LicenceOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        maxSubscriptions:
          type: integer
        activeSubscriptions:
          type: integer
        products:
          type: array
          items:
            type: string
            enum:
              - Listing
              - CallTracking
              - QR
              - ListingPortal
              - Advertisement
              - ReachEnhancement
              - Budget
              - GoogleMyBusiness
              - Targeting
              - MuellerMedienPaket
              - Website
              - WebsiteWidget
              - DynamicVideo
              - Meinungsmeister
              - DataExports
        mandatoryConnectionProduct:
          type: string
          enum:
            - Listing
            - CallTracking
            - QR
            - ListingPortal
            - Advertisement
            - ReachEnhancement
            - Budget
            - GoogleMyBusiness
            - Targeting
            - MuellerMedienPaket
            - Website
            - WebsiteWidget
            - DynamicVideo
            - Meinungsmeister
            - DataExports
        licenceStatus:
          type: string
          enum:
            - ACTIVE
            - INACTIVE
            - NOTBOOKABLE
        suppressNotifications:
          type: boolean
          description: |-
            indicates if notifications shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
        suppressTasks:
          type: boolean
          description: |-
            indicates if tasks shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
      required:
        - id
        - name
        - activeSubscriptions
        - products
        - licenceStatus
        - suppressNotifications
        - suppressTasks
    ContractOverview:
      title: ContractOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        conclusionDate:
          type: string
          format: date
        salesMan:
          $ref: '#/components/schemas/ContactOverview'
        contractStatus:
          type: string
          enum:
            - ACTIVE
            - INACTIVE
            - NOTBOOKABLE
        licences:
          type: array
          items:
            $ref: '#/components/schemas/LicenceOverview'
      required:
        - id
        - name
        - conclusionDate
    ContactOverview:
      title: ContactOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        firstName:
          type: string
        lastName:
          type: string
      required:
        - id
        - lastName
    ListResultContract:
      title: ListResultContract
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ContractOverview'
        total:
          type: integer
      required:
        - data
        - total
    Contract:
      title: Contract
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        billingAccountId:
          type: integer
          format: int64
        billingType:
          type: string
          enum:
            - FIXED
            - FLEXIBLE
        accountingPeriod:
          type: string
          enum:
            - Year
            - Half-Year
            - Quarter
            - Month
            - Week
            - Day
        fixedPrice:
          type: number
        conclusionDate:
          type: string
          format: date
        salesMan:
          $ref: '#/components/schemas/Contact'
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        contractStatus:
          type: string
          enum:
            - ACTIVE
            - INACTIVE
            - NOTBOOKABLE
        minimumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        bookable:
          type: boolean
        validFrom:
          type: string
          format: date
        validUntil:
          type: string
          format: date
        licenceBookings:
          type: array
          items:
            $ref: '#/components/schemas/LicenceBooking'
      required:
        - id
        - name
        - billingAccountId
        - billingType
        - accountingPeriod
        - conclusionDate
        - bookable
        - validFrom
    PeriodDuration:
      title: PeriodDuration
      type: object
      properties:
        duration:
          type: integer
        period:
          type: string
          enum:
            - Year
            - Half-Year
            - Quarter
            - Month
            - Week
            - Day
      required:
        - duration
        - period
    LicenceBooking:
      title: LicenceBooking
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        products:
          type: array
          items:
            type: string
            enum:
              - Listing
              - CallTracking
              - QR
              - ListingPortal
              - Advertisement
              - ReachEnhancement
              - Budget
              - GooglyMyBusiness
              - Targeting
              - MuellerMedienPaket
              - Website
              - WebsiteWidget
              - DynamicVideo
              - Meinungsmeister
              - DataExports
        mandatoryConnectionProduct:
          type: array
          items:
            type: string
            enum:
              - Listing
              - CallTracking
              - QR
              - ListingPortal
              - Advertisement
              - ReachEnhancement
              - Budget
              - GooglyMyBusiness
              - Targeting
              - DynamicVideo
              - Meinungsmeister
              - MuellerMedienPaket
              - WebsiteWidget
              - Website
              - DataExports
        maxSubscriptions:
          type: integer
        activeSubscriptions:
          type: integer
        setupFee:
          type: number
        regularFee:
          type: number
        minimumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        cycleTerm:
          $ref: '#/components/schemas/PeriodDuration'
        licenceStatus:
          type: string
          enum:
            - ACTIVE
            - INACTIVE
            - NOTBOOKABLE
        cancelled:
          type: boolean
        suppressNotifications:
          type: boolean
          description: |
            indicates if notifications shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
        suppressTasks:
          type: boolean
          description: |-
            indicates if tasks shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
      required:
        - id
        - name
        - activeSubscriptions
        - licenceStatus
        - cancelled
        - suppressNotifications
        - suppressTasks
    ContractInsert:
      title: ContractInsert
      type: object
      properties:
        name:
          type: string
        billingAccountId:
          type: integer
        billingType:
          type: string
          enum:
            - FIXED
            - FLEXIBLE
        accountingPeriod:
          type: string
          enum:
            - Year
            - Half-Year
            - Quarter
            - Month
            - Week
            - Day
        fixedPrice:
          type: number
        conclusionDate:
          type: string
          format: date
        salesManId:
          type: integer
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        validFrom:
          type: string
          format: date
        validUntil:
          type: string
          format: date
        licences:
          type: array
          items:
            $ref: '#/components/schemas/LicenceInsert'
      required:
        - name
        - billingAccountId
        - billingType
        - accountingPeriod
        - conclusionDate
        - validFrom
        - licences
    LicenceInsert:
      title: LicenceInsert
      type: object
      properties:
        offerId:
          type: integer
          format: int64
        maxSubscriptions:
          type: integer
        overwriteOffer:
          $ref: '#/components/schemas/OfferInsert'
      required:
        - offerId
    OfferInsert:
      title: OfferInsert
      type: object
      properties:
        sellingName:
          type: string
        setupFee:
          type: number
        regularFee:
          type: number
        minimumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        maximumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        product:
          type: array
          items:
            $ref: '#/components/schemas/ProductSetting'
        suppressNotifications:
          type: boolean
          description: |-
            indicates if notifications shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
        suppressTasks:
          type: boolean
          description: |-
            indicates if tasks shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
      required:
        - sellingName
        - product
    ProductSetting:
      title: ProductSetting
      type: object
      properties:
        name:
          type: string
          enum:
            - Listing
            - CallTracking
            - QR
            - ListingPortal
            - Advertisement
            - ReachEnhancement
            - Budget
            - GoogleMyBusiness
            - Targeting
            - MuellerMedienPaket
            - Website
            - WebsiteWidget
            - DynamicVideo
            - Meinungsmeister
            - DataExports
        settingsList:
          $ref: '#/components/schemas/SettingsList'
      required:
        - name
        - settingsList
    Settings:
      title: Settings
      type: object
      description: ''
      properties:
        key:
          type: string
        name:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueLanguage'
        type:
          type: string
          enum:
            - select
            - multi_select
            - boolean
            - color
            - integer
            - text
            - image
            - number
            - url
            - html
        allowedValues:
          type: array
          items:
            type: string
        required:
          type: string
          enum:
            - 'true'
            - 'false'
        value:
          type: string
        url:
          type: string
        httpAction:
          type: string
        parentKey:
          type: string
      required:
        - key
        - type
        - required
    SettingsList:
      title: SettingsList
      type: object
      properties:
        settings:
          type: array
          items:
            $ref: '#/components/schemas/Settings'
    ContractUpdate:
      title: ContractUpdate
      type: object
      properties:
        conclusionDate:
          type: string
          format: date
        salesManId:
          type: integer
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        fixedPrice:
          type: number
        validFrom:
          type: string
          format: date
        validUntil:
          type: string
          format: date
      required:
        - conclusionDate
        - validFrom
    ListResultString:
      title: ListResultString
      type: object
      properties:
        data:
          type: array
          items:
            type: string
        total:
          type: integer
      required:
        - data
        - total
    ListResultPermission:
      title: ListResultPermission
      type: object
      properties:
        data:
          type: array
          items:
            type: string
        total:
          type: integer
        locationPermission:
          type: array
          items:
            type: string
      required:
        - data
        - total
    ListResultLicence:
      title: ListResultLicence
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/LicenceOverview'
        total:
          type: integer
      required:
        - data
        - total
    Licence:
      title: Licence
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        maxSubscriptions:
          type: integer
        activeSubscriptions:
          type: integer
        subscriptions:
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionOverview'
        bookedOffer:
          $ref: '#/components/schemas/BookedOffer'
        cancelled:
          type: boolean
        licenceStatus:
          type: string
      required:
        - id
        - name
        - activeSubscriptions
        - cancelled
    BookedOffer:
      title: BookedOffer
      type: object
      properties:
        products:
          type: array
          items:
            type: string
            enum:
              - Listing
              - CallTracking
              - QR
              - ListingPortal
              - Advertisement
              - ReachEnhancement
              - Budget
              - GooglyMyBusiness
              - Targeting
              - MuellerMedienPaket
              - Website
              - WebsiteWidget
              - DynamicVideo
              - Meinungsmeister
              - DataExports
        setupFee:
          type: number
        regularFee:
          type: number
        minimumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        cycleTerm:
          $ref: '#/components/schemas/PeriodDuration'
        suppressNotifications:
          type: boolean
          description: |-
            indicates if notifications shall be suppressed for all subscriptions which are getting created through this licence.
            By default this setting is false
        suppressTasks:
          type: boolean
          description: |-
            indicates if tasks shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
      required:
        - products
        - suppressNotifications
        - suppressTasks
    LicenceUpdate:
      title: LicenceUpdate
      type: object
      properties:
        cancelled:
          type: boolean
        name:
          type: string
        maxSubscriptions:
          type: integer
        setupFee:
          type: number
        regularFee:
          type: number
        minimumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        suppressNotifications:
          type: boolean
          description: |-
            indicates if notifications shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
        suppressTasks:
          type: boolean
          description: |-
            indicates if tasks shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
      required:
        - cancelled
        - name
    Offer:
      title: Offer
      type: object
      properties:
        id:
          type: integer
          format: int64
        products:
          type: array
          items:
            type: string
            enum:
              - Listing
              - CallTracking
              - QR
              - ListingPortal
              - Advertisement
              - ReachEnhancement
              - Budget
              - GooglyMyBusiness
              - Targeting
              - MuellerMedienPaket
              - Website
              - DynamicVideo
              - Meinungsmeister
              - WebsiteWidget
              - DataExports
        sellingName:
          type: string
        setupFee:
          type: number
        regularFee:
          type: number
        minimumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        maximumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        cycleTerm:
          $ref: '#/components/schemas/PeriodDuration'
        validFrom:
          type: string
          format: date
        validUntil:
          type: string
          format: date
        product:
          type: array
          items:
            $ref: '#/components/schemas/ProductSetting'
        suppressNotifications:
          type: boolean
          description: |-
            indicates if notifications shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
        suppressTasks:
          type: boolean
          description: |-
            indicates if tasks shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
      required:
        - id
        - products
        - validFrom
        - product
        - suppressNotifications
        - suppressTasks
    OfferUpdate:
      title: OfferUpdate
      type: object
      properties:
        sellingName:
          type: string
        spaceId:
          type: integer
        setupFee:
          type: number
        regularFee:
          type: number
        minimumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        maximumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        product:
          type: array
          items:
            $ref: '#/components/schemas/ProductSetting'
        suppressNotifications:
          type: boolean
          description: |-
            indicates if notifications shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
        suppressTasks:
          type: boolean
          description: |-
            indicates if tasks shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
      required:
        - sellingName
        - spaceId
    ListResultProductSetting:
      title: ListResultProductSetting
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ProductSetting'
        total:
          type: integer
      required:
        - data
        - total
    ListResultOffer:
      title: ListResultOffer
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OfferOverview'
        total:
          type: integer
      required:
        - data
        - total
    OfferOverview:
      title: OfferOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        products:
          type: array
          items:
            type: string
            enum:
              - Listing
              - CallTracking
              - QR
              - ListingPortal
              - Advertisement
              - ReachEnhancement
              - Budget
              - GooglyMyBusiness
              - Targeting
              - MuellerMedienPaket
              - Website
              - WebsiteWidget
              - DynamicVideo
              - Meinungsmeister
              - DataExports
        sellingName:
          type: string
        spaceName:
          type: string
        spaceId:
          type: integer
        minimumTerm:
          $ref: '#/components/schemas/PeriodDuration'
        suppressNotifications:
          type: boolean
          description: |-
            indicates if notifications shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
        suppressTasks:
          type: boolean
          description: |-
            indicates if tasks shall be suppressed for all subscriptions which are getting created through a licence of this offer.
            By default this setting is false
      required:
        - id
        - products
        - sellingName
        - spaceName
        - spaceId
        - suppressNotifications
        - suppressTasks
    ListResultLocationTargetingGroup:
      title: ListResultLocationTargetingGroup
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/LocationTargetingGroup'
        total:
          type: integer
      required:
        - data
        - total
    Duplicates:
      title: Duplicates
      type: object
      properties:
        id:
          type: integer
          format: int64
        publisherId:
          type: string
          deprecated: true
          description: This field is deprecated and will be removed in a future release. Please use `publisherName` instead.
        publisherName:
          type: string
        locationId:
          type: string
        url:
          type: string
        name:
          type: string
        address:
          type: string
        phone:
          type: string
        latitude:
          type: string
        longitude:
          type: string
        status:
          type: string
        suppressionType:
          type: string
        unavailableReasons:
          $ref: '#/components/schemas/DuplicateUnavailableReason'
    DuplicateUnavailableReason:
      title: DuplicateUnavailableReason
      type: object
      properties:
        code:
          type: string
        reason:
          type: string
    ListResultDuplicates:
      title: ListResultDuplicates
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Duplicates'
        total:
          type: integer
      required:
        - total
    Brand:
      title: Brand
      type: object
      properties:
        name:
          type: string
        url:
          type: string
    Status:
      title: Status
      type: object
      properties:
        code:
          type: string
        type:
          type: string
        message:
          type: string
    Listing:
      title: Listing
      type: object
      properties:
        locationId:
          type: string
        publisherId:
          type: string
          deprecated: true
          description: This field is deprecated and will be removed in a future release. Please use `publisherName` instead.
        publisherName:
          type: string
          description: The name of the publisher.
        status:
          type: string
        additionalStatus:
          type: string
        url:
          type: string
        screenShotUrl:
          type: string
        statusDetails:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        alternateBrands:
          type: array
          items:
            $ref: "#/components/schemas/Brand"
        provider:
          type: string
      required:
        - locationId
        - publisherId
        - status
        - additionalStatus
        - statusDetails
        - alternateBrands
        - provider
    GMBEmail:
      title: GMBEmail
      type: object
      properties:
        domainName:
          type: string
        userName:
          type: string
        userNameEditable:
          type: boolean
      required:
        - domainName
        - userName
        - userNameEditable
    GMBPhone:
      title: GMBPhone
      type: object
      properties:
        number:
          type: string
      required:
        - number
    GMBSms:
      title: GMBSms
      type: object
      properties:
        number:
          type: string
      required:
        - number
    GMBPost:
      title: GMBPost
      type: object
      properties:
        businessName:
          type: string
        address:
          type: string
    GMBListing:
      title: GMBListing
      type: object
      properties:
        postData:
          type: array
          items:
            $ref: '#/components/schemas/GMBPost'
        phoneData:
          type: array
          items:
            $ref: '#/components/schemas/GMBPhone'
        emailData:
          type: array
          items:
            $ref: '#/components/schemas/GMBEmail'
        smsData:
          type: array
          items:
            $ref: '#/components/schemas/GMBSms'
    MethodListing:
      title: MethodListing
      type: object
      properties:
        verificationMethods:
          $ref: '#/components/schemas/GMBListing'
    SuccessString:
      title: SuccessString
      type: object
      properties:
        value:
          type: string
    GMBVerifyInitiate:
      title: GMBVerifyInitiate
      type: object
      properties:
        count:
          type: integer
        entityIds:
          type: string
    GMBInitiateError:
      title: GMBInitiateError
      type: object
      properties:
        code:
          type: integer
          format: int64
        type:
          type: string
        message:
          type: string
    GMBInitiateMeta:
      title: GMBInitiateMeta
      type: object
      properties:
        uuid:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/GMBInitiateError'
      required:
        - uuid
    GMBResultVerificationList:
      title: GMBResultVerificationList
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/GMBInitiateMeta'
        data:
          $ref: '#/components/schemas/GMBVerifyInitiate'
    ListResultListing:
      title: ListResultListing
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Listing'
        total:
          type: integer
      required:
        - total
    ListResultEnhancedContent:
      title: ListResultEnhancedContent
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EnhancedContentOverview'
        total:
          type: integer
      required:
        - data
        - total
    EnhancedContentOverview:
      title: EnhancedContentOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        locations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        contentType:
          type: string
          enum:
            - productsServices
            - menu
            - events
            - profile
        status:
          type: string
          enum:
            - live
            - not_connected
        language:
          $ref: '#/components/schemas/KeyValueInt'
        published:
          type: boolean
      required:
        - id
        - name
        - contentType
        - status
        - language
        - published
    EnhancedContentInsert:
      title: EnhancedContentInsert
      type: object
      properties:
        name:
          type: string
        contentType:
          type: string
          enum:
            - productsServices
            - menu
            - profile
            - events
        language:
          $ref: '#/components/schemas/KeyValueInt'
      required:
        - name
        - contentType
        - language
    EnhancedContentUpdate:
      title: EnhancedContentUpdate
      type: object
      properties:
        name:
          type: string
        locationIds:
          type: array
          items:
            type: integer
            format: int64
        language:
          $ref: '#/components/schemas/KeyValueInt'
        published:
          type: boolean
      required:
        - name
        - locationIds
        - language
        - published
    EnhancedContent:
      title: EnhancedContent
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        locations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        contentType:
          type: string
          enum:
            - productsServices
            - menu
            - profile
            - events
        status:
          type: string
          enum:
            - live
            - not_connected
        language:
          $ref: '#/components/schemas/KeyValueInt'
        published:
          type: boolean
      required:
        - id
        - name
        - contentType
        - status
        - language
        - published
    EnhancedContentDetail:
      title: EnhancedContentDetail
      type: object
      properties:
        id:
          type: integer
          format: int64
        section:
          $ref: '#/components/schemas/KeyValueInt'
        name:
          type: string
        description:
          type: string
        priorityOrder:
          type: integer
          format: int32
        price:
          type: number
          format: double
        priceOption:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        images:
          type: array
          items:
            $ref: '#/components/schemas/Image'
        url:
          type: string
        youtubeUrl:
          type: string
        idCode:
          type: string
      required:
        - id
        - name
        - priorityOrder
    ListResultEnhancedContentDetail:
      title: ListResultEnhancedContentDetail
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EnhancedContentDetail'
        total:
          type: integer
          format: int32
      required:
        - data
        - total
    EnhancedContentDetailInsert:
      title: EnhancedContentDetailInsert
      type: object
      properties:
        section:
          $ref: '#/components/schemas/KeyValueInt'
        name:
          type: string
        description:
          type: string
        price:
          type: number
          format: double
        priceOption:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        images:
          type: array
          items:
            $ref: '#/components/schemas/ImageInsert'
        url:
          type: string
        youtubeUrl:
          type: string
        idCode:
          type: string
      required:
        - name
    ListEnhancedContentDetailOrder:
      title: ListEnhancedContentDetailOrder
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EnhancedContentDetailOrder'
    EnhancedContentDetailOrder:
      title: EnhancedContentDetailOrder
      type: object
      properties:
        id:
          type: integer
          format: int32
        priorityOrder:
          type: integer
          format: int32
      required:
        - id
        - priorityOrder
    EnhancedContentDetailUpdate:
      title: EnhancedContentDetailUpdate
      type: object
      description: ''
      properties:
        section:
          $ref: '#/components/schemas/KeyValueInt'
        name:
          type: string
        description:
          type: string
        price:
          type: number
          format: double
        priceOption:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        images:
          type: array
          items:
            $ref: '#/components/schemas/ImageInsert'
        url:
          type: string
        youtubeUrl:
          type: string
        idCode:
          type: string
        priorityOrder:
          type: integer
      required:
        - name
        - priorityOrder
    ListResultEnhancedContentDetailBasic:
      title: ListResultEnhancedContentDetailBasic
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EnhancedContentDetailBasic'
        total:
          type: integer
      required:
        - data
        - total
    EnhancedContentDetailBasic:
      title: EnhancedContentDetailBasic
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        priorityOrder:
          type: integer
          format: int32
      required:
        - id
        - name
        - priorityOrder
    ListResultEnhancedContentSection:
      title: ListResultEnhancedContentSection
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EnhancedContentSectionOverview'
        total:
          type: integer
      required:
        - data
        - total
    EnhancedContentSectionOverview:
      title: EnhancedContentSectionOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        priorityOrder:
          type: integer
          format: int32
        elements:
          type: integer
          format: int32
      required:
        - id
        - name
        - priorityOrder
        - elements
    EnhancedContentSectionInsert:
      title: EnhancedContentSectionInsert
      type: object
      properties:
        name:
          type: string
        description:
          type: string
    ListEnhancedContentSectionUpdate:
      title: ListEnhancedContentSectionUpdate
      type: object
      properties:
        sections:
          type: array
          items:
            $ref: '#/components/schemas/EnhancedContentSectionUpdate'
    EnhancedContentSectionUpdate:
      title: EnhancedContentSectionUpdate
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        description:
          type: string
        priorityOrder:
          type: integer
          format: int32
      required:
        - id
        - name
        - priorityOrder
    UrlUpdate:
      title: UrlUpdate
      type: object
      properties:
        url:
          type: string
        display:
          type: string
      required:
        - url
    UrlInsert:
      title: UrlInsert
      type: object
      properties:
        urlType:
          type: string
          enum:
            - FacebookUrl
            - TwitterUrl
            - YoutubeUrl
            - GooglePlusUrl
            - CustomerUrl
            - CurrentOffersUrl
            - LocationUrl
            - MenuUrl
            - OrderUrl
            - InstagramUrl
            - ReservationsUrl
            - TikTokUrl
            - LinkedInUrl
            - XINGUrl
        url:
          type: string
        display:
          type: string
      required:
        - urlType
        - url
    ListResultParent:
      title: ListResultParent
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Parent'
        total:
          type: integer
      required:
        - data
        - total
    GlobalSearchResult:
      title: GlobalSearchResult
      type: object
      properties:
        id:
          type: integer
        parentId:
          type: integer
        name:
          type: string
        workSpace:
          type: string
        contextType:
          type: string
          enum:
            - Workspace
            - Company
            - Location
            - Subscription
            - Review
      required:
        - id
        - name
        - contextType
    ListResultGlobalSearch:
      title: ListResultGlobalSearch
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/GlobalSearchResult'
        total:
          type: integer
      required:
        - data
        - total
    ListResultDuplicate:
      title: ListResultDuplicate
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateOverview'
        total:
          type: integer
      required:
        - data
        - total
    DuplicateOverview:
      title: DuplicateOverview
      type: object
      properties:
        locationId:
          type: integer
          format: int64
        name:
          type: string
        phone:
          $ref: '#/components/schemas/PhoneOverview'
        address:
          $ref: '#/components/schemas/AddressOverview'
        isClaimed:
          type: boolean
          description: if exists a user that is connected to this company as business Owner
        externalId:
          type: integer
          format: int64
        isExternal:
          type: boolean
        category:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        externalProviderId:
          type: integer
          format: int64
        companyId:
          type: integer
          format: int64
      required:
        - name
        - phone
        - isClaimed
    ProfilQualityOverview:
      title: ProfilQualityOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        quality:
          type: number
          format: double
        includingProfile:
          type: array
          items:
            type: string
        excludingProfile:
          type: array
          items:
            type: string
      required:
        - id
        - quality
    ProfilQuality:
      title: ProfilQuality
      type: object
      properties:
        id:
          type: integer
          format: int64
        quality:
          type: number
          format: double
        name:
          type: string
        address:
          $ref: '#/components/schemas/AddressOverview'
        phone:
          $ref: '#/components/schemas/PhoneOverview'
        eMail:
          type: string
        website:
          type: string
        description:
          type: boolean
        logo:
          type: boolean
        galerie:
          type: boolean
        openingHours:
          type: boolean
        paymentMethods:
          type: boolean
        includingProfile:
          type: array
          items:
            type: string
        excludingProfile:
          type: array
          items:
            type: string
      required:
        - id
        - quality
        - address
        - phone
        - description
        - logo
        - galerie
        - openingHours
        - paymentMethods
    CountryCodeOverview:
      title: CountryCodeOverview
      type: object
      properties:
        areaCode:
          type: string
        phoneCode:
          type: string
        countryCode:
          type: string
        name:
          type: string
      required:
        - areaCode
        - phoneCode
        - countryCode
        - name
    ListCountryCode:
      title: ListCountryCode
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CountryCodeOverview'
        total:
          type: integer
          format: int32
      required:
        - data
        - total
    KeyValueServiceArea:
      title: KeyValueServiceArea
      type: object
      properties:
        key:
          type: string
          enum:
            - POSTAL_CODE
            - REGION
            - COUNTY
            - CITY
            - SUBLOCALITY
        value:
          type: string
      required:
        - key
        - value
    WebsiteWidget:
      title: WebsiteWidget
      type: object
      properties:
        id:
          type: integer
          format: int64
        configuration:
          $ref: '#/components/schemas/WebsiteWidgetConfiguration'
        customWidgetId:
          type: string
      required:
        - id
    WebsiteWidgetConfigurationUpdate:
      title: WebsiteWidgetConfigurationUpdate
      type: object
      description: ''
      properties:
        configuration:
          type: array
          description: set key values from the website widget type settings
          items:
            $ref: '#/components/schemas/KeyValueString'
        name:
          type: string
        image:
          $ref: '#/components/schemas/ImageInsert'
      required:
        - name
    WebsiteWidgetConfiguration:
      title: WebsiteWidgetConfiguration
      type: object
      properties:
        id:
          type: integer
        configuration:
          $ref: '#/components/schemas/SettingsList'
        name:
          type: string
        apiKey:
          type: string
        image:
          $ref: '#/components/schemas/Image'
        subscriptionCount:
          type: integer
        websiteWidgetType:
          type: string
          enum:
            - Review
        scriptUrl:
          type: string
      required:
        - id
        - name
        - apiKey
        - websiteWidgetType
    WebsiteWidgetConfigurationInsert:
      title: WebsiteWidgetConfigurationInsert
      type: object
      properties:
        workspaceId:
          type: integer
        websiteWidgetType:
          type: string
          enum:
            - Review
        configuration:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        name:
          type: string
        image:
          $ref: '#/components/schemas/ImageInsert'
      required:
        - workspaceId
        - websiteWidgetType
        - name
      x-examples:
        example-1:
          workspaceId: 0
          websiteWidgetType: Review
          configuration:
            - key: string
              value: string
          name: string
          image:
            imageType: GoogleProfilImage
            fileType: jpg
            data: string
            url: string
    WebsiteWidgetDefaultConfiguration:
      title: WebsiteWidgetDefaultConfiguration
      type: object
      properties:
        configuration:
          $ref: '#/components/schemas/SettingsList'
        websiteWidgetType:
          type: string
          enum:
            - Review
      required:
        - websiteWidgetType
    ListResultWebsiteWidgetDefaultConfiguration:
      title: ListResultWebsiteWidgetDefaultConfiguration
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/WebsiteWidgetDefaultConfiguration'
        total:
          type: integer
      required:
        - data
        - total
    WebsiteWidgetUpdate:
      title: WebsiteWidgetUpdate
      type: object
      properties:
        customWidgetId:
          type: string
    WebsiteWidgetConfigurationOverview:
      title: WebsiteWidgetConfigurationOverview
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        subscriptionCount:
          type: integer
      required:
        - id
        - name
        - subscriptionCount
    ListResultWebsiteWidgetConfiguration:
      title: ListResultWebsiteWidgetConfiguration
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/WebsiteWidgetConfigurationOverview'
        total:
          type: integer
      required:
        - data
        - total
    StatisticAggregationConfiguration:
      title: StatisticAggregationConfiguration
      type: object
      properties:
        statisticSource:
          type: string
          enum:
            - matchcraft
            - yext
        configuration:
          $ref: '#/components/schemas/SettingsList'
      required:
        - statisticSource
        - configuration
    StatisticAggregation:
      title: StatisticAggregation
      type: object
      properties:
        id:
          type: integer
          format: int64
        statisticSource:
          type: string
          enum:
            - matchcraft
            - yext
        aggregationStart:
          type: string
          format: date
        configuration:
          $ref: '#/components/schemas/SettingsList'
      required:
        - id
        - statisticSource
        - aggregationStart
        - configuration
    SubscriptionStatisticAggregation:
      title: SubscriptionStatisticAggregation
      type: object
      properties:
        aggregationStart:
          type: string
          format: date
        configuration:
          $ref: '#/components/schemas/SettingsList'
      required:
        - aggregationStart
        - configuration
    SocialProfile:
      title: SocialProfile
      type: object
      properties:
        profileName:
          type: string
        profileUrl:
          type: string
        profilePhotoUrl:
          type: string
      required:
        - profileName
    SocialPostLocation:
      title: SocialPostLocation
      type: object
      description: Representation of a Social Post's 'Post-Location'
      properties:
        locationId:
          type: integer
          format: int64
        locationName:
          type: string
        postStatus:
          type: string
          enum:
            - PROCESSING
            - ACTIVE
            - EXPIRING
            - FINISHED
            - FAILED
        postedAt:
          type: string
          format: date-time
        portalUrl:
          type: string
          description: The URL of the post on the social portal, if available.
        errors:
          type: array
          items:
            type: string
          description: List of errors for the PostLocation
        address:
          $ref: '#/components/schemas/AddressOverview'
      required:
        - locationId
        - locationName
    SocialPostOverview:
      title: SocialPostOverview
      type: object
      properties:
        locations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
          deprecated: true
          description: 'A list of all the locations for which the post was created, if possible use ''postedLocations'' instead of the this property'
        postedLocations:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostLocation'
          description: 'A list of all the locations for which the post was created, plus information about the status, posted time, and errors. Use this instead of the deprecated ''locations'' property'
        postId:
          type: integer
          format: int64
        postImage:
          type: array
          items:
            $ref: '#/components/schemas/Image'
        postContent:
          type: string
        socialPortal:
          deprecated: true
          type: string
          description: This field is deprecated and will be removed in a future release. Please use `portalName` instead.
        portalName:
          type: string
        canDelete:
          type: boolean
        profile:
          $ref: '#/components/schemas/SocialProfile'
        totalLikes:
          type: integer
        totalComments:
          type: integer
        url:
          deprecated: true
          type: string
        portalUrl:
          deprecated: true
          type: string
          description: The url is not linked to a post, but instead to the post for a specific location. Use portalUrl from postedLocations array instead.
        date:
          type: string
          format: date
        time:
          type: string
          format: time
        status:
          type: string
          enum:
            - PROCESSING
            - ACTIVE
            - EXPIRING
            - FINISHED
            - FAILED
          deprecated: true
        ctaUrl:
          type: string
          description: 'The call to action is only available for GoogleMyBusiness social portal, unset ctaUrl in case of "CALL"'
        ctaType:
          type: string
          description: The call to action is only available for GoogleMyBusiness social portal
          enum:
            - BOOK
            - ORDER
            - SHOP
            - LEARN_MORE
            - SIGN_UP
            - CALL
        postTopicType:
          type: string
          description: The topicType of the post. Only supported on Google posts. Defaults to STANDARD.
          enum:
            - STANDARD
            - EVENT
            - OFFER
            - ALERT
        alertType:
          type: string
          description: 'The type of alert the post is created for. This field is only applicable for posts of topicType Alert, and behaves as a sub-type of Alerts.'
          enum:
            - COVID_19
        eventInfo:
          $ref: '#/components/schemas/EventInfo'
          description: Event information. Required for topic types EVENT and OFFER.
        offerInfo:
          $ref: '#/components/schemas/OfferInfo'
          description: Additional data for offer posts. This should only be set when the topicType is OFFER.
        postErrors:
          type: array
          items:
            $ref: '#/components/schemas/PostLocationError'
          description: List of LocationIds paired with their corresponding list of errors for the post
          deprecated: true
      required:
        - locations
        - postId
        - socialPortal
        - portalName
        - date
        - time
        - status
        - postedLocations
    ListResultSocial:
      title: ListResultSocial
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SocialPostOverview'
        total:
          type: integer
      required:
        - data
        - total
    SocialPostUpdate:
      title: SocialPostUpdate
      type: object
      properties:
        postImage:
          type: array
          items:
            $ref: '#/components/schemas/ImageInsert'
        postContent:
          type: string
        url:
          type: string
        date:
          type: string
          format: date
        time:
          type: string
        contextType:
          type: string
          enum:
            - Location
            - Company
        contextIds:
          type: array
          items:
            type: integer
            format: int64
        ctaUrl:
          type: string
          description: 'The call to action is only available for GoogleMyBusiness social portal, unset ctaUrl in case of "CALL"'
        ctaType:
          type: string
          description: The call to action is only available for GoogleMyBusiness social portal
          enum:
            - BOOK
            - ORDER
            - SHOP
            - LEARN_MORE
            - SIGN_UP
            - CALL
        postTopicType:
          type: string
          enum:
            - STANDARD
            - EVENT
            - OFFER
            - ALERT
        alertType:
          type: string
          description: 'The type of alert the post is created for. This field is only applicable for posts of topicType Alert, and behaves as a sub-type of Alerts.'
          enum:
            - COVID_19
        eventInfo:
          $ref: '#/components/schemas/EventInfo'
          description: Event information. Required for topic types EVENT and OFFER.
        offerInfo:
          $ref: '#/components/schemas/OfferInfo'
          description: Additional data for offer posts. This should only be set when the topicType is OFFER.
      required:
        - contextType
        - contextIds
    SocialPostInsert:
      title: SocialPostInsert
      type: object
      properties:
        postImage:
          type: array
          items:
            $ref: '#/components/schemas/ImageInsert'
        postContent:
          type: string
        url:
          type: string
        date:
          type: string
          format: date
        time:
          type: string
        ctaUrl:
          type: string
          description: 'The call to action is only available for GoogleMyBusiness social portal, unset ctaUrl in case of "CALL"'
        ctaType:
          type: string
          description: The call to action is only available for GoogleMyBusiness social portal
          enum:
            - BOOK
            - ORDER
            - SHOP
            - LEARN_MORE
            - SIGN_UP
            - CALL
        postTopicType:
          type: string
          enum:
            - STANDARD
            - EVENT
            - OFFER
            - ALERT
        alertType:
          type: string
          description: 'The type of alert the post is created for. This field is only applicable for posts of topicType Alert, and behaves as a sub-type of Alerts.'
          enum:
            - COVID_19
        eventInfo:
          $ref: '#/components/schemas/EventInfo'
          description: Event information. Required for topic types EVENT and OFFER.
        offerInfo:
          $ref: '#/components/schemas/OfferInfo'
          description: Additional data for offer posts. This should only be set when the topicType is OFFER.
      required:
        - date
      description: ''
    SocialCommentsInsert:
      title: SocialCommentsInsert
      type: object
      properties:
        message:
          type: string
        commentId:
          type: integer
          format: int64
          description: 'If the identifier "commentId" is set, then the action is considered a reply.'
      required:
        - message
    ListResultCommentsSocial:
      title: ListResultCommentsSocial
      type: object
      description: ''
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SocialCommentsOverview'
        total:
          type: integer
          format: int32
      required:
        - data
        - total
    ListResultCommentReplies:
      title: ListResultCommentReplies
      type: object
      description: ''
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SocialCommentReplyOverview'
        total:
          type: integer
          format: int32
      required:
        - data
        - total
    ListResultSocialReviews:
      title: ListResultSocialReviews
      type: object
      properties:
        data:
          type: array
          description: array that contains the basic data of each review
          items:
            $ref: '#/components/schemas/SocialReviewOverview'
        averageRating:
          type: number
          format: double
          description: average rating of all of your reviews
        total:
          type: integer
          format: int32
          description: total numbers of reviews with respect to your filter parameters
        unansweredReviews:
          type: integer
          description: not answered reviews for this context
        reviewsPerWeek:
          type: number
          format: double
          description: reviews per week indicator
        totalReviews:
          type: integer
          format: int32
          description: total number of reviews for this context
      required:
        - data
        - averageRating
        - total
        - unansweredReviews
        - reviewsPerWeek
        - totalReviews
    SocialReviewOverview:
      title: SocialReviewOverview
      type: object
      description: ''
      properties:
        reviewId:
          type: integer
          format: int64
        location:
          $ref: '#/components/schemas/KeyValueLocation'
        date:
          type: string
        socialPortal:
          deprecated: true
          type: string
          description: This field is deprecated and will be removed in a future release. Please use `portalName` instead.
        portalName: 
          type: string
        portalAnswerable:
          type: boolean
        addonAnswerable:
          type: boolean
        rating:
          type: number
        facebookRecommended:
          type: boolean
        reviewContent:
          $ref: '#/components/schemas/ReviewContent'
        lastOwnerAnswer:
          $ref: '#/components/schemas/LastOwnerAnswer'
        url:
          type: string
      required:
        - reviewId
        - location
        - date
        - socialPortal
        - portalName
        - portalAnswerable
        - addonAnswerable
    ReviewContent:
      title: ReviewContent
      type: object
      properties:
        author:
          type: string
        content:
          type: string
    LastOwnerAnswer:
      title: LastOwnerAnswer
      type: object
      properties:
        answer:
          type: string
        status:
          type: string
      required:
        - answer
        - status
    EventInfo:
      title: SocialPostEventInfo
      type: object
      properties:
        title:
          type: string
        startDate:
          type: string
          format: date
        startTime:
          type: string
        endDate:
          type: string
          format: date
        endTime:
          type: string
      required:
        - title
        - startDate
        - endDate
    OfferInfo:
      title: SocialPostOfferInfo
      type: object
      properties:
        couponCode:
          type: string
        redeemOnlineUrl:
          type: string
        termsConditions:
          type: string
    PostLocationError:
      title: SocialPostLocationError
      type: object
      properties:
        locationId:
          type: integer
          format: int64
          description: The ID of th location to which the errors belong
        errors:
          type: array
          items:
            type: string
          description: List of errors for the PostLocation
      required:
        - locationId
    SocialReviewCommentsOverview:
      title: SocialReviewCommentsOverview
      type: object
      properties:
        date:
          type: string
        comment:
          type: string
        status:
          type: string
          enum:
            - ACTIVE
            - PROCESSING
            - FAILED
        error:
          type: array
          items:
            type: string
        ownerCommented:
          type: boolean
        profile:
          $ref: '#/components/schemas/SocialProfile'
        id:
          type: integer
      required:
        - date
        - comment
        - status
        - ownerCommented
        - id
    BulkSocialReviewCommentsOverview:
      title: BulkSocialReviewCommentsOverview
      properties:
        reviewId:
          type: integer
          format: int64
        date:
          type: string
        comment:
          type: string
        status:
          type: string
          enum:
            - ACTIVE
            - PROCESSING
            - FAILED
        error:
          type: array
          items:
            type: string
        ownerCommented:
          type: boolean
        profile:
          $ref: '#/components/schemas/SocialProfile'
        id:
          type: integer
      required:
        - reviewId
        - date
        - comment
        - status
        - ownerCommented
        - id
    ListResultSocialReviewComments:
      title: ListResultSocialReviewComments
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SocialReviewCommentsOverview'
        total:
          type: integer
      required:
        - data
        - total
    ListResultBulkSocialReviewComments:
      title: ListResultBulkSocialReviewComments
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BulkSocialReviewCommentsOverview'
        total:
          type: integer
      required:
        - data
        - total
    SocialReviewCommentInsert:
      title: SocialReviewCommentInsert
      type: object
      properties:
        comment:
          type: string
      required:
        - comment
    SocialSettingsResult:
      title: SocialSettingsResult
      type: object
      properties:
        postEnabled:
          type: boolean
        blackListLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
      required:
        - postEnabled
    BillingAccountInsert:
      title: BillingAccountInsert
      type: object
      properties:
        businessName:
          type: string
        address:
          $ref: '#/components/schemas/AddressInsert'
        differentAddress:
          $ref: '#/components/schemas/AddressInsert'
      required:
        - businessName
        - address
    BillingAccountUpdate:
      title: BillingAccountUpdate
      type: object
      properties:
        businessName:
          type: string
      required:
        - businessName
    BillingAccountOverview:
      title: BillingAccountOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        businessName:
          type: string
        parentType:
          type: string
          enum:
            - Company
            - Workspace
      required:
        - id
        - businessName
        - parentType
    ListResultBillingAccount:
      title: ListResultBillingAccount
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BillingAccountOverview'
        total:
          type: integer
      required:
        - data
        - total
    ListResultEmailTemplateGroup:
      title: ListResultEmailTemplateGroup
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TemplateGroup'
        total:
          type: integer
      required:
        - data
        - total
    TemplateEmailAvailable:
      title: TemplateEmailAvailable
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        reportType:
          type: string
          enum:
            - alert
            - report
            - campaign
      required:
        - id
        - name
        - reportType
    TemplateGroup:
      title: TemplateGroup
      type: object
      properties:
        templateGroup:
          $ref: '#/components/schemas/KeyValueInt'
        availableEmailTemplates:
          type: array
          items:
            $ref: '#/components/schemas/TemplateEmailAvailable'
      required:
        - templateGroup
        - availableEmailTemplates
    NotificationConfiguration:
      title: NotificationConfiguration
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        context:
          $ref: '#/components/schemas/KeyValueInt'
        contextType:
          type: string
          enum:
            - Location
            - Company
            - Workspace
        active:
          type: boolean
        internal:
          type: boolean
        whiteList:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        blackList:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
      required:
        - id
        - name
        - context
        - contextType
        - active
        - internal
    NotificationConfigurationUpdate:
      title: NotificationConfigurationUpdate
      type: object
      properties:
        name:
          type: string
        active:
          type: boolean
        whiteList:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        blackList:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
      required:
        - name
        - active
    NotificationConfigurationOverview:
      title: NotificationConfigurationOverview
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        active:
          type: boolean
        internal:
          type: boolean
        context:
          $ref: '#/components/schemas/KeyValueInt'
        contextType:
          type: string
          enum:
            - Location
            - Company
            - Workspace
      required:
        - id
        - name
        - active
        - internal
        - context
        - contextType
    ListResultNotificationConfiguration:
      title: ListResultNotificationConfiguration
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/NotificationConfigurationOverview'
        total:
          type: integer
      required:
        - data
        - total
    NotificationConfigurationInsert:
      title: NotificationConfigurationInsert
      type: object
      properties:
        name:
          type: string
        contextId:
          type: integer
        contextType:
          type: string
          enum:
            - Location
            - Company
            - Workspace
        active:
          type: boolean
        internal:
          type: boolean
        whiteList:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        blackList:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
      required:
        - name
        - contextId
        - contextType
        - active
    ListResultTemplateSetting:
      title: ListResultTemplateSetting
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSetting'
        total:
          type: integer
      required:
        - data
        - total
    TemplateSetting:
      title: TemplateSetting
      type: object
      properties:
        key:
          type: string
        parentKey:
          type: string
        parentValue:
          type: string
        allowedValues:
          type: array
          items:
            type: string
        type:
          type: string
          enum:
            - select
            - text
            - int
            - numeric
            - boolean
            - url
            - html.color
        fixedValue:
          type: string
        value:
          type: string
      required:
        - key
        - type
    ListResultNotification:
      title: ListResultNotification
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/NotificationOverview'
        total:
          type: integer
      required:
        - data
        - total
    NotificationOverview:
      title: NotificationOverview
      type: object
      properties:
        id:
          type: integer
        reportType:
          type: string
          enum:
            - alert
            - report
            - campaign
        templateEmail:
          $ref: '#/components/schemas/TemplateEmail'
        templateSetting:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSetting'
        existCustomRecipients:
          type: boolean
      required:
        - id
        - reportType
        - templateEmail
        - existCustomRecipients
    TemplateEmail:
      title: TemplateEmail
      type: object
      properties:
        templateGroup:
          $ref: '#/components/schemas/KeyValueInt'
        template:
          $ref: '#/components/schemas/KeyValueInt'
      required:
        - templateGroup
        - template
    Notification:
      title: Notification
      type: object
      properties:
        id:
          type: integer
        reportType:
          type: string
          enum:
            - alert
            - report
            - campaign
        templateEmail:
          $ref: '#/components/schemas/TemplateEmail'
        templateSetting:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSetting'
        recipientsIds:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        customRecipientSetting:
          $ref: '#/components/schemas/Recipients'
      required:
        - id
        - reportType
        - templateEmail
    Recipients:
      title: Recipients
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        customField:
          type: boolean
        recipientsEmail:
          type: array
          items:
            $ref: '#/components/schemas/RecipientsEmail'
      required:
        - id
        - name
        - customField
        - recipientsEmail
    RecipientsEmail:
      title: RecipientsEmail
      type: object
      properties:
        email:
          type: string
        emailType:
          type: string
          enum:
            - to
            - cc
            - bcc
        notifyContact:
          type: boolean
        notifyLocation:
          type: boolean
      required:
        - emailType
        - notifyContact
        - notifyLocation
    RecipientsUpdate:
      title: RecipientsUpdate
      type: object
      properties:
        name:
          type: string
        recipientsEmail:
          type: array
          items:
            $ref: '#/components/schemas/RecipientsEmail'
      required:
        - name
        - recipientsEmail
    NotificationUpdate:
      title: NotificationUpdate
      type: object
      properties:
        templateEmail:
          type: integer
        templateSetting:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSetting'
        recipientsIds:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        customRecipientSetting:
          $ref: '#/components/schemas/RecipientsUpdate'
      required:
        - templateEmail
    RecipientsInsert:
      title: RecipientsInsert
      type: object
      properties:
        notificationConfigurationId:
          type: integer
        name:
          type: string
        recipientsEmail:
          type: array
          items:
            $ref: '#/components/schemas/RecipientsEmail'
      required:
        - notificationConfigurationId
        - name
        - recipientsEmail
    NotificationInsert:
      title: NotificationInsert
      type: object
      properties:
        templateEmail:
          $ref: '#/components/schemas/TemplateEmail'
        templateSetting:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSetting'
        recipientsIds:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        customRecipientSetting:
          $ref: '#/components/schemas/RecipientsInsert'
      required:
        - templateEmail
    ListResultRecipients:
      title: ListResultRecipients
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Recipients'
        total:
          type: integer
      required:
        - data
        - total
    ChangePassword:
      title: ChangePassword
      type: object
      properties:
        userId:
          type: integer
        loggedInUserPassword:
          type: string
      required:
        - userId
        - loggedInUserPassword
    Ip:
      title: Ip
      type: object
      properties:
        value:
          type: string
      required:
        - value
    PasswordForgotten:
      title: PasswordForgotten
      type: object
      properties:
        email:
          type: string
        url:
          type: string
        template:
          type: integer
      required:
        - email
    PasswordActivation:
      title: PasswordActivation
      type: object
      properties:
        token:
          type: string
        password:
          type: string
      required:
        - token
        - password
    UserGroupSpace:
      title: UserGroupSpace
      type: object
      properties:
        id:
          type: integer
        firstName:
          type: string
        lastName:
          type: string
        contextId:
          type: integer
        spaceName:
          type: string
        groupId:
          type: integer
        groupName:
          type: string
        contextType:
          type: string
      required:
        - id
        - firstName
        - lastName
        - contextId
        - spaceName
        - groupId
        - groupName
        - contextType
    SearchResultUserGroupSpace:
      title: SearchResultUserGroupSpace
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/UserGroupSpace'
        total:
          type: integer
    SearchResultKeyValueInt:
      title: SearchResultKeyValueInt
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        total:
          type: integer
    ListResultUserAccount:
      title: ListResultUserAccount
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/UserAccountOverview'
        total:
          type: integer
      required:
        - data
        - total
    UserAccountOverview:
      title: UserAccountOverview
      type: object
      properties:
        id:
          type: integer
        userName:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        active:
          type: boolean
        groups:
          type: array
          items:
            type: string
        tags:
          type: array
          items:
            type: string
      required:
        - id
        - firstName
        - lastName
        - email
        - active
        - groups
        - tags
    UserAccountInsert:
      title: UserAccountInsert
      type: object
      properties:
        userName:
          type: string
        email:
          type: string
        password:
          type: string
        contextId:
          type: integer
        contextType:
          type: string
          enum:
            - Location
            - Company
            - Workspace
        locked:
          type: boolean
        emailVerified:
          type: boolean
          default: false
          description: |-
            if the email is verified, the verification email will not be sent.
            By default the value is false
        position:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        languageCode:
          type: string
          enum:
            - de
            - en
            - fr
        url:
          type: string
        template:
          type: integer
        settings:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        tags:
          type: array
          items:
            type: string
        profilePicture:
          $ref: '#/components/schemas/ImageInsert'
        salutation:
          type: string
        userType:
          type: string
          enum:
            - agency service
            - self service
          description: 'user type, default agency service'
        phone:
          $ref: '#/components/schemas/PhoneInsert'
      required:
        - email
        - contextId
        - contextType
        - firstName
        - lastName
        - languageCode
    UserAccount:
      title: UserAccount
      type: object
      properties:
        id:
          type: integer
        userName:
          type: string
        email:
          type: string
        contextId:
          type: integer
        contextType:
          type: string
          enum:
            - Location
            - Company
            - Workspace
        active:
          type: boolean
        position:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        languageCode:
          type: string
          enum:
            - de
            - en
            - fr
        url:
          type: string
        template:
          type: integer
        settings:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        tags:
          type: array
          items:
            type: string
        salutation:
          type: string
        userType:
          type: string
          enum:
            - agency service
            - self service
        profilePicture:
          $ref: '#/components/schemas/Image'
        phone:
          $ref: '#/components/schemas/Phone'
        ssoUser:
          type: boolean
          description: if the user profile has been created through a sso or manually.
      required:
        - id
        - email
        - contextId
        - contextType
        - firstName
        - lastName
        - languageCode
        - userType
        - ssoUser
    UserAccountUpdate:
      title: UserAccountUpdate
      type: object
      properties:
        userName:
          type: string
        email:
          type: string
        locked:
          type: boolean
        position:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        languageCode:
          type: string
        url:
          type: string
        template:
          type: integer
        settings:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        tags:
          type: array
          items:
            type: string
        profilePicture:
          $ref: '#/components/schemas/ImageInsert'
        salutation:
          type: string
      required:
        - email
        - firstName
        - lastName
        - languageCode
      description: ''
    SuccessBoolean:
      title: SuccessBoolean
      type: object
      properties:
        value:
          type: boolean
    QrCodeUpdate:
      title: QrCodeUpdate
      type: object
      properties:
        name:
          type: string
        destinationUrl:
          type: string
        note:
          type: string
      required:
        - name
    QrCode:
      title: QrCode
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        destinationUrl:
          type: string
        redirectUrl:
          type: string
        note:
          type: string
        qrType:
          type: string
          enum:
            - CustomRedirect
            - ReviewRedirect
      required:
        - id
        - redirectUrl
        - qrType
    QrCodeConfiguration:
      title: QrCodeConfiguration
      type: object
      properties:
        qrType:
          type: string
          enum:
            - CustomRedirect
            - ReviewRedirect
      required:
        - qrType
    SocialCommentsOverview:
      title: SocialCommentsOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        locationId:
          type: integer
          format: int64
        postId:
          type: integer
          format: int64
        message:
          type: string
        date:
          type: string
        profile:
          $ref: '#/components/schemas/SocialProfile'
        ownerCommented:
          type: boolean
        status:
          type: string
          enum:
            - ACTIVE
            - PROCESSING
            - FAILED
        error:
          type: array
          items:
            type: string
        repliesCount:
          type: integer
      required:
        - id
        - locationId
        - postId
        - message
        - date
        - ownerCommented
        - status
    SocialCommentReplyOverview:
      title: SocialCommentReplyOverview
      type: object
      description: Social post comment replies overview
      properties:
        id:
          type: integer
          format: int64
        commentId:
          type: integer
          format: int64
        message:
          type: string
        date:
          type: string
        profile:
          $ref: '#/components/schemas/SocialProfile'
        ownerReplied:
          type: boolean
        status:
          type: string
          enum:
            - ACTIVE
            - PROCESSING
            - FAILED
        error:
          type: array
          items:
            type: string
      required:
        - id
        - commentId
        - message
        - date
        - ownerReplied
        - status
    SocialReview:
      title: SocialReview
      type: object
      description: ''
      properties:
        reviewId:
          type: integer
          format: int64
        location:
          $ref: '#/components/schemas/KeyValueString'
        date:
          type: string
        socialPortal:
          deprecated: true
          type: string
          description: This field is deprecated and will be removed in a future release. Please use `portalName` instead.
        portalName: 
          type: string
        portalAnswerable:
          type: boolean
        addonAnswerable:
          type: boolean
        rating:
          format: double
          type: number
        facebookRecommended:
          type: boolean
        reviewContent:
          $ref: '#/components/schemas/ReviewContent'
        lastOwnerAnswer:
          $ref: '#/components/schemas/LastOwnerAnswer'
        url:
          type: string
      required:
        - reviewId
        - location
        - date
        - socialPortal
        - portalName
        - portalAnswerable
        - addonAnswerable
    WhiteLabelSettingUpdate:
      title: WhiteLabelSettingUpdate
      type: object
      properties:
        primaryColor:
          type: string
        loginBackgroundColor:
          type: string
        domain:
          type: string
        logo:
          $ref: '#/components/schemas/ImageInsert'
        favicon:
          $ref: '#/components/schemas/ImageInsert'
        googleMapApiKey:
          type: string
        redirectUrl:
          type: string
      required:
        - domain
    WhiteLabelSettingInsert:
      title: WhiteLabelSettingInsert
      type: object
      properties:
        primaryColor:
          type: string
        loginBackgroundColor:
          type: string
        domain:
          type: string
        logo:
          $ref: '#/components/schemas/ImageInsert'
        favicon:
          $ref: '#/components/schemas/ImageInsert'
      required:
        - domain
    WorkspaceSetting:
      title: WorkspaceSetting
      type: object
      description: ''
      properties:
        generalSetting:
          $ref: '#/components/schemas/GeneralSetting'
        passwordPolicySetting:
          $ref: '#/components/schemas/PasswordPolicySetting'
        emailSetting:
          $ref: '#/components/schemas/EmailSetting'
        whiteLabelSetting:
          $ref: '#/components/schemas/WhiteLabelSetting'
        supportSetting:
          $ref: '#/components/schemas/SupportSetting'
        selfServiceSetting:
          $ref: '#/components/schemas/SelfServiceSetting'
        customFieldsCompany:
          $ref: '#/components/schemas/SettingsList'
        workspaceId:
          type: integer
      required:
        - generalSetting
        - emailSetting
    WorkspaceSettingUpdate:
      title: WorkspaceSettingUpdate
      type: object
      properties:
        generalSetting:
          $ref: '#/components/schemas/GeneralSettingUpdate'
        passwordPolicySetting:
          $ref: '#/components/schemas/PasswordPolicySettingUpdate'
        emailSetting:
          $ref: '#/components/schemas/EmailSettingUpdate'
        supportSetting:
          $ref: '#/components/schemas/SupportSettingUpdate'
        selfServiceSetting:
          $ref: '#/components/schemas/SelfServiceSetting'
      required:
        - generalSetting
        - passwordPolicySetting
        - emailSetting
    PasswordPolicySettingUpdate:
      title: PasswordPolicySettingUpdate
      type: object
      properties:
        passwordMinLength:
          type: integer
        passwordUppercaseChar:
          type: integer
        passwordLowercaseChar:
          type: integer
        passwordDigits:
          type: integer
        passwordSpecialChar:
          type: integer
      required:
        - passwordMinLength
        - passwordUppercaseChar
        - passwordLowercaseChar
        - passwordDigits
        - passwordSpecialChar
    GeneralSettingUpdate:
      title: GeneralSettingUpdate
      type: object
      properties:
        imprintUrl:
          type: string
        privacyUrl:
          type: string
        termsConditionsUrl:
          type: string
        defaultCountry:
          type: string
          x-stoplight:
            id: hb7u9cguzjarr
          description: |
            default country setting for this workspace, indicating where (most of the) locations are located. ISO 3166-1 alpha-2
      required:
        - imprintUrl
        - privacyUrl
    EmailSettingUpdate:
      title: EmailSettingUpdate
      type: object
      properties:
        emailName:
          type: string
        emailSender:
          type: string
        emailFooter:
          type: string
        emailLogo:
          $ref: '#/components/schemas/ImageInsert'
      required:
        - emailName
        - emailSender
        - emailFooter
        - emailLogo
    ListResultWorkspaceSetting:
      title: ListResultWorkspaceSetting
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/WorkspaceSettingOverview'
        total:
          type: integer
      required:
        - data
        - total
    ListListingScan:
      title: ListListingScan
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ListingScanOverview'
        total:
          type: integer
      required:
        - data
        - total
    ListingScanOverview:
      title: ListingScanOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        includedWorkspaces:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
      required:
        - id
        - name
        - includedWorkspaces
    ListingScanInsert:
      title: ListingScanInsert
      type: object
      properties:
        name:
          type: string
        includedWorkspaces:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        allowedDomain:
          type: array
          items:
            type: string
        language:
          type: string
      required:
        - name
        - includedWorkspaces
        - allowedDomain
    ListingScan:
      title: ListingScan
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        scanAPIKey:
          type: string
        includedWorkspaces:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        excludedPortals:
          type: array
          items:
            type: string
        allowedDomain:
          type: array
          items:
            type: string
        logo:
          $ref: '#/components/schemas/Image'
        showErrorPortals:
          type: boolean
        activeProducts:
          type: boolean
        language:
          type: string
      required:
        - id
        - name
        - scanAPIKey
        - includedWorkspaces
        - allowedDomain
        - showErrorPortals
        - activeProducts
        - language
    ListingScanUpdate:
      title: ListingScanUpdate
      type: object
      properties:
        name:
          type: string
        includedWorkspaces:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        excludedPortals:
          type: array
          items:
            type: string
        allowedDomain:
          type: array
          items:
            type: string
        logo:
          $ref: '#/components/schemas/ImageInsert'
        showErrorPortals:
          type: boolean
        activeProducts:
          type: boolean
        language:
          type: string
      required:
        - name
        - includedWorkspaces
        - allowedDomain
    ContentCampaign:
      title: ContentCampaign
      type: object
      description: ''
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        status:
          type: string
          enum:
            - active
            - done
            - planned
            - cancelled
            - draft
        startDate:
          type: string
          format: date
        startTime:
          type: string
          format: time
        endDate:
          type: string
          format: date
        endTime:
          type: string
          format: time
        workspace:
          $ref: '#/components/schemas/KeyValueInt'
        template:
          $ref: '#/components/schemas/KeyValueInt'
        contentElements:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        email:
          $ref: '#/components/schemas/ContentCampaignEmail'
        logo:
          $ref: '#/components/schemas/Image'
        privacyUrl:
          type: string
        imprintUrl:
          type: string
        targetAllLocations:
          type: boolean
        targetedMails:
          type: integer
        feedback:
          type: number
      required:
        - id
        - name
        - status
        - workspace
        - email
        - targetAllLocations
    ContentCampaignEmail:
      title: ContentCampaignEmail
      type: object
      properties:
        subject:
          type: string
        body:
          type: string
    ContentCampaignUpdate:
      title: ContentCampaignUpdate
      type: object
      properties:
        name:
          type: string
        workspaceId:
          type: integer
        startDate:
          type: string
          format: date
        startTime:
          type: string
          format: time
        endDate:
          type: string
          format: date
        endTime:
          type: string
          format: time
        status:
          type: string
          enum:
            - active
            - done
            - planned
            - cancelled
            - draft
        template:
          $ref: '#/components/schemas/KeyValueInt'
        contentElements:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        email:
          $ref: '#/components/schemas/ContentCampaignEmail'
        logo:
          $ref: '#/components/schemas/ImageInsert'
        privacyUrl:
          type: string
        imprintUrl:
          type: string
        targetAllLocations:
          type: boolean
      required:
        - name
        - workspaceId
        - status
        - targetAllLocations
    ContentCampaignInsert:
      title: ContentCampaignInsert
      type: object
      properties:
        name:
          type: string
        startDate:
          type: string
          format: date
        startTime:
          type: string
          format: time
        endDate:
          type: string
          format: date
        endTime:
          type: string
          format: time
        status:
          type: string
          enum:
            - planned
            - draft
        template:
          $ref: '#/components/schemas/KeyValueInt'
        contentElements:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        email:
          $ref: '#/components/schemas/ContentCampaignEmail'
        logo:
          $ref: '#/components/schemas/ImageInsert'
        privacyUrl:
          type: string
        imprintUrl:
          type: string
        targetAllLocations:
          type: boolean
      required:
        - name
        - status
        - targetAllLocations
    AvailableElement:
      title: AvailableElement
      type: object
      properties:
        id:
          type: integer
          format: int64
        value:
          type: string
        multiSelect:
          type: boolean
      required:
        - id
        - value
        - multiSelect
    ListContentCampaignAvailableElement:
      title: ListContentCampaignAvailableElement
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AvailableElement'
        total:
          type: integer
      required:
        - data
        - total
    ListContentCampaign:
      title: ListContentCampaign
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ContentCampaignOverview'
        total:
          type: integer
          format: int32
      required:
        - data
        - total
    ContentCampaignOverview:
      title: ContentCampaignOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        status:
          type: string
          enum:
            - active
            - done
            - planned
            - cancelled
            - draft
        startDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
        feedback:
          type: number
      required:
        - id
        - name
        - status
    ContentCampaignContact:
      title: ContentCampaignContact
      type: object
      properties:
        phone:
          type: string
        email:
          type: string
      required:
        - phone
        - email
    Coordinates:
      title: Coordinates
      type: object
      properties:
        lat:
          type: number
        lon:
          type: number
      required:
        - lat
        - lon
    ContentCampaignConfiguration:
      title: ContentCampaignConfiguration
      type: object
      properties:
        type:
          type: array
          items:
            type: string
        location:
          $ref: '#/components/schemas/KeyValueInt'
        address:
          $ref: '#/components/schemas/Address'
        contact:
          $ref: '#/components/schemas/ContentCampaignContact'
        logo:
          type: string
        privacyLink:
          type: string
        impressumLink:
          type: string
        valid:
          type: boolean
        context:
          $ref: '#/components/schemas/KeyValueString'
      required:
        - type
        - logo
        - valid
    OptimizationTask:
      title: OptimizationTask
      type: object
      properties:
        id:
          type: integer
        location:
          $ref: '#/components/schemas/KeyValueInt'
        startDate:
          type: string
          format: date
        processingDate:
          type: string
          format: date
        portal:
          deprecated: true
          type: string
          description: This field is deprecated and will be removed in a future release. Please use `portalName` instead.
        portalName:
          type: string
        status:
          type: string
          enum:
            - OPEN
            - PENDING
            - DONE
        ignore:
          type: boolean
        taskType:
          type: string
          enum:
            - ProfileLinking
            - ProfileLinkingManual
            - UnansweredReview
            - Duplicate
        context:
          $ref: '#/components/schemas/KeyValueInt'
        note:
          type: string
      required:
        - id
        - location
        - startDate
        - portal
        - portalName
        - status
        - ignore
        - taskType
        - context
    ListResultOptimizationTask:
      title: ListResultOptimizationTask
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OptimizationTask'
        total:
          type: integer
      required:
        - data
        - total
    OptimizationTaskUpdate:
      title: OptimizationTaskUpdate
      type: object
      properties:
        ignore:
          type: boolean
        note:
          type: string
        status:
          type: string
          enum:
            - OPEN
            - PENDING
            - DONE
      required:
        - ignore
        - status
    ListResultKeyValueDouble:
      title: ListResultKeyValueDouble
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueDouble'
        total:
          type: integer
      required:
        - data
        - total
    KeyValueDouble:
      title: KeyValueDouble
      type: object
      properties:
        key:
          type: string
        value:
          type: number
      required:
        - key
        - value
    GoogleAttributeGroup:
      title: GoogleAttributeGroup
      type: object
      properties:
        mainCategory:
          $ref: '#/components/schemas/KeyValueInt'
        countryId:
          type: string
        availableAttributes:
          type: integer
        locations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        bulkState:
          type: string
          enum:
            - PARTIAL
            - ALL
            - NONE
      required:
        - mainCategory
        - countryId
        - availableAttributes
        - locations
        - bulkState
    ListResultGoogleAttributeGroup:
      title: ListResultGoogleAttributeGroup
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/GoogleAttributeGroup'
        total:
          type: integer
      required:
        - data
        - total
    PacingGraphOverview:
      title: PacingGraphOverview
      type: object
      properties:
        subscriptionId:
          type: integer
          format: int64
        locationId:
          type: integer
          format: int64
        locationName:
          type: string
        companyName:
          type: string
        timeUsed:
          type: number
        fullfilled:
          type: number
        status:
          type: string
      required:
        - subscriptionId
        - locationId
        - locationName
        - companyName
        - timeUsed
    ListResultPacingGraph:
      title: ListResultPacingGraph
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PacingGraphOverview'
        total:
          type: integer
      required:
        - data
        - total
    TagInsert:
      title: TagInsert
      type: object
      properties:
        name:
          type: string
      required:
        - name
    TagOverview:
      title: TagOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
      required:
        - id
        - name
    ListResultTag:
      title: ListResultTag
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TagOverview'
        total:
          type: integer
      required:
        - data
        - total
    ContactUpdate:
      title: ContactUpdate
      type: object
      properties:
        salutation:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        eMails:
          type: array
          items:
            type: string
      required:
        - salutation
        - firstName
        - lastName
        - eMails
    ListResultContact:
      title: ListResultContact
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ContactOverview'
        total:
          type: integer
    ListResultActivity:
      title: ListResultActivity
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        total:
          type: integer
        sum:
          type: integer
        contextType:
          type: string
      required:
        - data
        - total
        - sum
        - contextType
    ListResultActivityChronology:
      title: ListResultActivityChronology
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ListResultActivity'
        total:
          type: integer
      required:
        - data
        - total
    MonitoringInsert:
      title: MonitoringInsert
      type: object
      properties:
        active:
          type: boolean
      required:
        - active
    ListResultPhone:
      title: ListResultPhone
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PhoneOverview'
        total:
          type: integer
      required:
        - data
        - total
    CallTrackingOverview:
      title: CallTrackingOverview
      type: object
      properties:
        id:
          type: integer
        subscription:
          $ref: ''
    PhoneUpdate:
      title: PhoneUpdate
      type: object
      properties:
        phoneType:
          type: string
          enum:
            - landline
            - mobile
            - fax
        phone:
          type: string
        tracked:
          type: boolean
      required:
        - phoneType
        - phone
        - tracked
    MainPhoneUpdate:
      title: MainPhoneUpdate
      type: object
      properties:
        phone:
          type: string
        tracked:
          type: boolean
        localPhone:
          type: string
        claimId:
          type: string
        pinVerification:
          type: string
      required:
        - phone
        - tracked
    AddressUpdate:
      title: AddressUpdate
      type: object
      properties:
        postCode:
          type: string
        country:
          type: string
        city:
          type: string
        street:
          type: string
        state:
          type: string
        house:
          type: string
        additive:
          type: string
        subLocality:
          type: string
          description: 'Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.'
        coordinate:
          $ref: '#/components/schemas/Coordinate'
        suppress:
          type: boolean
      required:
        - country
        - city
        - street
    SearchResultString:
      title: SearchResultString
      type: object
      properties:
        data:
          type: array
          items:
            type: string
        total:
          type: integer
          format: int32
      required:
        - data
        - total
    ExtendedKpi:
      title: ExtendedKpi
      type: object
      properties:
        key:
          type: string
        value:
          type: number
        periodicChange:
          type: number
        periodicImprovement:
          type: boolean
      required:
        - key
        - value
    Aggregated:
      title: Aggregated
      type: object
      properties:
        kpi:
          type: string
        unit:
          type: string
        sum:
          type: number
        periodicChange:
          type: number
        periodicImprovement:
          type: boolean
        extendedKpiSums:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedKpi'
        meta:
          type: array
          description: |-
            if available you will see here a deeper level of statistics, giving you more insights into the data.
            This field is only getting populated if you make the request with includeMetaData=true
          items:
            $ref: '#/components/schemas/MetaStat'
      required:
        - kpi
        - sum
    ListResultAggregated:
      title: ListResultAggregated
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Aggregated'
        total:
          type: integer
      required:
        - data
        - total
    ChronologyData:
      title: ChronologyData
      type: object
      properties:
        key:
          type: string
        value:
          type: number
        extendedKpiValues:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedKpi'
        meta:
          type: array
          description: |-
            if available you will see here a deeper level of statistics, giving you more insights into the data.
            This field is only getting populated if you make the request with includeMetaData=true
          items:
            $ref: '#/components/schemas/MetaStat'
      required:
        - key
        - value
    Chronology:
      title: Chronology
      type: object
      properties:
        kpi:
          type: string
        unit:
          type: string
        sum:
          type: number
        extendedKpiSums:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedKpi'
        data:
          type: array
          items:
            $ref: '#/components/schemas/ChronologyData'
        meta:
          type: array
          description: |-
            if available you will see here a deeper level of statistics, giving you more insights into the data.
            This field is only getting populated if you make the request with includeMetaData=true
          items:
            $ref: '#/components/schemas/MetaStat'
      required:
        - kpi
        - sum
    ListResultChronology:
      title: ListResultChronology
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Chronology'
        total:
          type: integer
      required:
        - data
        - total
    Kpi:
      title: Kpi
      type: object
      properties:
        kpi:
          type: string
        extendedKpiList:
          type: array
          items:
            type: string
      required:
        - kpi
    ListResultKpis:
      title: ListResultKpis
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Kpi'
        total:
          type: integer
      required:
        - data
        - total
    WorkspaceSettingInsert:
      title: WorkspaceSettingInsert
      type: object
      properties:
        imprintUrl:
          type: string
        privacyUrl:
          type: string
        termsConditionsUrl:
          type: string
        emailName:
          type: string
        emailSender:
          type: string
        emailFooter:
          type: string
        emailLogo:
          $ref: '#/components/schemas/ImageInsert'
        supportPhone:
          type: string
        supportEmail:
          type: string
        supportWebsite:
          $ref: '#/components/schemas/SupportSettingWebsite'
        language:
          type: string
          description: 'this language can be used as initial language for the user registrations, this means the user doest not need to set it after the registration finished '
          enum:
            - de
            - en
            - fr
            - es-EM
            - it
            - nl
            - pl
            - pt-PT
            - et
            - cs
            - ru
            - lv
        passwordMinLength:
          type: integer
        passwordUppercaseChar:
          type: integer
        passwordLowercaseChar:
          type: integer
        passwordDigits:
          type: integer
        passwordSpecialChar:
          type: integer
        defaultCountry:
          type: string
          x-stoplight:
            id: 5x3b3sof5dj9d
          description: |
            default country setting for this workspace, indicating where (most of the) locations are located. ISO 3166-1 alpha-2
      required:
        - imprintUrl
        - privacyUrl
        - emailName
        - emailSender
        - emailFooter
        - emailLogo
    CallsDetail:
      title: CallsDetail
      type: object
      properties:
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        caller:
          type: string
        calledTracked:
          type: string
        calledReal:
          type: string
        duration:
          type: integer
        status:
          type: integer
        subscriberId:
          type: string
        merchantName:
          type: string
        spam:
          type: boolean
        valid:
          type: boolean
      required:
        - start
        - caller
        - calledTracked
        - calledReal
        - duration
        - status
    BucketResult:
      type: object
      description: Aggregated benchmark data.
      properties:
        a:
          type: number
          description: Upper bound value for bucket A.
          example: 570
        b:
          type: number
          description: Upper bound value for bucket B.
          example: 200
        c:
          type: number
          description: Upper bound value for bucket C.
          example: 86
        d:
          type: number
          description: Upper bound value for bucket D.
          example: 41
        e:
          type: number
          description: Upper bound value for bucket E.
          example: 10
        f:
          type: number
          description: Upper bound value for bucket F.
          example: 3
        min:
          type: number
          description: Minimum value of the benchmark.
          example: 0
        median:
          type: number
          description: Median value of the benchmark.
          example: 67
      required:
        - max
        - a
        - b
        - c
        - d
        - e
        - f
        - min
        - median
    AnalyticsResults:
      title: AnalyticsResults
      type: object
      properties:
        kpi:
          type: string
          example: "conversion"
          description: Requested Key Performance Indicator (KPI).
        score:
          type: string
          example: "A"
          description: The score represents a qualitative evaluation of the selection KPI's performance over the given time period. It is derived from the boundaries of the data buckets that compose the benchmark. An average value of the buckets and the Context Space KPI's performance is calculated, and the score is determined based on the bucket it falls into. 'a' represents the highest-performing bucket, while 'f' represents the lowest.
        numberOfSamples:
          type: integer
          format: int64
          example: 52
          description: The number of samples in this benchmark refers to the total count of subscriptions being analyzed within the selected parameters. A larger sample size provides a more accurate reflection of overall performance.
        sum:
          $ref: '#/components/schemas/AnalyticsResultsSum'
        data:
          type: array
          items:
            $ref: '#/components/schemas/AnalyticsResultsData'
      required:
        - kpi
        - numberOfSamples
    AnalyticsResultsSum:
      title: AnalyticsResultsSum
      type: object
      properties:
        buckets:
          $ref: '#/components/schemas/BucketResult'
        value:
          type: integer
          format: int64
          description: The selected locations performance throughout the period.
          example: 66
      required:
        - buckets
        - value
    AnalyticsResultsData:
      title: AnalyticsResultsData
      type: object
      description: Benchmarks calculated on a daily basis throughout the period.
      properties:
        key:
          type: string
          description: Date for the benchmark data.
          example: "2024-09-10"
        calcType:
          type: string
          description: The calculation type.
          example: "empirical"
        buckets:
          $ref: '#/components/schemas/BucketResult'
        value:
          type: integer
          format: int64
          description: The selected locations performance on this date.
          example: 341
        kpi:
          type: string
          description: The kpi where grouped for.
          example: contact
      required:
        - key
        - buckets
        - value
    ListResultCallsDetail:
      title: ListResultCallsDetail
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CallsDetail'
        total:
          type: integer
      required:
        - data
        - total
    KeyValueIntNumber:
      title: KeyValueIntNumber
      type: object
      properties:
        key:
          type: string
        value:
          type: integer
          format: int64
      required:
        - key
        - value
    ListResultKeyValueIntNumber:
      title: ListResultKeyValueIntNumber
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueIntNumber'
        total:
          type: integer
      required:
        - data
        - total
    FinishClaim:
      title: FinishClaim
      type: object
      properties:
        pinVerification:
          type: string
      required:
        - pinVerification
    StartClaim:
      title: StartClaim
      type: object
      properties:
        claimType:
          type: string
          enum:
            - phone
        locationId:
          type: integer
          format: int64
        phone:
          type: string
        dataSetId:
          type: string
        externalProviderId:
          type: string
      required:
        - claimType
    Workspace:
      title: Workspace
      description: 'This model is used to represent a workspace, it has parentId that references another workspace, name and shortname that describe the workspace and an optional custom fields company property that is used to configure certain settings for all the companies under this workspace.'
      type: object
      properties:
        id:
          type: integer
        parentId:
          type: integer
        name:
          type: string
        shortName:
          type: string
        customFieldsCompany:
          $ref: '#/components/schemas/SettingsList'
        defaultCountry:
          type: string
          x-stoplight:
            id: y7db4d2qdksrq
          description: |
            default country setting for this workspace, indicating where (most of the) locations are located. ISO 3166-1 alpha-2
      required:
        - parentId
        - name
        - shortName
    ListResultWorkspace:
      title: ListResultWorkspace
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Workspace'
        total:
          type: integer
    ForecastStats:
      title: ForecastStats
      type: object
      properties:
        categoryName:
          type: string
        location:
          type: string
        leadCosts:
          type: number
          format: double
        categoryLeadCosts:
          type: number
          format: double
        leads:
          type: number
    SearchResultForecastStats:
      title: SearchResultForecastStats
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ForecastStats'
        total:
          type: integer
    SubscriptionMonoSync:
      title: SubscriptionMonoSync
      type: object
      properties:
        siteId:
          type: string
        accountId:
          type: string
      required:
        - siteId
        - accountId
    MonoSyncOverview:
      title: MonoSyncOverview
      type: object
      properties:
        siteId:
          type: string
        accountId:
          type: string
    OpeningHoursInfo:
      title: OpeningHoursInfo
      type: object
      description: 'this model return the  timeZone plus timeIntervals of the correct timezone  '
      properties:
        timeIntervals:
          type: array
          items:
            $ref: '#/components/schemas/DayInterval'
        timeZone:
          type: string
    SocialReviewCommentUpdate:
      title: SocialReviewCommentUpdate
      type: object
      description: ''
      properties:
        comment:
          type: string
      required:
        - comment
    KeyValueLocation:
      title: KeyValueLocation
      type: object
      properties:
        key:
          type: string
        value:
          type: string
        address:
          $ref: '#/components/schemas/AddressOverview'
        externalId:
          type: string
      required:
        - key
        - value
    ListResultSegment:
      title: ListResultSegment
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SegmentOverview'
        total:
          type: integer
      required:
        - data
        - total
    SegmentSocialInsert:
      title: SegmentSocialInsert
      type: object
      description: ''
      properties:
        name:
          type: string
        adCategory:
          type: string
          enum:
            - Housing
            - Credit
            - Employment
          description: |-
            When creating a segment that includes ads that offer credit, employment or housing opportunities, you must choose the category that best describes your ads. Selecting a Special Ad Category will restrict available targeting options.

            Age targeting is not allowed. Minimum age must be 18. Maximum age must be 65+.
            Gender targeting is not allowed.
            Vertical targeting is not allowed.
            Affinity targeting is not allowed.
            Geotargeting by zip code is not allowed.
            Point and Radius geotargets must have a radius of at least 15 miles.
        targetTypeId:
          type: integer
          description: |-
            use this end point to get the target type
            /reachEnhancement/segment/social/target-types
        facebookUrl:
          type: string
      required:
        - name
        - targetTypeId
        - facebookUrl
    SegmentSocial:
      title: SegmentSocial
      type: object
      properties:
        name:
          type: string
        targetType:
          $ref: '#/components/schemas/KeyValueInt'
        adCategory:
          type: string
          enum:
            - Housing
            - Credit
            - Employment
        segmentStatus:
          type: string
          enum:
            - active
            - paused_pending
            - paused
            - active_pending
            - failed
        segmentMessage:
          type: string
          description: detailled information in case a segment failed
        facebookUrl:
          type: string
      required:
        - name
        - segmentStatus
        - facebookUrl
    SegmentSocialUpdate:
      title: SegmentSocialUpdate
      type: object
      properties:
        name:
          type: string
      required:
        - name
    TargetingLocation:
      title: TargetingLocation
      type: object
      properties:
        excludedLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        includedLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        radius:
          type: integer
    SegmentAd:
      title: SegmentAd
      type: object
      properties:
        id:
          type: integer
          format: int64
        headline:
          type: string
        subtitle:
          type: string
        description:
          type: string
        images:
          type: array
          items:
            $ref: '#/components/schemas/Image'
        text:
          type: string
        destinationUrl:
          type: string
        callToAction:
          type: string
          enum:
            - learn more
            - open link
            - contact us
            - buy now
            - book now
            - donate now
            - shop now
        addCardProfilePicture:
          type: boolean
          description: Add a card at the end with your page profile picture.
        carouselCards:
          type: array
          items:
            $ref: '#/components/schemas/CarouselCard'
      required:
        - id
    Demographic:
      title: Demographic
      type: object
      properties:
        minAge:
          type: integer
        maxAge:
          type: integer
        gender:
          type: string
          enum:
            - Male
            - Female
            - All
      required:
        - gender
    ListResultInterests:
      title: ListResultInterests
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/interest'
        total:
          type: integer
      required:
        - data
        - total
    DemographicUpdate:
      title: DemographicUpdate
      type: object
      properties:
        minAge:
          type: integer
        maxAge:
          type: integer
        gender:
          type: string
          enum:
            - Male
            - Female
            - All
    TargetingLocationUpdate:
      title: TargetingLocationUpdate
      type: object
      properties:
        'excludedLocations ':
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        includedLocations:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
        radius:
          type: integer
    ListResultVertical:
      title: ListResultVertical
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueInt'
        total:
          type: integer
      required:
        - data
        - total
    interest:
      title: interest
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        parentName:
          type: array
          items:
            type: string
    SocialAdInterest:
      title: SocialAdInterest
      type: object
      properties:
        interests:
          type: array
          items:
            $ref: '#/components/schemas/interest'
    ListResultAd:
      title: ListResultAd
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SegmentAdOverview'
        total:
          type: integer
      required:
        - data
        - total
    SegmentAdOverview:
      title: SegmentAdOverview
      type: object
      properties:
        id:
          type: integer
          format: int64
        headline:
          type: string
        description:
          type: string
        images:
          type: array
          items:
            $ref: '#/components/schemas/Image'
      required:
        - id
        - images
    SegmentAdInsert:
      title: SegmentAdInsert
      type: object
      x-examples:
        example-1:
          headLine: string
          subtitle: string
          description: string
          previewUrl: string
          Images:
            - imageType: GoogleProfilImage
              fileType: jpg
              data: string
              url: string
      properties:
        headline:
          type: string
          description: ''
        subtitle:
          type: string
        description:
          type: string
        images:
          type: array
          items:
            $ref: '#/components/schemas/ImageInsert'
        text:
          type: string
        destinationUrl:
          type: string
        callToAction:
          type: string
          enum:
            - learn more
            - open link
            - contact us
            - buy now
            - book now
            - donate now
            - shop now
        carouselCards:
          type: array
          description: For Carousel Ad a min of 2 carouselCardInsert is needed
          items:
            $ref: '#/components/schemas/CarouselCardInsert'
        addCardProfilePicture:
          type: boolean
          description: Add a card at the end with your page profile picture
    SegmentAdUpdate:
      title: SegmentAdUpdate
      type: object
      properties:
        headline:
          type: string
        subtitle:
          type: string
        description:
          type: string
        images:
          type: array
          items:
            $ref: '#/components/schemas/ImageInsert'
        text:
          type: string
        destinationUrl:
          type: string
        callToAction:
          type: string
          enum:
            - learn more
            - open link
            - contact us
            - buy now
            - book now
            - donate now
            - shop now
        carouselCards:
          type: array
          items:
            $ref: '#/components/schemas/CarouselCardUpdate'
        addCardProfilePicture:
          type: boolean
          description: Add a card at the end with your page profile picture.
    SocialAdInterestUpdate:
      title: SocialAdInterestUpdate
      type: object
      x-examples: {}
      properties:
        interests:
          type: array
          items:
            $ref: '#/components/schemas/interest'
    ListResultAdvanceTargeting:
      title: ListResultAdvanceTargeting
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AdvanceTargetingOverview'
        total:
          type: integer
      required:
        - data
        - total
    AdvanceTargetingOverview:
      title: AdvanceTargetingOverview
      type: object
      properties:
        targeting:
          $ref: '#/components/schemas/KeyValueInt'
        matchType:
          type: string
      required:
        - targeting
    AdvanceTargeting:
      title: AdvanceTargeting
      type: object
      properties:
        targeting:
          $ref: '#/components/schemas/KeyValueInt'
        matchType:
          type: string
      required:
        - targeting
    SubscriptionReachEnhancementSocial:
      title: SubscriptionReachEnhancementSocial
      type: object
      properties:
        name:
          type: string
        radius:
          type: integer
        targetTypeId:
          type: integer
        facebookUrl:
          type: string
        adCategory:
          type: string
          description: ''
          enum:
            - Housing
            - Credit
            - Employment
        budgetTarget:
          type: integer
        budgetTargetType:
          type: string
          enum:
            - Call
            - Click
            - Interactions
            - Euro
      required:
        - name
        - radius
        - targetTypeId
        - facebookUrl
        - budgetTarget
        - budgetTargetType
    SupportSettingUpdate:
      title: SupportSettingUpdate
      type: object
      properties:
        supportEmail:
          type: string
        supportPhone:
          type: string
        supportWebsite:
          $ref: '#/components/schemas/SupportSettingWebsite'
    SupportSetting:
      title: SupportSetting
      type: object
      properties:
        supportEmail:
          type: string
          description: support email for the workspace
        supportPhone:
          type: string
          description: support phone number for this workspace
        supportWebsite:
          $ref: '#/components/schemas/SupportSettingWebsite'
    SupportSettingWebsite:
      title: SupportSettingWebsite
      type: object
      properties:
        displayName:
          type: string
          description: name that will identify the support contact website
        url:
          type: string
          description: website url where users of this workspace can get support
    SelfServiceSetting:
      title: SelfServiceSetting
      type: object
      properties:
        language:
          type: string
          enum:
            - de
            - en
            - fr
            - es-EM
            - it
            - nl
            - pl
            - pt-PT
            - et
            - cs
            - ru
            - lv
          description: 'this language can be used as initial language for the user registrations, this means the user doest not need to set it after the registration finished '
    GMBVerificationStatus:
      title: GMBVerificationStatus
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        method:
          type: string
        verifyResponse:
          type: string
        verified:
          type: boolean
        gmbLocation:
          type: string
        gmbStatus:
          type: string
    CarouselCardInsert:
      title: CarouselCardInsert
      type: object
      x-examples:
        example-1:
          value:
            destinationUrl: string
            description: string
            headline: string
            images:
              imageType: GoogleProfilImage
              fileType: jpg
              data: string
              url: string
      properties:
        destinationUrl:
          type: string
        description:
          type: string
        headline:
          type: string
        image:
          $ref: '#/components/schemas/ImageInsert'
      required:
        - destinationUrl
        - image
    CarouselCard:
      title: CarouselCard
      type: object
      properties:
        destinationUrl:
          type: string
        description:
          type: string
        headline:
          type: string
        images:
          $ref: '#/components/schemas/Image'
      required:
        - destinationUrl
        - images
    CarouselCardUpdate:
      title: CarouselCardUpdate
      type: object
      properties:
        destinationUrl:
          type: string
        description:
          type: string
        headline:
          type: string
        image:
          $ref: '#/components/schemas/ImageInsert'
      required:
        - destinationUrl
        - image
    GMBAuthCallbackResponse:
      title: GMBAuthCallbackResponse
      type: object
      properties:
        url:
          type: string
          nullable: true
        success:
          type: string
          nullable: true
    MetaStat:
      title: MetaStat
      type: object
      properties:
        key:
          type: string
        value:
          type: number
        type:
          type: string
      required:
        - key
        - value
        - type
      description: meta information for statistics
    DynamicVideo:
      title: DynamicVideo
      type: object
      properties:
        id:
          type: integer
          description: unique (subscription)id of the dynamic video
          format: int64
        videoUrl:
          type: string
          description: video url will be provided as soon as it is ready
        generatedAt:
          type: string
          format: date-time
          description: indicates at which timestamp the video has been generated the last time
        settings:
          type: array
          description: with values enriched settings of this video project
          items:
            $ref: '#/components/schemas/Settings'
        warnings:
          type: array
          description: |
            warningst that indicate for example issues with youtube addon
          items:
            type: string
        errors:
          type: array
          description: 'in case the the last attempt of generating a new video failed, you will see some error messages'
          items:
            type: string
        youtube:
          $ref: '#/components/schemas/YoutubeVideo'
        generateInProgress:
          type: boolean
          description: indicates if a video generation is currently in progress. As long as the video generation is in progress you cant change settings or an additional regeneration.
      required:
        - id
        - generateInProgress
    DynamicVideoUpdate:
      title: DynamicVideoUpdate
      type: object
      properties:
        settingValues:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
    SubscriptionDynamicVideo:
      title: SubscriptionDynamicVideo
      type: object
      properties:
        settingValues:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueString'
    KeyValueLanguage:
      title: KeyValueLanguage
      type: object
      properties:
        lang:
          type: string
          enum:
            - de
            - en
            - fr
            - es-EM
            - it
            - nl
            - pl
            - pt-PT
            - et
            - cs
            - ru
            - lv
        value:
          type: string
      required:
        - lang
        - value
      description: 'This model can be used for saving data on different languages on a KeyValue format, where key is an enum with language codes and the value as the string in the specific language. '
    SubscriptionReachEnhancementLocalCampaigns:
      title: SubscriptionReachEnhancementLocalCampaigns
      type: object
      description: 'Set this part in case the licence you subscribe to contains a local campaign (reach enhancement type). This Reach Enhancement Type represents Google Ads Local Campaigns. They are advertising campaigns that promote business locations. The radius represents the distance in KM, around the location you subscribe to, that the ads will be served in. Budget Target is the amount in Euros that you will spend, the period represents the term in which you will spend the given budget target, it can be a Daily or a Monthly budget. Delivery Method represents how Google will spend the budget, currently only Standard method allowed, that means the budget will be spread evenly across the whole campaign. The location source type represents from where Google will get the locations that you want to promote, right now only GMB is supported. Call clicks and Driving directions are optimization goals for the campaign, at least one of them must be true. Roas(Return on ad spend) is an optional metric goal that you want to set, e.g. if you want a 300% roas, set this to 3.0, it ranges from 0.01 to 1000.0.'
      properties:
        radius:
          type: integer
          format: int32
        budgetTarget:
          type: integer
          format: int32
        period:
          type: string
          enum:
            - Daily
            - Monthly
          default: Daily
        deliveryMethod:
          type: string
          enum:
            - Standard
          default: Standard
        name:
          type: string
        locationSourceType:
          type: string
          enum:
            - GMB
          default: GMB
        callClicks:
          type: boolean
        drivingDirections:
          type: boolean
        roas:
          type: number
          format: double
      required:
        - name
        - callClicks
        - drivingDirections
        - locationSourceType
        - radius
        - budgetTarget
        - period
        - deliveryMethod
    ReachEnhancementLocalCampaigns:
      title: ReachEnhancementLocalCampaigns
      type: object
      description: 'Reach Enhancement subscription with a local campaign type. This Reach Enhancement Type represents Google Ads Local Campaigns. They are advertising campaigns that promote business locations. The radius represents the distance in KM, around the location you subscribe to, that the ads will be served in. The location source type represents from where Google will get the locations that you want to promote, right now only GMB is supported. Call clicks and Driving directions are optimization goals for the campaign, at least one of them must be true. Roas(Return on ad spend) is an optional metric goal that you want to set, e.g. if you want a 300% roas, set this to 3.0, it ranges from 0.01 to 1000.0. Languages is an optional type of targeting based on a set of language codes according to ISO 639-1. BE AWARE! This targeting does not translate your ads to the languages you target, the ads will be shown in the language they were created. The targeting is to focus on users with this languages as preference on their devices. By default the campaigns don''t have this type of targeting so they will focus on all languages without preferences. Only one set of languages can be set for a single campaign.'
      properties:
        name:
          type: string
        locationSourceType:
          type: string
          enum:
            - GMB
          default: GMB
        callClicks:
          type: boolean
        drivingDirections:
          type: boolean
        roas:
          type: number
          format: double
        radius:
          type: integer
          format: int32
        languages:
          type: array
          minItems: 1
          maxItems: 9
          items:
            description: ISO 639-1 language codes
            type: string
            enum:
              - de
              - en
              - fr
              - es
              - it
              - nl
              - pl
              - pt
              - et
      required:
        - name
        - callClicks
        - drivingDirections
        - locationSourceType
        - radius
    ReachEnhancementLocalCampaignsUpdate:
      title: ReachEnhancementLocalCampaignsUpdate
      type: object
      description: 'Reach Enhancement subscription with a local campaign mutable fields. This Reach Enhancement Type represents Google Ads Local Campaigns. They are advertising campaigns that promote business locations. The radius represents the distance in KM, around the location you subscribe to, that the ads will be served in. The location source type represents from where Google will get the locations that you want to promote, right now only GMB is supported, you can''t change the location source type after creating the campaign. Call clicks and Driving directions are optimization goals for the campaign, at least one of them must be true. Roas(Return on ad spend) is an optional metric goal that you want to set, e.g. if you want a 300% roas, set this to 3.0, it ranges from 0.01 to 1000.0.'
      properties:
        name:
          type: string
        locationSourceType:
          type: string
          readOnly: true
          enum:
            - GMB
          default: GMB
        callClicks:
          type: boolean
        drivingDirections:
          type: boolean
        roas:
          type: number
          format: double
        radius:
          type: integer
          format: int32
      required:
        - name
        - locationSourceType
        - callClicks
        - drivingDirections
        - radius
    ReachEnhancementBudget:
      title: ReachEnhancementBudget
      type: object
      properties:
        id:
          type: integer
          format: int64
        budgetTarget:
          type: integer
          format: int32
        budgetTargetType:
          type: string
          enum:
            - Call
            - Click
            - Interactions
            - Euro
        budgetPeriod:
          type: string
          enum:
            - Daily
            - Monthly
        budgetDeliveryMethod:
          type: string
          enum:
            - Standard
      required:
        - id
        - budgetTarget
        - budgetTargetType
        - budgetPeriod
        - budgetDeliveryMethod
      description: 'Budget model overview for the Reach Enhancement Product. Depending on the Reach Enhancement subtype, some attributes and values might not be supported or may have special requirements. Budget target is the amount that you will spend. Budget target type gives units to the budget target, it can be Call, Click, Interactions, or Euro. The period represents the term in which you will spend the given budget target, it can be a Daily or a Monthly budget. Delivery Method represents how the budget will be spent, currently only Standard method allowed, that means the budget will be spread evenly across the whole campaign. Local Campaigns only support Euro as a budget target type, and budgetTarget must be > 0 for Daily period or > 30 for Monthly period. Social Ad and Sea don''t support period and delivery method attributes currently.'
    ReachEnhancementBudgetUpdate:
      title: ReachEnhancementBudgetUpdate
      type: object
      properties:
        budgetTarget:
          type: integer
          format: int32
      required:
        - budgetTarget
      description: Budget Update model for the Reach Enhancement Product. Budget target is the amount that you will spend. For Local Campaigns budgetTarget must be > 0 for Daily period or > 30 for Monthly period.
    LocalCampaignsSegment:
      type: object
      properties:
        id:
          type: integer
          format: int64
          readOnly: true
        subscriptionReachEnhancementId:
          type: integer
          format: int64
          readOnly: true
        name:
          type: string
        segmentStatus:
          type: string
          enum:
            - active
            - paused_pending
            - paused
            - active_pending
            - failed
        segmentMessage:
          type: string
      required:
        - id
        - subscriptionReachEnhancementId
        - name
        - segmentStatus
      title: ''
      description: 'This is the overview model for a segment or Ad Group in the Local Campaigns subtype of Reach Enhancement product. Ad groups are a way or grouping ads under a same place identified by a name. Subscription Reach Enhancement Id represents the id to which the ad group belongs, ad group names inside a single campaign are unique. The status identifies if the ad group is running or not, and the message attribute is used for any particular errors that might happen.'
    LocalCampaignsSegmentInsert:
      type: object
      properties:
        name:
          type: string
      required:
        - name
      description: This is the model to create a segment or Ad Group in the Local Campaigns subtype of Reach Enhancement product. Ad groups are a way or grouping ads under a same place identified by a name. Ad group names inside a single campaign are unique.
    LocalCampaignsSegmentUpdate:
      type: object
      properties:
        name:
          type: string
      required:
        - name
      description: This is the model to update a segment or Ad Group in the Local Campaigns subtype of Reach Enhancement product. Ad groups are a way or grouping ads under a same place identified by a name. Ad group names inside a single campaign are unique.
    LocalAd:
      type: object
      properties:
        id:
          type: integer
          format: int64
          readOnly: true
        segmentId:
          type: integer
          format: int64
          readOnly: true
        urls:
          type: array
          items:
            type: string
        headlines:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            minLength: 1
            maxLength: 30
        descriptions:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            minLength: 1
            maxLength: 60
        callToActions:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            minLength: 1
            maxLength: 11
        marketingImages:
          type: array
          minItems: 1
          maxItems: 20
          items:
            $ref: '#/components/schemas/Image'
        logoImages:
          type: array
          minItems: 1
          maxItems: 5
          items:
            $ref: '#/components/schemas/Image'
        videos:
          type: array
          minItems: 1
          maxItems: 20
          items:
            type: string
      required:
        - id
        - segmentId
        - urls
        - headlines
        - descriptions
        - callToActions
        - marketingImages
        - logoImages
        - videos
      description: 'This a overview model for local ads(Ad Group Ads) on local campaigns. Local Ads are a type of ads that have images, text and video assets. This ads use 3 different types of Images (LocalAdMarketingImages, LocalAdSquareMarketingImages and LocalAdLogoImages), it is required at least one image of the LocalAdLogoImage type in the logo images array and at least one image of the LocalAdMarketingImages type in the marketing images array. LocalAdMarketingImages images must have a 1.91:1 ratio with a 1% tolerance and must be at least 600X314. LocalAdSquareMarketingImages images must have a 1:1 ratio with a 1% tolerance and must be at least 314X314. LocalAdLogoImagesimages must have a 1:1 ratio with a 1% tolerance and must be at least 116X116. SegmentId represents the segment or ad group to which the particular ad belongs to, urls is a list of urls to which the ad will redirect. Headlines, descriptions and call to actions are the text assets that will be shown on the Ad. Videos is a list of youtube urls, they must have one of the following structures to be accepted: "https://www.youtube.com/watch?v=", "https://y2u.be/", "https://youtu.be/".'
    LocalAdInsert:
      type: object
      properties:
        urls:
          type: array
          minItems: 1
          items:
            type: string
        headlines:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            minLength: 1
            maxLength: 30
        descriptions:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            minLength: 1
            maxLength: 60
        callToActions:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            minLength: 1
            maxLength: 11
        marketingImages:
          type: array
          minItems: 1
          maxItems: 20
          items:
            $ref: '#/components/schemas/ImageInsert'
        logoImages:
          type: array
          minItems: 1
          maxItems: 5
          items:
            $ref: '#/components/schemas/ImageInsert'
        videos:
          type: array
          minItems: 1
          maxItems: 20
          items:
            type: string
      required:
        - urls
        - headlines
        - descriptions
        - callToActions
        - marketingImages
        - logoImages
        - videos
      description: 'This a model to create an ad for a specific segment(ad group) on a local campaign. Local Ads are a type of ads that have images, text and video assets. This ads use 3 different types of Images (LocalAdMarketingImages, LocalAdSquareMarketingImages and LocalAdLogoImages), it is required at least one image of the LocalAdLogoImage type in the logo images array and at least one image of the LocalAdMarketingImages type in the marketing images array. LocalAdMarketingImages images must have a 1.91:1 ratio with a 1% tolerance and must be at least 600X314. LocalAdSquareMarketingImages images must have a 1:1 ratio with a 1% tolerance and must be at least 314X314. LocalAdLogoImagesimages must have a 1:1 ratio with a 1% tolerance and must be at least 116X116. Urls is a list of urls to which the ad will redirect. Headlines, descriptions and call to actions are the text assets that will be shown on the Ad. Videos is a list of youtube urls, they must have one of the following structures to be accepted: "https://www.youtube.com/watch?v=", "https://y2u.be/", "https://youtu.be/".'
    LocalAdUpdate:
      type: object
      properties:
        urls:
          type: array
          minItems: 1
          items:
            type: string
        headlines:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            minLength: 1
            maxLength: 30
        descriptions:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            minLength: 1
            maxLength: 60
        callToActions:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            minLength: 1
            maxLength: 11
        marketingImages:
          type: array
          minItems: 1
          maxItems: 20
          items:
            $ref: '#/components/schemas/ImageInsert'
        logoImages:
          type: array
          minItems: 1
          maxItems: 5
          items:
            $ref: '#/components/schemas/ImageInsert'
        videos:
          type: array
          minItems: 1
          maxItems: 20
          items:
            type: string
      required:
        - urls
        - headlines
        - descriptions
        - callToActions
        - marketingImages
        - logoImages
        - videos
      description: 'This a model to update an ad on a local campaign. Local Ads are a type of ads that have images, text and video assets. This ads use 3 different types of Images (LocalAdMarketingImages, LocalAdSquareMarketingImages and LocalAdLogoImages), it is required at least one image of the LocalAdLogoImage type in the logo images array and at least one image of the LocalAdMarketingImages type in the marketing images array. LocalAdMarketingImages images must have a 1.91:1 ratio with a 1% tolerance and must be at least 600X314. LocalAdSquareMarketingImages images must have a 1:1 ratio with a 1% tolerance and must be at least 314X314. LocalAdLogoImagesimages must have a 1:1 ratio with a 1% tolerance and must be at least 116X116. Urls is a list of urls to which the ad will redirect. Headlines, descriptions and call to actions are the text assets that will be shown on the Ad. Videos is a list of youtube urls, they must have one of the following structures to be accepted: "https://www.youtube.com/watch?v=", "https://y2u.be/", "https://youtu.be/".'
    LocalAdList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/LocalAd'
        total:
          type: integer
          format: int32
      required:
        - data
        - total
      description: 'This an overview model for a list of local ads inside a specific segment(ad group) on a local campaign. Local Ads are a type of ads that have images, text and video assets. This ads use 3 different types of Images (LocalAdMarketingImages, LocalAdSquareMarketingImages and LocalAdLogoImages), it is required at least one image of the LocalAdLogoImage type in the logo images array and at least one image of the LocalAdMarketingImages type in the marketing images array. LocalAdMarketingImages images must have a 1.91:1 ratio with a 1% tolerance and must be at least 600X314. LocalAdSquareMarketingImages images must have a 1:1 ratio with a 1% tolerance and must be at least 314X314. LocalAdLogoImagesimages must have a 1:1 ratio with a 1% tolerance and must be at least 116X116. Urls is a list of urls to which the ad will redirect. Headlines, descriptions and call to actions are the text assets that will be shown on the Ad. Videos is a list of youtube urls, they must have one of the following structures to be accepted: "https://www.youtube.com/watch?v=", "https://y2u.be/", "https://youtu.be/".'
    Criterion:
      type: object
      properties:
        id:
          type: integer
          format: int64
          readOnly: true
        subscriptionReachEnhancementId:
          type: integer
          format: int64
          readOnly: true
        negative:
          type: boolean
        criterionType:
          type: string
          enum:
            - Proximity
            - Language
      required:
        - id
        - subscriptionReachEnhancementId
        - negative
        - criterionType
      description: 'This is a base model for all the targeting options supported for Local Campaigns. Subscription Reach Enhancement represents the campaign to which the targeting criterion belongs to. Negative is an attribute used to include or exclude the targets. Criterion Type establishes the type of targeting that the campaign has, currently we have Proximity targeting, used on campaigns as a radius, and language targeting.'
    LanguageCriterion:
      allOf:
        - $ref: '#/components/schemas/Criterion'
      properties:
        languages:
          type: array
          minItems: 1
          maxItems: 9
          items:
            description: ISO 639-1
            type: string
            enum:
              - de
              - en
              - fr
              - es
              - it
              - nl
              - pl
              - pt
              - et
      required:
        - languages
      type: object
      description: 'This is an overview model for the language targeting supported for Local Campaigns. Subscription Reach Enhancement represents the campaign to which the targeting criterion belongs to. Negative is an attribute used to include or exclude the targets. Criterion Type establishes the type of targeting that the campaign has, currently we have Proximity targeting, used on campaigns as a radius, and language targeting. Languages is a set of language codes according to ISO 639-1. BE AWARE! This targeting does not translate your ads to the languages you target, the ads will be shown in the language they were created. The targeting is to focus on users with this languages as preference on their devices. By default the campaigns don''t have this type of targeting so they will focus on all languages without preferences. Only one set of languages can be set for a single campaign.'
    LanguageCriterionInsert:
      properties:
        languages:
          type: array
          minItems: 1
          maxItems: 9
          items:
            description: ISO 639-1
            type: string
            enum:
              - de
              - en
              - fr
              - es
              - it
              - nl
              - pl
              - pt
              - et
      required:
        - languages
      type: object
      description: 'This is model to add language to a local campaign. Languages is a set of language codes according to ISO 639-1. BE AWARE! This targeting does not translate your ads to the languages you target, the ads will be shown in the language they were created. The targeting is to focus on users with this languages as preference on their devices. By default the campaigns don''t have this type of targeting so they will focus on all languages without preferences. Only one set of languages can be set for a single campaign.'
    LanguageCriterionUpdate:
      properties:
        languages:
          type: array
          minItems: 1
          maxItems: 9
          items:
            description: ISO 639-1
            type: string
            enum:
              - de
              - en
              - fr
              - es
              - it
              - nl
              - pl
              - pt
              - et
      required:
        - languages
      type: object
      description: 'This is model to update the languages that a local campaign targets. Languages is a set of language codes according to ISO 639-1. BE AWARE! This targeting does not translate your ads to the languages you target, the ads will be shown in the language they were created. The targeting is to focus on users with this languages as preference on their devices. By default the campaigns don''t have this type of targeting so they will focus on all languages without preferences. Only one set of languages can be set for a single campaign.'
    CustomFieldInsert:
      title: CustomFieldInsert
      type: object
      description: Information for inserting a new custom field
      properties:
        name:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueLanguage'
        type:
          type: string
          enum:
            - text
            - int
            - numeric
            - boolean
            - image
            - 'text[]'
            - select
            - multi_select
            - url
            - html
            - color
        allowedValues:
          type: array
          items:
            type: string
        required:
          type: string
          enum:
            - 'true'
            - 'false'
        url:
          type: string
        parentKey:
          type: string
        httpAction:
          type: string
      required:
        - name
        - type
        - required
    CustomFieldUpdate:
      title: CustomFieldUpdate
      type: object
      description: Information for updateing a custom field.
      properties:
        name:
          type: array
          items:
            $ref: '#/components/schemas/KeyValueLanguage'
        required:
          type: string
          enum:
            - 'true'
            - 'false'
      required:
        - name
        - required
    YoutubeVideo:
      title: YoutubeVideo
      type: object
      properties:
        youtubeId:
          type: string
          description: youtube video id
        title:
          type: string
          description: title of the youtube video
        description:
          type: string
          description: description of the youtube video
        url:
          type: string
          description: url of the youtube video
        standardChannel:
          $ref: '#/components/schemas/YoutubeChannel'
        customChannel:
          $ref: '#/components/schemas/YoutubeChannel'
        privacyLevel:
          type: string
          enum:
            - public
            - private
            - unlisted
          description: privacy level defined for the YouTube video.
        youtubeUpload:
          type: boolean
          x-stoplight:
            id: lwiooxk65v4vv
          description: 'if this value is true you can''t use the PUT Youtube Video Action (update , upload) the video is getting pushed or updated on youtube at the moment'
      required:
        - youtubeUpload
    YoutubeVideoUpdate:
      title: YoutubeVideoUpdate
      type: object
      x-examples: {}
      properties:
        title:
          type: string
          description: title of the youtube video
        description:
          type: string
          description: description of the youtube video
        customChannel:
          $ref: '#/components/schemas/YoutubeChannel'
        privacyLevel:
          type: string
          enum:
            - public
            - private
            - unlisted
          description: 'privacy level defined for the YouTube video, public will be the default'
    Meinungsmeister:
      title: Meinungsmeister
      type: object
      description: |
        Status:
        "new" ->  when the order is first created this will be  the automated status
        "clarification" -> when the order details are validated
        "in_progress" -> when the validation is finish successfully and the order is in the process getting ready to get delivered
        "cancelled" -> when the order is cancelled  from the user
        "completed" -> with the order is delivered successfully
      properties:
        id:
          type: integer
          format: int64
          description: 'Subscription id '
        productName:
          type: string
          description: 'the name of the product that you order exp: 100 Evaluation cards'
        orderStatus:
          type: string
          enum:
            - new
            - clarification
            - in_progress
            - cancelled
            - completed
          description: '''new''  will be the default value for all newly created orders'
        orderAmount:
          type: integer
          description: ''
        differentDeliveryAddress:
          $ref: '#/components/schemas/Address'
        reviewWidget:
          type: string
        evaluationSheet:
          $ref: '#/components/schemas/EvaluationSheet'
        vendorId:
          type: string
      required:
        - id
    SubscriptionMeinungsmeister:
      title: SubscriptionMeinungsmeister
      type: object
      description: |
        For Meinungsmeister to work please create a product of Yearly Service Fee as a first subscription before you continue to book other Meinungsmeister products. Orders are delivered to the address that exists in the location information but if you like a different delivery address please fill the information in the differentDeliveryAddress

        Note: orderAmount,evaluationSheetsSettings differentDeliveryAddress can not be updated  with api or ui later one you have to contact support team as soon as possible if you made a mistake

        Important: for  cancel the subscription is only by phone to the support team no ui or api is supported for this (yet)

        Product:
          Yearly Service Fee:  do not need any kind of setting
          Evaluation Sheets:  mandatory are orderAmount ,  evaluationSheetsSettings
          VendorId : Only orderAmount is supported for this exclusive product
      properties:
        orderAmount:
          type: integer
          format: int32
        differentDeliveryAddress:
          $ref: '#/components/schemas/AddressInsert'
        evaluationSheetsSettings:
          $ref: '#/components/schemas/EvaluationSheetsSettings'
    EvaluationSheetsSettings:
      title: EvaluationSheetsSettings
      type: object
      description: 'please fill those settigns for Evaluation Sheets product '
      properties:
        logo:
          $ref: '#/components/schemas/ImageInsert'
        color:
          description: hex value
          type: string
      required:
        - logo
        - color
    GMBVerificationOption:
      title: GMBVerificationOption
      type: object
      properties:
        verificationMethod:
          type: string
        phoneNumber:
          type: string
        addressData:
          $ref: '#/components/schemas/GMBAddressVerificationData'
        emailData:
          $ref: '#/components/schemas/GMBEmailVerificationData'
      required:
        - verificationMethod
    GMBVerificationOptionList:
      title: GMBVerificationOptionList
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/GMBVerificationOption'
    GMBAddressVerificationData:
      title: GMBAddressVerificationData
      type: object
      properties:
        business:
          type: string
        address:
          $ref: '#/components/schemas/GMBVerificationPostalAddress'
        expectedDeliveryDaysRegion:
          type: integer
    GMBEmailVerificationData:
      title: GMBEmailVerificationData
      type: object
      properties:
        domain:
          type: string
        user:
          type: string
        isUserNameEditable:
          type: boolean
    GMBVerificationPostalAddress:
      title: GMBVerificationPostalAddress
      type: object
      properties:
        revision:
          type: string
        regionCode:
          type: string
        languageCode:
          type: string
        postalCode:
          type: string
        sortingCode:
          type: string
        administrativeArea:
          type: string
        locality:
          type: string
        sublocality:
          type: string
        addressLines:
          type: array
          items:
            type: string
        recipients:
          type: array
          items:
            type: string
        organization:
          type: string
    EvaluationSheet:
      title: EvaluationSheet
      type: object
      properties:
        logo:
          $ref: '#/components/schemas/Image'
        color:
          type: string
      required:
        - logo
        - color
    Conversation:
      title: Conversation
      type: object
      description: it is a representation for the google business messages
      properties:
        displayName:
          type: string
        lastMessage:
          type: string
        sendTime:
          type: string
        answered:
          type: boolean
        conversationId:
          type: string
        subscriptionId:
          type: integer
          format: int64
        locationId:
          type: integer
          format: int64
        locationName:
          type: string
        channelId:
          type: integer
        channelName:
          type: string
        agentId:
          type: integer
          format: int64
        companyId:
          type: integer
          format: int64
      required:
        - conversationId
        - subscriptionId
        - locationId
        - channelId
        - companyId
    ConversationMessages:
      title: ConversationMessages
      type: object
      description: It represent the messages of a specific conversation.
      properties:
        messageId:
          type: string
        incoming:
          type: boolean
        text:
          type: string
        image:
          type: string
        sendTime:
          type: string
      required:
        - messageId
    ConversationMessagesResponse:
      title: ConversationMessagesResponse
      type: object
      description: ''
      properties:
        total:
          type: integer
        data:
          type: array
          items:
            $ref: '#/components/schemas/ConversationMessages'
    GbmMessageInsert:
      title: GbmMessageInsert
      type: object
      description: the new message details and its sender
      properties:
        text:
          type: string
          description: the message
        image:
          $ref: '#/components/schemas/ImageInsert'
    ConversationResponse:
      title: ConversationResponse
      type: object
      properties:
        total:
          type: integer
        data:
          type: array
          items:
            $ref: '#/components/schemas/Conversation'
    Message:
      title: Message
      type: object
      description: this model represent the specific message.
      properties:
        conversationId:
          type: string
        messageId:
          type: string
        text:
          type: string
        image:
          type: string
        sendTime:
          type: string
      required:
        - conversationId
        - messageId
    EmailConsent:
      title: EmailConsent
      type: object
      description: Model that represents if the logged user consented to receive emails.
      properties:
        consent:
          type: boolean
      required:
        - consent
    EmailNotificationConfiguration:
      title: EmailNotificationConfiguration
      type: object
      description: Model that represents a notification configuration for email opt in/out.
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        type:
          type: string
          enum:
            - alert
            - report
        enabled:
          type: boolean
        settings:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSetting'
      required:
        - id
        - name
        - type
        - enabled
    UserNotificationConfiguration:
      title: UserNotificationConfiguration
      type: object
      description: Model that represents the logged user's notification configuration.
      properties:
        companyId:
          type: integer
          format: int64
        companyName:
          type: string
        companyLogo:
          $ref: '#/components/schemas/Image'
        enabled:
          type: boolean
        notifications:
          type: array
          items:
            $ref: '#/components/schemas/EmailNotificationConfiguration'
        total:
          type: integer
          format: int32
      required:
        - companyId
        - companyName
        - enabled
        - notifications
        - total
    ListUserNotificationConfiguration:
      title: ListUserNotificationConfiguration
      type: object
      description: List that represents the logged user's notification configurations.
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/UserNotificationConfiguration'
        total:
          type: integer
          format: int32
      required:
        - data
        - total
    MessagingChannel:
      title: MessagingChannel
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        externalName:
          type: string
      required:
        - id
        - name
      description: 'The model to bind the messaging channels such google, facebook and etc.'
    MessagesAgent:
      title: MessagesAgent
      x-stoplight:
        id: e0ykz8zi8jpz4
      type: object
      description: Model is used to combine the information for message configuration
      properties:
        agentId:
          type: integer
          format: int64
        subscriptionId:
          type: integer
          format: int64
        locationId:
          type: integer
          format: int64
        locationName:
          type: string
        welcomeMessage:
          type: string
        offlineMessage:
          type: string
        privacyPolicyUrl:
          type: string
        brandId:
          type: integer
          format: int64
        brandName:
          type: string
        agentName:
          type: string
        displayName:
          type: string
        agentType:
          type: string
        logo:
          type: string
        availableHours:
          type: array
          items:
            $ref: '#/components/schemas/HumanMessagingAvailability'
      required:
        - agentId
        - subscriptionId
        - offlineMessage
    TimeInterval:
      title: TimeInterval
      x-stoplight:
        id: p1j3hewjtjo4u
      type: object
      description: This is model is used to define the time interval
      properties:
        hours:
          type: integer
          description: 'such as 18, 14, 10 ..'
        nanos:
          type: integer
        minutes:
          type: integer
          description: 'such as 23, 45, 59 ..'
        seconds:
          type: integer
      required:
        - hours
    AgentsResultListResponse:
      title: AgentsResultList
      x-stoplight:
        id: zq99szju2d6ug
      type: object
      description: this models maps the agents information
      properties:
        count:
          type: integer
        data:
          type: array
          items:
            $ref: '#/components/schemas/MessagesAgent'
    AgentTypes:
      title: AgentTypes
      x-stoplight:
        id: hwkbbcgfmwe92
      type: object
      properties:
        name:
          type: string
      description: Agent Types
    MessagesBrand:
      title: Brands
      x-stoplight:
        id: 6i2b6tgh0yewp
      type: object
      description: model bor brands data binding
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        displayName:
          type: string
      required:
        - id
        - displayName
    MessagesBrandList:
      title: BrandList
      x-stoplight:
        id: 5clyfp9njowj8
      type: object
      properties:
        count:
          type: integer
        data:
          type: array
          items:
            $ref: '#/components/schemas/MessagesBrand'
      required:
        - data
    MessagesConfigInsert:
      title: MessagesConfigInsert
      x-stoplight:
        id: l6kveu05lr7xa
      type: object
      description: Model is used to combine the information for message configuration
      properties:
        welcomeMessage:
          type: string
        offlineMessage:
          type: string
        privacyPolicyUrl:
          type: string
        logo:
          $ref: '#/components/schemas/ImageInsert'
        availableHours:
          type: array
          items:
            $ref: '#/components/schemas/HumanMessagingAvailability'
        agentType:
          type: string
          description: agent_type is required
      required:
        - welcomeMessage
        - offlineMessage
        - privacyPolicyUrl
        - availableHours
        - agentType
    OauthResponse:
      title: OauthResponse
      type: object
      discriminator:
        propertyName: type
        mapping:
          TOKEN: '#/components/schemas/OauthTokenResponse'
          URL: '#/components/schemas/OauthUrlResponse'
          ERROR: '#/components/schemas/Error'
      properties:
        type:
          type: string
          enum:
            - TOKEN
            - URL
            - ERROR
            - INVALID
            - FINALIZED
        token:
          $ref: '#/components/schemas/OauthTokenResponse'
        url:
          $ref: '#/components/schemas/OauthUrlResponse'
        error:
          $ref: '#/components/schemas/Error'
        image:
          $ref: '#/components/schemas/Image'
        serviceName:
          type: string
        providerUserId:
          type: string
        inherited:
          type: boolean
      required:
        - type
        - inherited
    OauthTokenResponse:
      title: OauthTokenResponse
      x-stoplight:
        id: uqsv337bgx2ia
      description: Response for the Oauth Wrapper containing an oAuth token
      type: string
    OauthUrlResponse:
      title: OauthUrlResponse
      x-stoplight:
        id: jnb8kh8036wj7
      type: string
    OauthRequest:
      title: OauthRequest
      x-stoplight:
        id: ouv696ej4t75i
      type: object
      description: ''
      properties:
        contextType:
          type: string
          description: Type of identifier for markee
          enum:
            - LOCATION
            - COMPANY
            - WORKSPACE
    YoutubeChannel:
      title: YoutubeChannel
      x-stoplight:
        id: dulogqhe802b0
      type: object
      properties:
        channel:
          $ref: '#/components/schemas/KeyValueString'
        playlist:
          $ref: '#/components/schemas/KeyValueString'
      required:
        - channel
    Onboarding:
      title: Onboarding
      x-stoplight:
        id: ewz2m8mfvmqe8
      type: object
      properties:
        hash:
          type: string
          description: a hashy that is used to authenticate your user to the pending data set from the onboarding
      required:
        - hash
    GBPAddress:
      title: GBPAddress
      description: Object used to represent the address of a location in GBP.
      type: object
      properties:
        countryCode:
          type: string
        postCode:
          type: string
        city:
          type: string
        addressLines:
          type: array
          items:
            type: string
      required:
        - countryCode
        - postCode
        - city
        - addressLines
    GBPDuplicate:
      title: GBPDuplicate
      description: Object used to show the user a list of GBP profiles that may belong to them.
      type: object
      properties:
        requestRights:
          type: string
        locationName:
          type: string
        address:
          $ref: '#/components/schemas/GBPAddress'
        verificationState:
          type: string
          description: 'possbile values are (COMPLETED, PENDING, FAILED or STATE_UNSPECIFIED)'
        googleLocationId:
          type: string
        phoneNumbers:
          $ref: '#/components/schemas/GBPPhoneNumbers'
        latLang:
          $ref: '#/components/schemas/GBPLatLang'
      required:
        - locationId
        - locationName
        - address
    GBPDuplicateAction:
      title: GBPDuplicateAction
      description: List that represents a list of possible matching GBP profiles for a Markee location.
      type: array
      items:
        $ref: '#/components/schemas/GBPDuplicate'
    GBPVerifyAction:
      title: GBPVerifyAction
      description: 'Object used to list the verification methods available so the user can verify a GBP profile, and the chosen verification method information, in case there''s any.'
      type: object
      properties:
        availableMethods:
          type: array
          items:
            type: string
            enum:
              - ADDRESS
              - EMAIL
              - PHONE_CALL
              - SMS
              - AUTO
        selectedMethod:
          $ref: '#/components/schemas/GBPVerificationMethod'
      required:
        - availableMethods
    GBPPendingActions:
      title: GBPPendingActions
      description: Object used to retrieve the posible actions that the user needs to do in order to complete the onboarding process for GBP.
      type: object
      properties:
        status:
          type: string
          enum:
            - PROCESSING
            - VERIFIED
            - FAILED
            - WAITING
            - DISCONNECTED
        profileUrl:
          type: string
        error:
          $ref: '#/components/schemas/GBPError'
        actionType:
          type: string
          enum:
            - DUPLICATE
            - VERIFY
            - DATA_CONSTELLATION
            - REQUEST_ADMIN_RIGHTS
        duplicate:
          $ref: '#/components/schemas/GBPDuplicateAction'
        selectedDuplicate:
          $ref: '#/components/schemas/GBPDuplicate'
        verify:
          $ref: '#/components/schemas/GBPVerifyAction'
        dataConsetellation:
          type: boolean
          description: Field used for the DATA_CONSTELLATION action type. Set to true when the user has to choose between using Markee data or GBP data.
        possibleToReset:
          type: boolean
          description: 'If the value is true, then the action is not resetable otherwise you can reset.'
        authorizationConsent:
          type: boolean
          description: 'if the value is true, then we ask user to authorize and go through ouath and selecting account.'
      required:
        - status
    GBPError:
      title: GBPError
      description: Error set by the GBP Service.
      type: object
      properties:
        type:
          type: string
        error:
          type: string
    GBPAccount:
      title: GBPAccount
      description: Object that contains the information about accesible accounts on GBP
      type: object
      properties:
        type:
          type: string
          enum:
            - ACCOUNT_TYPE_UNSPECIFIED
            - PERSONAL
            - LOCATION_GROUP
            - USER_GROUP
            - ORGANIZATION
        accountId:
          type: string
          description: Google Id of the account.
        accountName:
          type: string
          description: Account name as it appears on Google
        primaryOwner:
          type: string
          description: Owner of the account
        inherited:
          type: boolean
          description: If the account is inherited
        subscriptions:
          type: array
          items:
            type: integer
            format: int64
          description: Subscription IDs created with this account on Google.
        locationId:
          type: integer
          format: int64
          description: Location ID is optional pass it when needed.
        error:
          $ref: '#/components/schemas/GBPError'
      required:
        - type
        - accountId
        - accountName
    GBPAccountList:
      title: GBPAccountList
      description: List that represents a list of possible matching GBP accounts to use.
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/GBPAccount'
        error:
          $ref: '#/components/schemas/GBPError'
        total:
          type: integer
      required:
        - data
        - total
    GBPRequestPin:
      title: GBPRequestPin
      description: Object that contains the information necessary to use a Google verification method
      type: object
      properties:
        verificationMethod:
          type: string
          enum:
            - ADDRESS
            - EMAIL
            - PHONE_CALL
            - SMS
            - AUTO
            - VIDEO
        mailerContact:
          type: string
          description: The input for ADDRESS method. Contact name the mail should be sent to.
        email:
          type: string
          description: The input for EMAIL method. Email address where the PIN should be sent to.
        phone:
          type: string
          description: The input for PHONE_CALL/SMS method The phone number that should be called or be sent SMS to.
      required:
        - verificationMethod
    GBPAction:
      title: GBPAction
      description: Object used to send the user actions back to GBP.
      type: object
      properties:
        actionType:
          type: string
          enum:
            - DUPLICATE_MATCH
            - REQUEST_PIN
            - CONFIRM_PIN
            - DATA_CONSTELLATION
            - RESET
            - REQUEST_ADMIN_RIGHTS
            - REQUEST_VIDEO
        duplicateMatch:
          $ref: '#/components/schemas/GBPDuplicate'
        requestPin:
          $ref: '#/components/schemas/GBPRequestPin'
        confirmPin:
          type: string
        useMarkeeData:
          type: boolean
          description: Field used for the DATA_CONSTELLATION action type. It's used to decide which data constellation is the updated one if Google or Markke to sync them.
      required:
        - actionType
    GBPLatLang:
      title: GBPLatLang
      description: The latitude longitude object
      type: object
      properties:
        lat:
          type: number
          format: double
        long:
          type: number
          format: double
      required:
        - lat
        - long
    GBPPhoneNumbers:
      title: GBPPhoneNumbers
      description: Object that contains a primary phone number and optional additional phone numbers.
      type: object
      properties:
        primary:
          type: string
        additional:
          type: array
          items:
            type: string
      required:
        - primary
    GBPCategory:
      title: GBPCategory
      description: Object that represents a Google category
      properties:
        name:
          type: string
        displayName:
          type: string
    GBPCategories:
      title: GBPCategories
      description: Object that contains a primary category and optional additional categories.
      type: object
      properties:
        primaryCategory:
          $ref: '#/components/schemas/GBPCategory'
        additionalCategories:
          type: array
          items:
            $ref: '#/components/schemas/GBPCategory'
      required:
        - primaryCategory
      x-stoplight:
        id: 4b644655cfe68
    GBPStorefrontAddress:
      title: GBPStorefrontAddress
      description: Object that represents the location's address as it appears on Google.
      type: object
      properties:
        regionCode:
          type: string
        languageCode:
          type: string
        postalCode:
          type: string
        locality:
          type: string
        addressLines:
          type: array
          items:
            type: string
      required:
        - regionCode
        - languageCode
        - postalCode
        - locality
        - addressLines
    GBPTimeOfDay:
      title: GBPTimeOfDay
      description: 'Object representing the time on hours, minutes, seconds'
      type: object
      properties:
        hours:
          type: integer
        minutes:
          type: integer
        seconds:
          type: integer
    GBPTimePeriod:
      title: GBPTimePeriod
      description: Object representing a time period (open/close days and open/close times)
      type: object
      properties:
        openDay:
          type: string
          enum:
            - MONDAY
            - TUESDAY
            - WEDNESDAY
            - THURSDAY
            - FRIDAY
            - SATURDAY
            - SUNDAY
        closeDay:
          type: string
          enum:
            - MONDAY
            - TUESDAY
            - WEDNESDAY
            - THURSDAY
            - FRIDAY
            - SATURDAY
            - SUNDAY
        openTime:
          $ref: '#/components/schemas/GBPTimeOfDay'
        closeTime:
          $ref: '#/components/schemas/GBPTimeOfDay'
      required:
        - openDay
        - closeDay
        - openTime
        - closeTime
    GBPRegularHours:
      title: GBPRegularHours
      description: Object representing the opening hours of a location
      type: object
      properties:
        periods:
          type: array
          items:
            $ref: '#/components/schemas/GBPTimePeriod'
      required:
        - periods
    GBPSpecialHourPeriod:
      title: GBPSpecialHourPeriod
      description: Object representing a special time period (open/close day and open/close time)
      type: object
      properties:
        startDate:
          type: string
          description: Date with yyyy-mm-dd format
        closeDate:
          type: string
          description: Date with yyyy-mm-dd format
        openTime:
          $ref: '#/components/schemas/GBPTimeOfDay'
        closeTime:
          $ref: '#/components/schemas/GBPTimeOfDay'
        closed:
          type: boolean
      required:
        - openDate
        - closeDate
        - openTime
        - closeTime
        - closed
      x-stoplight:
        id: 5211f81e34710
    GBPSpecialHours:
      title: GBPSpecialHours
      description: Object representing the special opening hours of a location
      type: object
      properties:
        specialHourPeriods:
          type: array
          items:
            $ref: '#/components/schemas/GBPSpecialHourPeriod'
      required:
        - specialHourPeriods
    GBPProfile:
      title: GBPProfile
      description: Object representing the description of a location
      type: object
      properties:
        description:
          type: string
      required:
        - description
    GBPOpenInfo:
      title: GBPOpenInfo
      description: Object that contains information about the status of the location.
      type: object
      properties:
        status:
          type: string
          enum:
            - OPEN
            - CLOSED_PERMANENTLY
            - CLOSED_TEMPORARILY
      required:
        - status
    GBPLocation:
      title: GBPLocation
      description: Object used to sync a Google location's data into a Markee location.
      type: object
      properties:
        title:
          type: string
        storefrontAddress:
          $ref: '#/components/schemas/GBPStorefrontAddress'
        phoneNumbers:
          $ref: '#/components/schemas/GBPPhoneNumbers'
        categories:
          $ref: '#/components/schemas/GBPCategories'
        images:
          type: array
          items:
            $ref: '#/components/schemas/ImageInsert'
        websiteUri:
          type: string
        regularHours:
          $ref: '#/components/schemas/GBPRegularHours'
        specialHours:
          $ref: '#/components/schemas/GBPSpecialHours'
        labels:
          type: array
          items:
            type: string
        profile:
          $ref: '#/components/schemas/GBPProfile'
        openInfo:
          $ref: '#/components/schemas/GBPOpenInfo'
      required:
        - title
        - storefrontAddress
        - categories
    GBPAccountLocationsRequest:
      type: object
      x-examples:
        Example 1:
          spaceId: 1
          account: accounts/101028063566474072777
          nextPageToken: ABHRLXXOXCG_8i0qtvb8ARZI1c-BrFNgegvHUv_xttAavdsntUEKxz4
      description: This model is used to initialize the request body for GBP account locations
      title: GBPAccountLocationsRequest
      properties:
        contextType:
          type: string
          enum:
            - Workspace
            - Company
            - Location
        contextTypeId:
          type: integer
          format: int64
        account:
          type: string
        nextPageToken:
          type: string
        includeVerifications:
          type: boolean
      required:
        - contextType
        - contextTypeId
        - account
        - includeVerifications
    GBPAccountLocationsResponse:
      type: object
      x-examples:
        Example 1:
          locations:
            - name: locations/1677397802695225106
              title: excelsea Paginiaurii
              address: 'Pretzfelder Straße 7, 90425 Nürnberg'
              verifications: []
              duplicate: null
            - name: locations/2655222713670150707
              title: Excelsea Testlocation
              address: 'Splaiul Independenței 31, 030167 București'
              verifications: []
              duplicate: null
            - name: locations/7219376510755037521
              title: A.D.G. MEDICAL SRL
              address: 'Strada Ștefan cel Mare 142, 727355 Mănăstirea Humorului'
              verifications:
                - name: locations/7219376510755037521/verifications/5T1657002949212
                  method: AUTO
                  state: COMPLETED
                  createTime: '2022-07-05T06:35:49.212Z'
              duplicate: null
            - name: locations/11804039491553611045
              title: GBP EA
              address: 'Pretzfelder Straße 1, 90425 Nürnberg'
              verifications:
                - name: locations/11804039491553611045/verifications/8T1663791849627
                  method: VETTED_PARTNER
                  state: COMPLETED
                  createTime: '2022-09-21T20:24:09.627Z'
              duplicate: null
            - name: locations/16671061956541551072
              title: FLA-PA TRANS SRL
              address: 'Calea Turnișorului 41, 550136 Sibiu'
              verifications: []
              duplicate: null
          nextPageToken: ABHRLXVlkbBTKEnNEYt07jupmdLH5vRrIWQKXIeQ5G0yui4jTT9ojYc
          totalSize: null
      title: GBPAccountLocationsReponse
      description: This model is used to contain the reponse information for gbp account location request.
      properties:
        locations:
          type: array
          items:
            $ref: '#/components/schemas/GBPAccountLocation'
        nextPageToken:
          type: string
        totalSize:
          type: integer
    GBPLocationVerification:
      type: object
      properties:
        name:
          type: string
        method:
          type: string
        state:
          type: string
        createTime:
          type: string
      x-examples: {}
      title: GBPLocationVerification
      description: This is model is used to initilize the location verification states
      x-stoplight:
        id: 6340c2db87ac1
    GBPAccountLocation:
      type: object
      x-examples:
        Example 1:
          name: locations/1677397802695225106
          title: excelsea Paginiaurii
          address: 'Pretzfelder Straße 7, 90425 Nürnberg'
          verifications: []
          duplicate: null
      title: GBPAccountLocation
      description: This model is used to bind GBP account's location
      properties:
        name:
          type: string
        title:
          type: string
        address:
          type: string
        verifications:
          type: array
          items:
            $ref: '#/components/schemas/GBPLocationVerification'
        duplicate:
          type: string
    GBPVerificationMethod:
      title: GBPVerificationMethod
      description: Object which contains the chosen verification method information.
      type: object
      properties:
        requestTimestamp:
          type: string
          format: date-time
          description: Creation date and time
          example: '2021-01-30T08:30:00Z'
        verificationMethod:
          $ref: '#/components/schemas/GBPRequestPin'
      required:
        - requestTimestamp
        - verificationMethod
    ReviewCommentResponse:
      title: ReviewCommentResponse
      x-stoplight:
        id: pulu0d1kgkim0
      type: object
      properties:
        reviewId:
          type: integer
          format: int64
        commentId:
          type: integer
          format: int32
    ListReviewCommentResponse:
      title: ListReviewCommentResponse
      x-stoplight:
        id: vqa2vdicffx0z
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ReviewCommentResponse'
        total:
          type: integer
          format: int64
    LocationCategory:
      title: LocationCategory
      x-stoplight:
        id: z6pc81l8ifeao
      type: object
      description: Category object for location categories with optional fields for alias
      properties:
        key:
          type: integer
        value:
          type: string
        aliasId:
          type: integer
        aliasName:
          type: string
      required:
        - key
        - value
    BenchmarkDetails:
      title: BenchmarkDetails
      type: object
      description: Benchmark Details for Locations.
      properties:
        category:
          $ref: '#/components/schemas/Category'
        geography:
          type: array
          items:
            $ref: '#/components/schemas/Geography'
    Category:
      title: Category
      type: object
      description: The Category
      properties:
        categoryHierarchyId:
          type: integer
          description: categoryHierarchyId of the main category
        categoryId:
          type: integer
          description: categoryId of the main category
        name:
          type: string
          description: categoryName of the main category
        sections:
          type: array
          items:
            $ref: '#/components/schemas/CategorySection'
    CategorySection:
      title: CategorySection
      type: object
      description: Section object for category sections
      properties:
        categoryHierarchyId:
          type: integer
          description: categoryHierarchyId
        sectionId:
          type: integer
          description: sectionId
        name:
          type: string
          description: sectionName
    Geography:
      title: Geography
      type: object
      description: Geography which contains the admin levels
      properties:
        id:
          type: integer
          description: admin level osmId
        level:
          type: integer
          description: admin level number
        name:
          type: string
          description: admin level name
    Publisher:
      title: Publisher
      x-stoplight:
        id: xk5ihentu4zxc
      type: object
      properties:
        name:
          type: string
          deprecated: true
          description: This field is deprecated and will be removed in a future release. Please use `publisherName` instead.
          x-stoplight:
            id: kf5deqn833uro
        publisherName:
          type: string
          description: the offical name of the publisher
        baseUrl:
          type: string
          x-stoplight:
            id: 9m7mnd8ojwe77
          description: url of publisher under which your listing entries will be hosted
        reviewMonitoring:
          type: boolean
          description: whether the publisher is enabled for review monitoring
        reviewResponse:
          type: boolean
          description: whether the publisher is enabled for review response
        socialPosts:
          type: boolean
          description: whether the publisher is enabled for social posts
        temporarily_deactivated:
          type: boolean
          description: whether the publisher is temporarily deactivated
      required:
        - name
        - publisherName
        - reviewMonitoring
        - reviewResponse
        - socialPosts
        - temporarily_deactivated
    ListResultPublisher:
      title: ListResultPublisher
      x-stoplight:
        id: q6muaf97y3osb
      type: object
      properties:
        data:
          x-stoplight:
            id: 6u8s7ka2wphh1
          type: array
          description: list of publishers with additional information
          items:
            $ref: '#/components/schemas/Publisher'
        total:
          type: integer
          x-stoplight:
            id: gayq4jsj58hx0
          description: total number of publishers with respect to your filter criterias
      required:
        - data
        - total
    ContentGenerationAvailability:
      title: ContentGenerationAvailability
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether the content generation subscription is enabled
        available:
          type: boolean
          description: Whether you can generate content with AI or not
        usage:
          type: object
          properties:
            used:
              type: number
              format: int64
              description: Amount of resources used (tokens, generation, etc.)
            limit:
              type: number
              format: int64
              description: Maximum amount of resources that can be used for content generations
          description: Information regarding the AI usage and limit
      description: Object that contains the availability of content generation resources for a location.
      required:
        - enabled
    ContentGenerationGenerateResponse:
      title: ContentGenerationGenerateResponse
      type: object
      properties:
        content:
          type: object
          description: Generated content
          properties:
            message:
              type: string
              description: Message generated for the content requested
            usage:
              type: number
              format: double
              description: Amount of resources used by the content generated
      description: Object that contains the availability of content generation resources for a location.
      required:
        - content
    ListResultSocialConnection:
      title: ListResultSocialConnection
      x-stoplight:
        id: qh7p5knjpfbw5
      type: object
      properties:
        data:
          x-stoplight:
            id: yo2b0w22us1fp
          type: array
          items:
            $ref: '#/components/schemas/SocialConnectionOverview'
        total:
          type: integer
          x-stoplight:
            id: 2gh62tzixylty
    SocialConnectionOverview:
      title: SocialConnectionOverview
      x-stoplight:
        id: od1cfsnxfeuuf
      type: object
      properties:
        id:
          type: integer
          format: int64
        locationId:
          type: integer
          x-stoplight:
            id: i0q21r4a7fe5e
          format: int64
        socialPortalName:
          deprecated: true
          type: string
          description: This field is deprecated and will be removed in a future release. Please use `portalName` instead.
          x-stoplight:
            id: zvjc3k4izjrr2
        portalName: 
          type: string
          description: The name of the social portal.
        owner:
          type: string
          x-stoplight:
            id: 7yqtiq86fgw0w
        status:
          type: string
          x-stoplight:
            id: 7nusyjantzy85
        errorMessage:
          type: string
          x-stoplight:
            id: dvwlqo3e2chf4
        connectionUrl:
          type: string
          x-stoplight:
            id: lzmnm01r03gy7
      required:
        - id
        - locationId
        - socialPortalName
        - owner
        - status
    ConnectionUrlResponse:
      title: ConnectionUrlResponse
      x-stoplight:
        id: 3k1v5q4y2g7n68i3729y027
      type: object
      properties:
        value:
          type: string
          deprecated: true
          description: This field is deprecated and will be removed in a future release. Please use `action` instead.
        action:
          $ref: '#/components/schemas/HttpAction'
    HttpAction:
      title: HttpAction
      type: object
      properties:
        httpMethod:
          type: string
          enum:
            - GET
            - POST
            - PUT
            - DELETE
          description: Metadata describing how to perform the connection request.
          example: "GET"
        endpoint:
          type: string
          description: API endpoint to call.
          example: "https://qa-api.mark.ee/api/listing/connect/790669"
        queryParameters:
          type: array
          description: Query parameters to append when calling the endpoint.
          example:
            - "?publisher=GOOGLEMYBUSINESS"
          items:
            type: string
        body:
          type: string
          description: Optional request body to include if required.
      required:
        - httpMethod
        - endpoint
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        password:
          tokenUrl: https://login.partners/auth/realms/mark_ee/protocol/openid-connect/token
          scopes:
            profile: Access to user profile information
            email: Access to user email address
            leadhub_user_data: Access to leadhub user data
    basicAuth:
      type: http
      scheme: basic
      description: Basic HTTP authentication
security:
  - oauth2: []
  - basicAuth: []  
tags:
  - name: admin
    description: API Calls for markee admin center
  - name: internal
    description: API Calls which no external customer needs to use
  - name: user
    description: User managemement
  - name: location
    description: Location CMS
  - name: company
    description: Company CMS
  - name: subscription
    description: Subscription of a licence to a location
  - name: budget
    description: budget part of a licence/subscription
  - name: targeting
    description: targeting part of a licence/subscription
  - name: sea
    description: sea part of a licence/subscription
  - name: advertisement
    description: advertisement part of a licence/subscription
  - name: calltracking
    description: call tracking parts of licence/subscription
  - name: listingportal
    description: listingportals parts of licence/subscription
  - name: website
    description: website parts of licence/subscription
  - name: listing
    description: listing parts of licence/subscription
  - name: licence
    description: licence methods
  - name: offer
    description: offer methods
  - name: contract
    description: contract methods
  - name: websitewidget
  - name: statisticaggregation
  - name: miscellaneous
    description: miscellaneous methods
  - name: enhancedContent
    description: enhanced content methods
  - name: billingaccount
  - name: social
  - name: notifications
  - name: qr
  - name: workspacesetting
  - name: listingscan
  - name: contentcampaign
  - name: tag
  - name: contact
  - name: activity
  - name: phone
  - name: address
  - name: statistic
  - name: meta
  - name: optimization
  - name: pacing
  - name: security
  - name: claim
  - name: workspace
  - name: socialAd
  - name: dynamicvideo
  - name: meinungsmeister
  - name: localCampaigns
    description: google ads local campaigns
  - name: gbm
  - name: userRequest
    description: Used to send email to user to ask for consent (Email opt in/out)
  - name: oauth
    description: Used for oauth ientation
  - name: ContentGeneration
    description: AI Content Generation methods
x-tagGroups:
  - name: Content
    tags:
      - workspace
      - company
      - location
      - miscellaneous
      - tag
      - contact
      - phone
      - address
      - meta
      - enhancedContent
      - claim
  - name: Contractual
    tags:
      - offer
      - contract
      - billingaccount
      - licence
      - subscription
  - name: Products
    tags:
      - budget
      - sea
      - advertisement
      - calltracking
      - listingportal
      - website
      - listing
      - websitewidget
      - qr
      - socialAd
      - statisticaggregation
      - dynamicvideo
      - meinungsmeister
      - localCampaigns
      - gbm
      - ContentGeneration
  - name: Administrative
    tags:
      - internal
      - workspacesetting
      - listingscan
      - contentcampaign
      - userRequest
      - oauth
  - name: Social
    tags:
      - social
  - name: User Management
    tags:
      - user
      - security
  - name: Dashboard & Statistics
    tags:
      - activity
      - statistic
      - optimization
      - pacing
