Esper drift_Blueprint Drift API

APIs to fetch device Blueprint Drift status

Operations 3

GET /v2/blueprint-drift/summary Fetch Blueprint Drift summary counts for a tenant #
GET /v2/blueprint-drift/status Fetch Blueprint Drift status for devices #
GET /v2/blueprint-drift/{deviceId}/status Fetch per-setting Blueprint Drift Audit for a device #

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-drift-blueprint-drift-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-drift-blueprint-drift-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ESPER API REFERENCE drift_Blueprint Drift 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: drift_Blueprint Drift
  description: APIs to fetch device Blueprint Drift status
  x-displayName: Blueprint Drift
paths:
  /v2/blueprint-drift/summary:
    get:
      summary: Fetch Blueprint Drift summary counts for a tenant
      description: 'Fetches Blueprint Drift summary counts for a tenant.


        Returns the number of devices grouped by their highest Blueprint Drift severity, giving a tenant-wide, at-a-glance view of fleet configuration compliance. Reponse varies by customer and feature availibility. Non-Architect customer where Blueprint Drift is not enabled returns an empty response. Architect customers where Blueprint Drift is not enabled due to not meeting the Esper Agent eligibility criteria returns a Version Mismatch response. Architect customers where Blueprint Drift is enabled returns the full Blueprint Drift response, including drift details.


        **About Blueprint Drift Summary**

        Blueprint Drift detects when a device''s actual configuration diverges from the Blueprint it was assigned, using state reported via the device state-report ingestion endpoint. This summary endpoint aggregates that per-device drift status into fleet-wide severity counts.


        **Common Use Cases**

        - Powering a fleet-wide compliance dashboard showing how many devices have drifted from their Blueprint

        - Prioritizing remediation by severity across the fleet

        - Tracking drift trends over time by polling this summary periodically


        **Best Practices**

        - Use this summary for dashboard-level reporting, and drill into the status/per-device endpoints when investigating specific devices

        - Poll on a reasonable interval appropriate for a compliance dashboard rather than continuously

        - Pair with the per-device status endpoint to identify which specific devices need attention within a severity bucket


        **Workflow**

        1. GET this endpoint for the tenant-wide severity breakdown

        2. Use GET /v2/blueprint-drift/status to identify which devices fall into a severity bucket of interest

        3. Use GET /v2/blueprint-drift/{deviceId}/status for per-setting detail on a specific device'
      operationId: getBlueprintDriftSummary
      tags:
      - drift_Blueprint Drift
      security:
      - drift_apiKey: []
      responses:
        '200':
          description: Blueprint Drift summary counts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_BlueprintDriftSummaryResponse'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_400_Bad_Data'
        '401':
          description: Authorization information is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_401_Unauthorized'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_500_Internal_Server_Error'
  /v2/blueprint-drift/status:
    get:
      summary: Fetch Blueprint Drift status for devices
      description: 'Fetches Blueprint Drift status for a set of devices.


        Returns each requested device''s current Blueprint Drift state (compliant, drifted, or unknown) in a single call, given a list of device IDs. Reponse varies by customer and feature availibility. Non-Architect customer where Blueprint Drift is not enabled returns an empty response. Architect customers where Blueprint Drift is not enabled due to not meeting the Esper Agent eligibility criteria returns a Version Mismatch response. Architect customers where Blueprint Drift is enabled returns the full Blueprint Drift response, including drift details.


        **About Blueprint Drift Status**

        Blueprint Drift detects when a device''s actual configuration diverges from its assigned Blueprint. This endpoint is the per-device counterpart to the fleet-wide summary, letting you check drift status for a specific set of devices at once.


        **Key Fields / Query Parameters**


        - `device_ids` — List of device UUIDs to check drift status for


        **Common Use Cases**

        - Checking drift status for a specific group of devices before or after a remediation effort

        - Confirming devices returned to compliant status after a config fix

        - Building a device-list view filtered or annotated by drift status


        **Best Practices**

        - Batch device_ids in a single call rather than checking devices one at a time

        - Treat unknown status as meaning insufficient state data has been reported yet, not necessarily non-compliant

        - Use the per-setting audit endpoint for any device showing drifted status to see exactly what differs


        **Workflow**

        1. Gather the device_ids to check

        2. GET this endpoint with those device_ids

        3. For any device showing drifted, call GET /v2/blueprint-drift/{deviceId}/status for per-setting detail'
      operationId: getBlueprintDriftStatus
      tags:
      - drift_Blueprint Drift
      security:
      - drift_apiKey: []
      parameters:
      - in: query
        name: device_ids
        required: true
        schema:
          type: string
          maxLength: 10000
          pattern: ^([0-9a-fA-F\\-]{36})(,([0-9a-fA-F\\-]{36}))*$
        description: 'Comma-separated list of device UUIDs (max 100 ids). Devices not found return with state: unknown in the response.

          '
        example: 550e8400-e29b-41d4-a716-446655440001,550e8400-e29b-41d4-a716-446655440002
      responses:
        '200':
          description: Blueprint Drift status result set
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_BlueprintDriftStatusResponse'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_400_Bad_Data'
        '401':
          description: Authorization information is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_401_Unauthorized'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_500_Internal_Server_Error'
  /v2/blueprint-drift/{deviceId}/status:
    get:
      summary: Fetch per-setting Blueprint Drift Audit for a device
      description: 'Fetches a per-setting Blueprint Drift audit for a single device.


        Returns a row for every setting evaluated against the device''s assigned Blueprint, so you can see exactly which individual settings have drifted rather than just an overall status. Reponse varies by customer and feature availibility. Non-Architect customer where Blueprint Drift is not enabled returns an empty response. Architect customers where Blueprint Drift is not enabled due to not meeting the Esper Agent eligibility criteria returns a Version Mismatch response. Architect customers where Blueprint Drift is enabled returns the full Blueprint Drift response, including drift details.


        **About Blueprint Drift Per-Setting Audit**

        Blueprint Drift detects when a device''s actual configuration diverges from its assigned Blueprint. This endpoint provides the most granular view — a setting-by-setting comparison — used when the summary or batch status endpoints indicate a device has drifted and you need to know exactly what changed.


        **Key Fields / Query Parameters**

        - `deviceId` — UUID of the device to audit


        **Common Use Cases**

        - Diagnosing exactly which settings caused a device to be flagged as drifted

        - Verifying a specific setting was corrected after a remediation action

        - Providing detailed compliance evidence for a single device during an audit


        **Best Practices**

        - Use this endpoint only after the summary or batch status endpoints indicate the device is drifted, to avoid unnecessary per-setting calls at scale

        - Cross-reference drifted settings against the device''s assigned Blueprint configuration to plan remediation

        - Re-check after remediation to confirm the specific settings returned to compliant


        **Workflow**

        1. Identify a drifted device via the summary or batch status endpoint

        2. GET this endpoint with the device''s deviceId for the per-setting breakdown

        3. Remediate the drifted settings and re-check to confirm compliance'
      operationId: getDeviceBlueprintDriftSettings
      tags:
      - drift_Blueprint Drift
      security:
      - drift_apiKey: []
      parameters:
      - in: path
        name: deviceId
        required: true
        schema:
          type: string
          format: uuid
        description: Device identifier
      responses:
        '200':
          description: Per-setting Blueprint Drift details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_BlueprintDriftDeviceSettingsResponse'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_400_Bad_Data'
        '401':
          description: Authorization information is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_401_Unauthorized'
        '404':
          description: Device not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_404_Not_Found'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/drift_Error_500_Internal_Server_Error'
