Esper geofence_Device State API

The geofence_Device State API from Esper — 3 operation(s) for geofence_device state.

Operations 3

GET /geofence/v1/geofences/{geofence_id}/device-summary Get device summary for a geofence #
GET /geofence/v1/geofences/{geofence_id}/blueprints Get blueprint usage statistics for a geofence #
GET /geofence/v1/geofences/{geofence_id}/devices Get devices for a geofence #

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/esper:esper-geofence-device-state-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

esper-geofence-device-state-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ESPER API REFERENCE geofence_Device State API
  x-logo:
    url: esper-logo-white.svg
    backgroundColor: '#141418'
    altText: Logo
  description: '# Introduction

    Welcome to Esper’s API documentation. The Esper API allows users to accomplish operations outside of the console. Some common uses for our APIs include observing device information and console activity, installing and updating apps, uploading files, and sending files to devices. Our users have also used the API to automate app updates, perform bulk actions, and more. Esper API endpoints use REST-based architecture and return JSON responses. See our documentation for:


    * Getting started guides

    * Commonly used API examples

    * API command examples

    * Automated Script examples

    * And more


    # Authentication


    You need to create an API Key to interact with our APIs. Learn more about generating an API Key. You can also learn more about Esper and sign up for an account at esper.io/signup. Some endpoints also require an Enterprise ID. This ID can be found in the API Management section of the Esper console. # Lifecycle Labels


    Esper uses lifecycle labels to communicate the support status of each API endpoint. Use the following table to understand what each label means and how to respond. Badge

    What it means

    Recommended action


    Stable

    This endpoint is fully supported and safe for production use. No action needed. Beta

    This endpoint is publicly available but may change. It is not recommended for production integrations. Use with caution. Monitor the API changelog for updates before relying on this endpoint. Legacy

    This endpoint uses an older architecture and is still supported, but a newer equivalent exists. It is not recommended for new integrations. Plan migration to the recommended replacement when possible. See the endpoint description for the alternative. Deprecated

    This endpoint has stopped being supported. A removal date may be added at a later time. A replacement is available or the feature is entirely retired. Migrate before the removal date listed in the endpoint description. Do not use this endpoint in new integrations. # Pagination


    Responses may be paginated. Use the following parameters to query the data. A full list of parameters can be found on the endpoint’s documentation page. Parameter

    Data Type

    Explanation


    limit

    integer

    Limit the data returned. Default = 20. offset

    integer

    Offset to the first item returned. Default = 0. ordering

    string

    Order the results set by the field name. Varies by endpoint. next

    string

    Paginate to the next response set. previous

    string

    Paginate to the last set response. # Errors

    We use standard HTTP status codes for success or failure. A typical error response may look something like this:


    ```json

    {

    "errors": [],

    "message": "error message",

    "status": 400

    }

    ```

    * `errors` - List of error details

    * `message` - Error description

    * `status` - HTTP status code


    Some common status codes and messages are:


    Number

    Message

    Explanation


    200

    OK

    The request succeeded. 201

    Resource creation

    A resource was created. 401

    Unauthorized

    The API key is invalid. 404

    Not found

    The resource was not found. 429

    Rate limit exceeded

    Too many requests. Wait a moment and try again. 500

    Server error

    Internal error. Wait a moment and try again. If the issue persists, contact Esper. See how our systems are doing by checking our status page. # Rate Limits

    To ensure quality of service for all customers, we enforce rate limits for API requests. Most customers won’t hit this limit with normal use. In case you experience 429 or rate limit exceeded errors, we recommend the following:

    * Try sending requests in batches. * Begin with about 20 requests at a time and building up from there. * Ensure your scripts are efficient and don’t contain redundant calls. * Reach out to your account manager to discuss your options.'
  termsOfService: https://esper.io/terms-of-service
  contact:
    email: developer@esper.io
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
  x-prefix-tag: esper cloud api
servers:
- url: https://{foo}-api.esper.cloud/api
  variables:
    foo:
      default: develop
      description: Custom end point
tags:
- name: geofence_Device State
  x-displayName: Device State
