Cuebiq Geoset API

The endpoints managing geosets

Operations 5

POST /v1/customers/{customerId}/geosets Insert a new Geoset with brand information from a file #
GET /v1/customers/{customerId}/geosets Get the list of geosets #
POST /v1/customers/{customerId}/geosets/upload-urls Create Pre-signed S3 URL #
GET /v1/customers/{customerId}/geosets/{geosetId} Get the geoset by id #
GET /v1/customers/{customerId}/geosets/{geosetId}/places Get the geoset by id places #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cuebiq:cuebiq-geoset-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cuebiq-geoset-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cuebiq Geoset API
  description: Create and manage Campaigns and Geoset via Cuebiq external APIs
  version: 0.1.0
servers:
- url: https://...
  description: Cuebiq API gateway
security:
- cuebiq_auth: []
tags:
- name: geoset
  description: The endpoints managing geosets
paths:
  /v1/customers/{customerId}/geosets:
    post:
      summary: Insert a new Geoset with brand information from a file
      description: Insert a new Geoset with brand information from a file.
      operationId: postGeosets
      tags:
      - geoset
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          format: int32
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostGeosetRequestBodyRaw'
        required: true
      responses:
        '201':
          description: The id of geoset created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostGeosetResponse'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '403':
          description: User not authorized to perform operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
    get:
      summary: Get the list of geosets
      description: Get the list of geosets optionally filtered by external_ref or geoset name
      operationId: getGeosets
      tags:
      - geoset
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          format: int32
          type: integer
      - name: externalRef
        in: query
        schema:
          type:
          - string
          - 'null'
      - name: name
        in: query
        schema:
          type:
          - string
          - 'null'
      responses:
        '200':
          description: The list of geosets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetGeosetsResponse'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '403':
          description: User not authorized to perform operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /v1/customers/{customerId}/geosets/upload-urls:
    post:
      summary: Create Pre-signed S3 URL
      description: Generate and returns a new pre-signed URL to perform a file upload on S3.
      operationId: postGeosetsUploadUrls
      tags:
      - geoset
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          format: int32
          type: integer
      responses:
        '201':
          description: The presigned urls path created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeosetS3PreSignedUrlResponse'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '403':
          description: User not authorized to perform operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /v1/customers/{customerId}/geosets/{geosetId}:
    get:
      summary: Get the geoset by id
      description: Get the geoset definition by its id
      operationId: getGeoset
      tags:
      - geoset
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          format: int32
          type: integer
      - name: geosetId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      responses:
        '200':
          description: The geoset
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Geoset'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '403':
          description: User not authorized to perform operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /v1/customers/{customerId}/geosets/{geosetId}/places:
    get:
      summary: Get the geoset by id places
      description: Get the geoset places by geoset id, this call is paginated, look at nextId field, if null no more items are returned in subsequent calls.
      operationId: getGeosetsPlaces
      tags:
      - geoset
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          format: int32
          type: integer
      - name: geosetId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      - name: fromId
        in: query
        schema:
          format: int64
          minimum: 0
          type:
          - integer
          - 'null'
      - name: limit
        in: query
        schema:
          format: int32
          type:
          - integer
          - 'null'
          exclusiveMinimum: 0
      - name: sortOrder
        in: query
        schema:
          type:
          - string
          - 'null'
      responses:
        '200':
          description: The geoset places paginated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPlacesResponse'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '403':
          description: User not authorized to perform operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
components:
  schemas:
    PostGeosetResponse:
      required:
      - id
      type: object
      properties:
        id:
          $ref: '#/components/schemas/UUID'
    ErrorMessage:
      required:
      - timestamp
      - details
      type: object
      properties:
        status:
          format: int32
          type: integer
        message:
          type:
          - string
          - 'null'
        link:
          type:
          - string
          - 'null'
        timestamp:
          $ref: '#/components/schemas/ZonedDateTime'
        details:
          type: array
          items:
            type: string
    PlaceOpeningHoursRaw:
      required:
      - mon
      - tue
      - wed
      - thu
      - fri
      - sat
      - sun
      type: object
      properties:
        mon:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PlaceOpeningHoursRangeRaw'
        tue:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PlaceOpeningHoursRangeRaw'
        wed:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PlaceOpeningHoursRangeRaw'
        thu:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PlaceOpeningHoursRangeRaw'
        fri:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PlaceOpeningHoursRangeRaw'
        sat:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PlaceOpeningHoursRangeRaw'
        sun:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PlaceOpeningHoursRangeRaw'
    PostGeosetRequestBodyRaw:
      required:
      - name
      - placesFileLocation
      - placeRadiusMeters
      - placeDwellTimeMinutes
      - placeOpeningHours
      type: object
      properties:
        name:
          maxLength: 64
          minLength: 3
          pattern: \S
          type:
          - string
          - 'null'
        externalRef:
          type:
          - string
          - 'null'
        placesFileLocation:
          pattern: \S
          type:
          - string
          - 'null'
        placeRadiusMeters:
          format: double
          type:
          - number
          - 'null'
          exclusiveMinimum: 0
        placeDwellTimeMinutes:
          allOf:
          - $ref: '#/components/schemas/PlaceDwellTimeMinutesRaw'
        placeOpeningHours:
          allOf:
          - $ref: '#/components/schemas/PlaceOpeningHoursRaw'
    ZonedDateTime:
      format: date-time
      type: string
      example: '2022-03-10T12:15:50-04:00'
    UUID:
      format: uuid
      pattern: '[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}'
      type: string
    PlaceDwellTimeMinutesRaw:
      required:
      - first
      - second
      type: object
      properties:
        first:
          format: int32
          type:
          - integer
          - 'null'
          exclusiveMinimum: 0
        second:
          format: int32
          type:
          - integer
          - 'null'
          exclusiveMinimum: 0
    Geoset:
      required:
      - id
      - name
      - geosetStatus
      type: object
      properties:
        id:
          $ref: '#/components/schemas/UUID'
        name:
          type: string
        externalRef:
          type:
          - string
          - 'null'
        geosetStatus:
          type: string
    GetGeosetsResponse:
      required:
      - items
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Geoset'
    PlaceOpeningHoursRangeRaw:
      required:
      - from
      - to
      type: object
      properties:
        from:
          allOf:
          - $ref: '#/components/schemas/LocalTime'
        to:
          allOf:
          - $ref: '#/components/schemas/LocalTime'
    LocalTime:
      format: local-time
      type: string
      externalDocs:
        description: As defined by 'partial-time' in RFC3339
        url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
      example: '13:45:30.123456789'
    GetPlacesResponse:
      required:
      - items
      type: object
      properties:
        count:
          format: int32
          type: integer
        nextFromId:
          format: int64
          type:
          - integer
          - 'null'
        items:
          type: array
          items:
            $ref: '#/components/schemas/Place'
    Place:
      required:
      - name
      - address
      type: object
      properties:
        id:
          format: int64
          type: integer
        name:
          type: string
        address:
          type: string
        city:
          type:
          - string
          - 'null'
        latitude:
          format: double
          type: number
        longitude:
          format: double
          type: number
        radiusMeters:
          format: double
          type: number
    GeosetS3PreSignedUrlResponse:
      required:
      - presignedUrl
      - objectUrl
      - expiration
      type: object
      properties:
        presignedUrl:
          type: string
        objectUrl:
          type: string
        expiration:
          $ref: '#/components/schemas/ZonedDateTime'
  securitySchemes:
    cuebiq_auth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth.cuebiq.com/auth/realms/Customers/protocol/openid-connect/token
          refreshUrl: https://auth.cuebiq.com/auth/realms/Customers/protocol/openid-connect/token