components:
  schemas:
    drift_BlueprintDriftDeviceSetting:
      type: object
      properties:
        setting:
          type: string
          description: Setting identifier
        display_name:
          type: string
          description: Display name for the setting
        section:
          type: string
          description: Blueprint section this setting belongs to (e.g., "Connectivity", "Apps & Configuration")
        device_state:
          type:
          - string
          - 'null'
          description: Current device value (if reported)
        desired_state:
          type:
          - string
          - 'null'
          description: Desired state defined by blueprint
        state:
          type: string
          description: Blueprint Drift status for the setting
          enum:
          - drifted
          - compliant
        severity:
          type: string
          description: Blueprint Drift severity
          enum:
          - ignore
          - critical
        drift_calculated_at:
          type: string
          format: date-time
          description: Timestamp when drift was calculated
        desired_state_reported_at:
          type: string
          format: date-time
          description: Timestamp when desired state was reported
        device_state_reported_at:
          type: string
          format: date-time
          description: Timestamp when device state was reported
      required:
      - setting
      - state
      - severity
      - drift_calculated_at
      - desired_state_reported_at
      - device_state_reported_at
    drift_Error_500_Internal_Server_Error:
      type: object
      properties:
        code:
          type: integer
          format: int32
          default: 500
        message:
          type: string
        content:
          type: object
      required:
      - code
      - message
    drift_Error_401_Unauthorized:
      type: object
      properties:
        code:
          type: integer
          format: int32
          default: 401
        message:
          type: string
        content:
          type: object
      required:
      - code
      - message
    drift_Error_404_Not_Found:
      type: object
      properties:
        code:
          type: integer
          format: int32
          default: 404
        message:
          type: string
        content:
          type: object
      required:
      - code
      - message
    drift_Error_400_Bad_Data:
      type: object
      properties:
        code:
          type: integer
          format: int32
          default: 400
        message:
          type: string
        content:
          type: object
      required:
      - code
      - message
    drift_BlueprintDriftStatusItem:
      type: object
      properties:
        device_id:
          type: string
          format: uuid
          description: Device identifier
        state:
          type: string
          description: Blueprint Drift status (drifted, compliant, unknown)
          enum:
          - drifted
          - compliant
          - unknown
        critical_drift_count:
          type: integer
          description: Number of drifted settings with severity = 40 (CRITICAL)
      required:
      - device_id
      - state
      - critical_drift_count
    drift_BlueprintDriftDeviceSettingsResponse:
      type: object
      properties:
        device_id:
          type: string
          format: uuid
          description: Device identifier
        settings:
          type: array
          items:
            $ref: '#/components/schemas/drift_BlueprintDriftDeviceSetting'
      required:
      - device_id
      - settings
    drift_BlueprintDriftSummaryResponse:
      type: object
      properties:
        drifted_total:
          type: integer
          description: Devices with drifted settings (highest severity shown in breakdown fields)
        compliant_total:
          type: integer
          description: Devices with no drifted settings
        critical_total:
          type: integer
          description: Drifted devices whose highest severity is critical
        major_total:
          type: integer
          description: Drifted devices whose highest severity is major
        minor_total:
          type: integer
          description: Drifted devices whose highest severity is minor
        log_only_total:
          type: integer
          description: Drifted devices whose highest severity is log_only
      required:
      - drifted_total
      - compliant_total
      - critical_total
      - major_total
      - minor_total
      - log_only_total
    drift_BlueprintDriftStatusResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/drift_BlueprintDriftStatusItem'
      required:
      - results
  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)