paths:
  /geofence/v1/geofences/{geofence_id}/device-summary:
    get:
      summary: Get device summary for a geofence
      description: 'Returns aggregate device statistics for a specific geofence — total device count, how many devices are currently inside the boundary, and how many are outside. Use it for a quick, single-call summary rather than pulling the full device list.


        Scoped to a single geofence_id and returns counts only, not individual device records — use the devices sub-resource for per-device detail.


        **About Geofences**


        A geofence is a virtual geographic boundary tied to device location tracking; devices are continuously evaluated as inside or outside the fence to trigger configured actions. This endpoint gives an at-a-glance rollup of that inside/outside state across all devices tied to the geofence.


        **Key Fields / Query Parameters**


        - geofence_id — path parameter identifying the geofence to summarize


        **Common Use Cases**


        - Powering a geofence dashboard tile showing total/inside/outside device counts

        - Quickly checking compliance for a location-restricted fleet without listing every device'
      operationId: geofence_getDeviceSummary
      tags:
      - geofence_Device State
      parameters:
      - $ref: '#/components/parameters/geofence_XEsperTenantIdHeader'
      - $ref: '#/components/parameters/geofence_XCallerIdHeader'
      - $ref: '#/components/parameters/geofence_GeofenceIdParam'
      security:
      - geofence_bearerAuth: []
      responses:
        '200':
          description: Device summary retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  content:
                    $ref: '#/components/schemas/geofence_DeviceSummaryResponse'
              examples:
                example:
                  value:
                    content:
                      total_devices: 100
                      inside_count: 60
                      outside_count: 35
                      unknown_count: 5
        '400':
          description: Invalid geofence ID or missing tenant ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geofence_ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geofence_ErrorResponse'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geofence_ErrorResponse'
  /geofence/v1/geofences/{geofence_id}/blueprints:
    get:
      summary: Get blueprint usage statistics for a geofence
      description: 'Returns paginated statistics on blueprint usage within a specific geofence — which blueprints are applied to devices inside that geofence and how many devices use each. Use it to understand how blueprint-driven configuration correlates with a location-based boundary.


        Scoped to a single geofence_id; each result identifies a blueprint and the count of devices in that geofence currently using it.


        **About Geofences**


        A geofence is a virtual geographic boundary that can be tied to blueprint-based device configuration, so devices entering or leaving the boundary can be managed differently depending on which blueprint they''re running. This endpoint gives visibility into that blueprint-to-geofence relationship.


        **Key Fields / Query Parameters**


        - geofence_id — path parameter identifying the geofence to report on


        **Common Use Cases**


        - Auditing which blueprint versions are in use across devices within a specific geofence

        - Verifying blueprint rollout coverage for a location-restricted device population'
      operationId: geofence_getBlueprintUsage
      tags:
      - geofence_Device State
      parameters:
      - $ref: '#/components/parameters/geofence_XEsperTenantIdHeader'
      - $ref: '#/components/parameters/geofence_XCallerIdHeader'
      - $ref: '#/components/parameters/geofence_GeofenceIdParam'
      - $ref: '#/components/parameters/geofence_OffsetParam'
      - $ref: '#/components/parameters/geofence_LimitParam'
      security:
      - geofence_bearerAuth: []
      responses:
        '200':
          description: Blueprint usage statistics retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  content:
                    type: object
                    properties:
                      next:
                        type:
                        - string
                        - 'null'
                        example: /v1/geofences/f5316a75-f186-4769-970e-28d6a1a0e110/blueprints?offset=10&limit=10
                      previous:
                        type:
                        - string
                        - 'null'
                        example: null
                      results:
                        type: array
                        items:
                          $ref: '#/components/schemas/geofence_BlueprintUsageItem'
              examples:
                example:
                  value:
                    content:
                      next: /v1/geofences/f5316a75-f186-4769-970e-28d6a1a0e110/blueprints?offset=10&limit=10
                      previous: null
                      results:
                      - blueprint_id: 550e8400-e29b-41d4-a716-446655440000
                        blueprint_version_number: 1
                        device_count: 25
                      - blueprint_id: 550e8400-e29b-41d4-a716-446655440002
                        blueprint_version_number: 2
                        device_count: 15
        '400':
          description: Invalid geofence ID, missing tenant ID, or missing pagination parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geofence_ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geofence_ErrorResponse'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geofence_ErrorResponse'
  /geofence/v1/geofences/{geofence_id}/devices:
    get:
      summary: Get devices for a geofence
      description: 'Returns a paginated list of devices and their current state relative to a specific geofence. Use it when you need the actual device records, not just aggregate counts.


        Supports filtering by inside/outside status and by blueprint version ID, so you can drill into, for example, only the devices currently outside the boundary running a particular blueprint version.


        **About Geofences**


        A geofence is a virtual geographic boundary tied to device location tracking, and can be associated with blueprint-driven configuration so a device''s blueprint version may factor into how it''s managed inside vs. outside the fence. This endpoint exposes the per-device detail behind the aggregate device-summary statistics.


        **Key Fields / Query Parameters**


        - geofence_id — path parameter identifying the geofence

        - inside/outside status — filters devices by whether they are currently within the geofence boundary

        - blueprint version ID — filters devices by the blueprint version they''re currently running


        **Common Use Cases**


        - Listing devices that have left a geofenced area for follow-up or remediation

        - Cross-referencing which blueprint versions are running on devices inside vs. outside a boundary'
      operationId: geofence_getDevices
      tags:
      - geofence_Device State
      parameters:
      - $ref: '#/components/parameters/geofence_XEsperTenantIdHeader'
      - $ref: '#/components/parameters/geofence_XCallerIdHeader'
      - $ref: '#/components/parameters/geofence_GeofenceIdParam'
      - $ref: '#/components/parameters/geofence_OffsetParam'
      - $ref: '#/components/parameters/geofence_LimitParam'
      - $ref: '#/components/parameters/geofence_InsideParam'
      - $ref: '#/components/parameters/geofence_BlueprintIdParam'
      - $ref: '#/components/parameters/geofence_BlueprintVersionNumberParam'
      security:
      - geofence_bearerAuth: []
      responses:
        '200':
          description: Device list retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  content:
                    type: object
                    properties:
                      next:
                        type:
                        - string
                        - 'null'
                        example: /v1/geofences/f5316a75-f186-4769-970e-28d6a1a0e110/devices?offset=10&limit=10
                      previous:
                        type:
                        - string
                        - 'null'
                        example: null
                      results:
                        type: array
                        items:
                          $ref: '#/components/schemas/geofence_DeviceListingItem'
              examples:
                example:
                  value:
                    content:
                      next: /v1/geofences/f5316a75-f186-4769-970e-28d6a1a0e110/devices?offset=10&limit=10
                      previous: null
                      results:
                      - device_id: 660e8400-e29b-41d4-a716-446655440000
                        blueprint_id: 550e8400-e29b-41d4-a716-446655440000
                        blueprint_version_number: 1
                        inside: true
                        state_changed_at: '2025-07-24T09:00:00Z'
                      - device_id: 660e8400-e29b-41d4-a716-446655440001
                        blueprint_id: 550e8400-e29b-41d4-a716-446655440002
                        blueprint_version_number: 2
                        inside: false
                        state_changed_at: '2025-07-24T08:30:00Z'
        '400':
          description: Invalid geofence ID, missing tenant ID, invalid query parameters, or missing pagination parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geofence_ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geofence_ErrorResponse'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geofence_ErrorResponse'
