Aeris Location Lists API

Endpoints for Location Lists

Operations 6

POST /watchtower/v1/location-lists Create a location list #
POST /watchtower/v1/location-lists/search Search location lists #
POST /watchtower/v1/location-lists/suggest-entries Suggest entries for a location list #
GET /watchtower/v1/location-lists/{locationListId} Get location list details #
PUT /watchtower/v1/location-lists/{locationListId} Update an existing location list #
DELETE /watchtower/v1/location-lists/{locationListId} Delete a location list #

Documentation

Specifications

Other Resources

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/aeris-location-lists-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

aeris-location-lists-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 0.7.0
  title: Aeris IoT Watchtower™ Location Lists API
  description: '## Introduction


    The Aeris IoT Watchtower™ API provides access to resources such as real-time events, aggregated events, risk assessment reports, and device group operations.'
  termsOfService: https://www.aeris.com/services-terms-of-use/
  contact:
    email: support@aeris.net
    url: https://www.aeris.com/support/
  license:
    name: Aeris License
    url: https://www.aeris.com/services-terms-of-use/
  x-audience: external-public
servers:
- url: https://watchtower-api-prd.aeriscloud.com
security:
- oAuth2ClientCredentials: []
tags:
- name: Location Lists
  description: Endpoints for Location Lists
paths:
  /watchtower/v1/location-lists:
    post:
      summary: Create a location list
      operationId: createLocationList
      tags:
      - Location Lists
      parameters:
      - $ref: '#/components/parameters/authorization'
      - $ref: '#/components/parameters/accountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationListCreateRequest'
      responses:
        '201':
          description: Location list created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /watchtower/v1/location-lists/search:
    post:
      summary: Search location lists
      operationId: searchLocationLists
      tags:
      - Location Lists
      parameters:
      - $ref: '#/components/parameters/authorization'
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/sort'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationListQueryRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedLocationLists'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '413':
          $ref: '#/components/responses/413'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /watchtower/v1/location-lists/suggest-entries:
    post:
      summary: Suggest entries for a location list
      operationId: suggestLocationListEntries
      tags:
      - Location Lists
      parameters:
      - $ref: '#/components/parameters/authorization'
      - $ref: '#/components/parameters/accountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationListSuggestionRequest'
      responses:
        '200':
          description: Suggested entries
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LocationListEntry'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /watchtower/v1/location-lists/{locationListId}:
    get:
      summary: Get location list details
      operationId: getLocationList
      tags:
      - Location Lists
      parameters:
      - $ref: '#/components/parameters/authorization'
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/locationListId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    put:
      summary: Update an existing location list
      operationId: updateLocationList
      tags:
      - Location Lists
      parameters:
      - $ref: '#/components/parameters/authorization'
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/locationListId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationListUpdateRequest'
      responses:
        '204':
          description: No content, the resource was successfully updated.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    delete:
      summary: Delete a location list
      operationId: deleteLocationList
      tags:
      - Location Lists
      parameters:
      - $ref: '#/components/parameters/authorization'
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/locationListId'
      responses:
        '204':
          description: No content, the resource was successfully deleted.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