components:
  parameters:
    geofence_BlueprintVersionNumberParam:
      name: blueprint_version_number
      in: query
      required: false
      schema:
        type: integer
      description: Filter devices by blueprint version number
      example: 1
    geofence_LimitParam:
      name: limit
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
      description: Maximum number of items to return
    geofence_XEsperTenantIdHeader:
      name: X-Esper-Tenant-Id
      in: header
      required: true
      x-internal: true
      schema:
        type: string
        format: uuid
      description: Esper tenant ID associated with the request
    geofence_BlueprintIdParam:
      name: blueprint_id
      in: query
      required: false
      schema:
        type: string
        format: uuid
      description: Filter devices by blueprint ID
      example: 550e8400-e29b-41d4-a716-446655440000
    geofence_InsideParam:
      name: inside
      in: query
      required: false
      schema:
        type: boolean
      description: Filter devices by whether they are inside (true) or outside (false) the geofence
      example: true
    geofence_GeofenceIdParam:
      name: geofence_id
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: UUID of the geofence
      example: f5316a75-f186-4769-970e-28d6a1a0e110
    geofence_OffsetParam:
      name: offset
      in: query
      required: false
      schema:
        type: integer
        minimum: 0
        default: 0
      description: Number of items to skip before starting to collect the result set
    geofence_XCallerIdHeader:
      name: X-Caller-Id
      in: header
      required: true
      x-internal: true
      schema:
        type: string
        minLength: 1
        maxLength: 255
      description: Unique identifier for the caller
  schemas:
    geofence_DeviceSummaryResponse:
      type: object
      description: Summary statistics of devices in relation to a geofence
      properties:
        total_devices:
          type: integer
          minimum: 0
          description: Total number of devices associated with the geofence
          example: 100
        inside_count:
          type: integer
          minimum: 0
          description: Number of devices currently inside the geofence
          example: 60
        outside_count:
          type: integer
          minimum: 0
          description: Number of devices currently outside the geofence
          example: 35
        unknown_count:
          type: integer
          minimum: 0
          description: Number of devices with unknown state (neither inside nor outside)
          example: 5
      required:
      - total_devices
      - inside_count
      - outside_count
      - unknown_count
    geofence_DeviceListingItem:
      type: object
      description: Information about a device and its state within a geofence
      properties:
        device_id:
          type: string
          format: uuid
          description: UUID of the device
          example: 660e8400-e29b-41d4-a716-446655440000
        blueprint_id:
          type: string
          format: uuid
          description: UUID of the blueprint used by this device
          example: 550e8400-e29b-41d4-a716-446655440000
        blueprint_version_number:
          type: integer
          description: Blueprint version number used by this device
          example: 1
        inside:
          type:
          - boolean
          - 'null'
          description: Whether the device is currently inside the geofence. Null means unknown state.
          example: true
        state_changed_at:
          type:
          - string
          - 'null'
          format: date-time
          description: When the device's geofence state was last changed. Null means unknown time.
          example: '2025-07-24T09:00:00Z'
        latitude:
          type:
          - number
          - 'null'
          format: double
          description: Last known latitude for the device, rounded to 4 decimal places.
          example: 37.7749
        longitude:
          type:
          - number
          - 'null'
          format: double
          description: Last known longitude for the device, rounded to 4 decimal places.
          example: -122.4194
        location_updated_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Timestamp when the device location was last updated.
          example: '2025-07-24T09:05:00Z'
      required:
      - device_id
      - blueprint_id
      - blueprint_version_number
    geofence_BlueprintUsageItem:
      type: object
      description: Statistics about blueprint usage within a geofence
      properties:
        blueprint_id:
          type: string
          format: uuid
          description: UUID of the blueprint
          example: 550e8400-e29b-41d4-a716-446655440000
        blueprint_version_number:
          type: integer
          description: Blueprint version number
          example: 1
        device_count:
          type: integer
          minimum: 0
          description: Number of devices using this blueprint revision
          example: 25
      required:
      - blueprint_id
      - blueprint_version_number
      - device_count
    geofence_ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Error message
          example: Invalid input
        content:
          type: object
          description: Additional error details
          example: {}
      required:
      - message
      - content
  securitySchemes:
    esper_cloud_api_apiKey:
      type: http
      scheme: bearer
      description: "#### API KEY - Access Token\nAccess token for API is passed as authorization header in calls. You need to generate this from your Esper Console at `<domain>-api.esper.cloud` where foo is the sub-domain name you gave for your Esper Dev environment when you signed up for your Esper account. Please follow the instructions [in this Help article](https://help.esper.io/hc/en-us/articles/12656959508497) to generate an access token.\nOnce you have the access token, you need to send an authorization header as below\n\n```bash\n\n    curl -X GET \\\n      https://<domain>-api.esper.cloud/api/enterprise/<enterprise_id>/device/ \\\n      -H 'Authorization: Bearer <ACCESS_TOKEN>' \\\n      -H 'Content-Type: application/json' \\\n```\n\n> Please note the use of keyword **Bearer** before the token value.\n\n\nYou can read more about api key authentication [here](https://help.esper.io/hc/en-us/articles/12656959508497).\n"
    pipelines_SCAPIAuthToken:
      type: http
      scheme: bearer
    device_apiKey:
      type: http
      scheme: bearer
      description: "#### API KEY - Access Token\nAccess token for API is passed as authorization header in calls. You need to generate this from your Esper Console at `<domain>-api.esper.cloud` where foo is the sub-domain name you gave for your Esper Dev environment when you signed up for your Esper account. Please follow the instructions [in this Help article](https://help.esper.io/hc/en-us/articles/12656959508497) to generate an access token.\nOnce you have the access token, you need to send an authorization header as below\n\n```bash\n\n    curl -X GET \\\n      https://<domain>-api.esper.cloud/api/enterprise/<enterprise_id>/device/ \\\n      -H 'Authorization: Bearer <ACCESS_TOKEN>' \\\n      -H 'Content-Type: application/json' \\\n```\n\n> Please note the use of keyword **Bearer** before the token value.\n\n\nYou can read more about api key authentication [here](https://help.esper.io/hc/en-us/articles/12656959508497).\n"
    apps_management_apiKey:
      type: http
      scheme: bearer
      description: "#### API KEY - Access Token\nAccess token for API is passed as authorization header in calls. You need to generate this from your Esper Console at `<domain>-api.esper.cloud` where foo is the sub-domain name you gave for your Esper Dev environment when you signed up for your Esper account. Please follow the instructions [in this Help article](https://help.esper.io/hc/en-us/articles/12656959508497) to generate an access token.\nOnce you have the access token, you need to send an authorization header as below\n\n```bash\n\n    curl -X GET \\\n      https://<domain>-api.esper.cloud/api/enterprise/<enterprise_id>/device/ \\\n      -H 'Authorization: Bearer <ACCESS_TOKEN>' \\\n      -H 'Content-Type: application/json' \\\n```\n\n> Please note the use of keyword **Bearer** before the token value.\n\n\nYou can read more about api key authentication [here](https://help.esper.io/hc/en-us/articles/12656959508497).\n"
    commands_apiKey:
      type: http
      scheme: bearer
      description: "#### API KEY - Access Token\nAccess token for API is passed as authorization header in calls. You need to generate this from your Esper Console at `<domain>-api.esper.cloud` where foo is the sub-domain name you gave for your Esper Dev environment when you signed up for your Esper account. Please follow the instructions [in this Help article](https://help.esper.io/hc/en-us/articles/12656959508497) to generate an access token.\nOnce you have the access token, you need to send an authorization header as below\n\n```bash\n\n    curl -X GET \\\n      https://<domain>-api.esper.cloud/api/enterprise/<enterprise_id>/device/ \\\n      -H 'Authorization: Bearer <ACCESS_TOKEN>' \\\n      -H 'Content-Type: application/json' \\\n```\n\n> Please note the use of keyword **Bearer** before the token value.\n\n\nYou can read more about api key authentication [here](https://help.esper.io/hc/en-us/articles/12656959508497).\n"
    drift_apiKey:
      type: http
      scheme: bearer
      description: "#### API KEY - Access Token\nAccess token for API is passed as authorization header in calls. You need to generate this from your Esper Console at `<domain>-api.esper.cloud` where foo is the sub-domain name you gave for your Esper Dev environment when you signed up for your Esper account. Please follow the instructions [in this Help article](https://help.esper.io/hc/en-us/articles/12656959508497) to generate an access token.\nOnce you have the access token, you need to send an authorization header as below\n\n```bash\n\n    curl -X GET \\\n      https://<domain>-api.esper.cloud/api/enterprise/<enterprise_id>/device/ \\\n      -H 'Authorization: Bearer <ACCESS_TOKEN>' \\\n      -H 'Content-Type: application/json' \\\n```\n\n> Please note the use of keyword **Bearer** before the token value.\n\n\nYou can read more about api key authentication [here](https://help.esper.io/hc/en-us/articles/12656959508497).\n"
    device_onboarding_apiKey:
      type: http
      scheme: bearer
      description: "#### API KEY - Access Token\nAccess token for API is passed as authorization header in calls. You need to generate this from your Esper Console at `<domain>-api.esper.cloud` where foo is the sub-domain name you gave for your Esper Dev environment when you signed up for your Esper account. Please follow the instructions [in this Help article](https://help.esper.io/hc/en-us/articles/12656959508497) to generate an access token.\nOnce you have the access token, you need to send an authorization header as below\n\n```bash\n\n    curl -X GET \\\n      https://<domain>-api.esper.cloud/api/enterprise/<enterprise_id>/device/ \\\n      -H 'Authorization: Bearer <ACCESS_TOKEN>' \\\n      -H 'Content-Type: application/json' \\\n```\n\n> Please note the use of keyword **Bearer** before the token value.\n\n\nYou can read more about api key authentication [here](https://help.esper.io/hc/en-us/articles/12656959508497).\n"
    tenant_apiKey:
      type: http
      scheme: bearer
      description: "#### API KEY - Access Token\nAccess token for API is passed as authorization header in calls. You need to generate this from your Esper Console at `<domain>-api.esper.cloud` where foo is the sub-domain name you gave for your Esper Dev environment when you signed up for your Esper account. Please follow the instructions [in this Help article](https://help.esper.io/hc/en-us/articles/12656959508497) to generate an access token.\nOnce you have the access token, you need to send an authorization header as below\n\n```bash\n\n    curl -X GET \\\n      https://<domain>-api.esper.cloud/api/enterprise/<enterprise_id>/device/ \\\n      -H 'Authorization: Bearer <ACCESS_TOKEN>' \\\n      -H 'Content-Type: application/json' \\\n```\n\n> Please note the use of keyword **Bearer** before the token value.\n\n\nYou can read more about api key authentication [here](https://help.esper.io/hc/en-us/articles/12656959508497).\n"
    foundation_AuthToken:
      type: apiKey
      in: header
      name: Authorization
    reports_bearerAuth:
      type: http
      scheme: bearer
    geofence_bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
x-tagGroups:
- name: ESPER CLOUD API
  tags:
  - esper_cloud_api_Company Settings
  - esper_cloud_api_Application
  - esper_cloud_api_Application V1
  - esper_cloud_api_AndroidDevice
  - esper_cloud_api_Device Group
  - esper_cloud_api_Token (Deprecated)
  - esper_cloud_api_Commands V2
  - esper_cloud_api_Enterprise Policy
  - esper_cloud_api_Geofence
  - esper_cloud_api_Content
  - esper_cloud_api_User (Deprecated)
  - esper_cloud_api_User
  - esper_cloud_api_Blueprint (Deprecated)
  - esper_cloud_api_Directory Record
  - esper_cloud_api_Tile Icon
  - esper_cloud_api_Alerts
  - esper_cloud_api_Alarms
  - esper_cloud_api_Wallpapers
  - esper_cloud_api_Device Telemetry
  - esper_cloud_api_Daily and Custom Reports
  - esper_cloud_api_SSO Connections
  - esper_cloud_api_Roles
  - esper_cloud_api_Personal Access Token
- name: BLUEPRINTS
  tags:
  - blueprints_Blueprints API
  - blueprints_Custom Actions API
  - blueprints_Background Scripts API
- name: PIPELINES
  tags:
  - pipelines_System Status Code
  - pipelines_System
  - pipelines_Pipelines
  - pipelines_Stages
  - pipelines_Target Lists
  - pipelines_Targets
  - pipelines_Device Groups
  - pipelines_Operation Lists
  - pipelines_Operations
  - pipelines_Pipeline Runs
  - pipelines_Stage Runs
  - pipelines_Target Runs