components:
  responses:
    '401':
      description: Not authorized.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 401
            message: Unauthorized
            timestamp: 2025-06-01 13:28:03.967000
            path: /watchtower/v1/...
            traceId: c3db9d7a432317363c8bc5ddb5aadf4b
    '429':
      description: Too many requests.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 429
            message: 'Rate Limit Exceeded (XX) for clientId: XXXXXX. Please retry after XXX seconds'
            timestamp: 2025-06-01 13:28:03.967000
            path: /watchtower/v1/...
            traceId: c3db9d7a432317363c8bc5ddb5aadf4b
    '403':
      description: Forbidden.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 403
            message: Forbidden
            timestamp: 2025-06-01 13:28:03.967000
            path: /watchtower/v1/...
            traceId: c3db9d7a432317363c8bc5ddb5aadf4b
    '400':
      description: Bad Request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 400
            message: Bad Request
            timestamp: 2025-06-01 13:28:03.967000
            path: /watchtower/v1/...
            traceId: c3db9d7a432317363c8bc5ddb5aadf4b
    '413':
      description: Requested data too large
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 413
            message: Requested data too large. Please use /watchtower/v1/.../export for requesting larger amounts of data
            timestamp: 2025-06-01 13:28:03.967000
            path: /watchtower/v1/...
            traceId: c3db9d7a432317363c8bc5ddb5aadf4b
    '404':
      description: Not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 404
            message: Not found
            timestamp: 2025-06-01 13:28:03.967000
            path: /watchtower/v1/...
            traceId: c3db9d7a432317363c8bc5ddb5aadf4b
    '500':
      description: Internal Server Error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 500
            message: Internal Server Error
            timestamp: 2025-06-01 13:28:03.967000
            path: /watchtower/v1/...
            traceId: c3db9d7a432317363c8bc5ddb5aadf4b
  schemas:
    LocationListSummary:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        listType:
          $ref: '#/components/schemas/LocationListType'
        entryCount:
          type: integer
        deviceGroupIds:
          type: array
          items:
            type: integer
        createdBy:
          type: string
        createdTime:
          type: string
          format: date-time
        updatedBy:
          type: string
        updatedTime:
          type: string
          format: date-time
    LocationListUpdateRequest:
      allOf:
      - $ref: '#/components/schemas/LocationListResourceBase'
      - type: object
        required:
        - name
        - listType
    LocationListEntry:
      type: object
      properties:
        id:
          type:
          - integer
          - 'null'
          format: int64
        imsi:
          $ref: '#/components/schemas/imsi'
        apn:
          type: string
          description: Access Point Name
          maxLength: 100
          example: internet.provider.com
        cellId:
          type: string
          description: Cell identifier
          maxLength: 50
          example: '12345'
        country:
          type: string
          description: Country name
          maxLength: 100
          example: United States
        postalTown:
          type: string
          description: Postal town
          maxLength: 100
          example: San Jose
        postalCode:
          type: string
          description: Postal code
          maxLength: 20
          example: '95134'
        latitude:
          type: number
          description: Latitude coordinate
          example: 37.38748
        longitude:
          type: number
          description: Longitude coordinate
          example: -121.92978
        mcc:
          type: integer
          description: Mobile Country Code
          example: 310
        mnc:
          type: integer
          description: Mobile Network Code
          example: 260
        lac:
          type: integer
          description: Location Area Code
          example: 1234
        effectiveStartTs:
          type: string
          description: Effective start timestamp
          example: '2025-01-01T00:00:00Z'
    Pagination:
      type: object
      properties:
        total:
          $ref: '#/components/schemas/total'
        offset:
          $ref: '#/components/schemas/offset'
        limit:
          $ref: '#/components/schemas/limit'
    Error:
      type: object
      properties:
        code:
          type: integer
          description: HTTP code
          example: 500
        message:
          type: string
          description: Error message
          example: An error encountered in processing the request
        timestamp:
          type: string
          description: ISO DateTime
          example: '2025-06-02 09:01:53.678'
        path:
          type: string
          description: Endpoint path at which the error occured
          example: /watchtower/v1/events
        traceId:
          type: string
          description: Trace Id
          example: ed81f29f-ea9b-4099-aa00-f8ed40b7a567
    LocationListQueryRequest:
      type: object
      properties:
        name:
          type: string
          description: Filter by location list name (partial match)
        listTypes:
          type: array
          description: Filter by location list types
          items:
            $ref: '#/components/schemas/LocationListType'
        deviceGroupIds:
          type: array
          description: Filter by associated device group IDs
          items:
            type: integer
    total:
      type: integer
      format: int64
      description: Total number of items available.
      example: 1
      minimum: 0
    LocationList:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        listType:
          $ref: '#/components/schemas/LocationListType'
        entries:
          type: array
          items:
            $ref: '#/components/schemas/LocationListEntry'
        entryCount:
          type: integer
          description: Total number of entries in the location list
        deviceGroupIds:
          type: array
          items:
            type: integer
        createdBy:
          type: string
        createdTime:
          type: string
          format: date-time
        updatedBy:
          type: string
        updatedTime:
          type: string
          format: date-time
    LocationListCreateRequest:
      allOf:
      - $ref: '#/components/schemas/LocationListResourceBase'
      - type: object
        required:
        - name
        - listType
    imsi:
      description: International Mobile Subscriber Identifier of the device.
      type: string
      maxLength: 15
      example: '310009133100012'
    LocationListResourceBase:
      type: object
      properties:
        name:
          type: string
          description: Name of the location list
          maxLength: 255
          minLength: 1
          example: Allowed Cell Towers
        description:
          type: string
          description: Description of the location list
          maxLength: 2048
          example: Cell towers authorized for fleet vehicles
        listType:
          $ref: '#/components/schemas/LocationListType'
        entries:
          type: array
          items:
            $ref: '#/components/schemas/LocationListEntry'
        deviceGroupIds:
          type: array
          description: IDs of device groups associated with this location list
          items:
            type: integer
    PagedLocationLists:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/LocationListSummary'
    accountId:
      description: Account Id.
      type: integer
      format: int32
      example: 10407
      minimum: 0
    LocationListSuggestionRequest:
      type: object
      required:
      - deviceGroupIds
      - listType
      - effectiveStartTs
      properties:
        deviceGroupIds:
          type: array
          items:
            type: integer
        listType:
          $ref: '#/components/schemas/LocationListType'
        effectiveStartTs:
          type: object
          properties:
            start:
              type: string
              format: date-time
            end:
              type: string
              format: date-time
        country:
          type: string
          description: Optional filter by country
        postalTown:
          type: string
          description: Optional filter by city/town
    LocationListType:
      description: Type of the location list
      type: string
      enum:
      - GENERAL
      - PER_IMSI
    limit:
      type: integer
      format: int32
      description: Number of items to retrieve (10000 max).
      minimum: 1
      maximum: 10000
      default: 20
    offset:
      description: Position in pagination.
      type: integer
      format: int32
      default: 0
      minimum: 0
  parameters:
    locationListId:
      name: locationListId
      in: path
      required: true
      description: The ID of the location list
      schema:
        type: integer
        format: int64
    limit:
      name: limit
      in: query
      description: The number of items to retrieve per page (10000 max).
      schema:
        $ref: '#/components/schemas/limit'
    accountId:
      name: X-Watchtower-Account-Id
      in: header
      description: Account Id
      required: true
      schema:
        $ref: '#/components/schemas/accountId'
      example: 1002000010
    offset:
      name: offset
      in: query
      description: The position in pagination. Specifies the starting row offset into the result set returned. For example, if the page size (limit) is 10, then to select the second page, pass the offset as 10 to retrieve items 11 to 20.<br><br> Search parameters must be consistent across pages.
      schema:
        $ref: '#/components/schemas/offset'
    sort:
      name: sort
      in: query
      description: Use <b>sort=comma-separated-fields[:asc|desc]</b> to sort the result.
      example: deviceId,updateTime:desc
      schema:
        type: string
    authorization:
      name: Authorization
      in: header
      description: Bearer Token for authentication
      required: true
      schema:
        type: string
        pattern: ^Bearer [A-Za-z0-9-._~+/]+=*$
      example: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ...
  securitySchemes:
    oAuth2ClientCredentials:
      type: oauth2
      description: This API uses OAuth 2 with the Client Credentials flow.
      flows:
        clientCredentials:
          tokenUrl: /watchtower/v1/auth/token
          scopes: {}