- name: DEVICE
  tags:
  - device_Device
  - device_Device Heartbeat
  - device_Device Apps
  - device_Device Enrollment in EMM
  - device_Operations
  - device_DeviceOperations
  - device_MultiOS Remote Viewer
- name: APPS MANAGEMENT
  tags:
  - apps_management_VPP License Management
  - apps_management_VPP App Management
  - apps_management_Tenant Apps
  - apps_management_Apple App Store
  - apps_management_App List
  - apps_management_Webclips
  - apps_management_Provisioning Profiles
  - apps_management_Preferred Regions
  - apps_management_OEM Config Schema
  - apps_management_Esper Apps
  - apps_management_Tenant Esper Apps
- name: COMMANDS
  tags:
  - commands_Command Request
  - commands_Command Status
- name: DRIFT
  tags:
  - drift_Converge
  - drift_Converge Command
  - drift_Blueprint Drift
- name: DEVICE ONBOARDING
  tags:
  - device_onboarding_DEP Sync Request
  - device_onboarding_ABM Provisioning
- name: TENANT
  tags:
  - tenant_APNs certificate
  - tenant_DEP Profile
  - tenant_DEP Tokens
  - tenant_VPP Token Management
  - tenant_Google Enterprise
  - tenant_MDM Service Config
- name: FOUNDATION
  tags:
  - foundation_FoundryBuilds
  - foundation_FoundryDeviceModels
  - foundation_FoundryEvents
- name: REPORTS
  tags:
  - reports_Reports API
- name: GEOFENCE
  tags:
  - geofence_Geofences
  - geofence_Device State
x-provenance:
  method: harvested
  publisher: Esper
  source: https://api.esper.io/_bundle/openapi.json?download
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)