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-apps-management-webclips-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: 3.2.0
info:
title: ESPER API REFERENCE Apps Management Webclips 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: apps_management_Webclips
description: API to manage webclips for a tenant
x-displayName: Webclips
paths:
/v2/webclips:
post:
x-badges:
- name: Stable
color: green
security:
- apps_management_apiKey: []
summary: Create webclip for a tenant
description: '⚠️ iOS/iPadOS only. Webclips are home screen shortcuts for iOS and iPadOS managed devices.
Creates a new webclip in the tenant library, making it available for deployment to iOS/iPadOS managed devices via blueprint or install operation.
**About Create Webclip**
A webclip is a home screen bookmark that opens a specified URL in a browser or within a target app, appearing as an app icon on the device. In Esper, webclips are managed as a distinct app type (WEBCLIP) within the iOS app system. The request uses multipart/form-data and requires label, esper_name, url, target_bundle_id, target_bundle_name, is_full_screen, and is_removable. An optional icon binary can be uploaded to set a custom home screen icon. The target_bundle_id and target_bundle_name identify the iOS app that will handle the URL (e.g., Safari). A 409 response indicates a webclip with a conflicting identifier already exists.
**Key Fields**
label (required) — Display name shown on the device home screen
esper_name (required) — Internal name for the webclip in Esper (used for lookup and management)
url (required) — The URL the webclip opens
target_bundle_id (required) — Bundle ID of the app that handles the URL (e.g., com.apple.mobilesafari)
target_bundle_name (required) — Display name of the target bundle (e.g., Safari)
is_full_screen (required) — Whether the webclip opens in full-screen mode
is_removable (required) — Whether the user can remove the webclip from the home screen
icon (optional) — Custom icon binary for the home screen shortcut
**Common Use Cases**
Creating a home screen shortcut to an internal web app or portal for field devices
Adding a branded webclip with a custom icon that opens in full-screen kiosk-style mode
Deploying a managed browser link that users cannot remove from the home screen
**Best Practices**
Set is_removable=false for compliance-critical or kiosk-mode webclips that should not be user-removable
Use a descriptive esper_name that distinguishes webclips with similar labels — it is the primary lookup identifier in Esper
After creation, capture the returned id (webclip UUID) for blueprint configuration or install operations
**Workflow**
Prepare the webclip details — URL, target bundle, label, and icon if needed
Submit the multipart/form-data POST with all required fields
Capture the returned webclip id for use in blueprint or operation configuration'
tags:
- apps_management_Webclips
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/apps_management_WebclipCreateRequest'
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
content:
$ref: '#/components/schemas/apps_management_Webclip'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_400_Bad_Data'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_401_Unauthorized'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_409_Conflict'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_500_Internal_Server_Error'
operationId: postV2Webclips
x-operation-id-source: derived
get:
x-badges:
- name: Stable
color: green
security:
- apps_management_apiKey: []
parameters:
- in: query
name: limit
schema:
type: number
- in: query
name: offset
schema:
type: number
- in: query
name: label
schema:
type: string
- in: query
name: exact_esper_name
schema:
type: string
summary: Get webclips for a tenant
description: '⚠️ Apple devices only.
Retrieves a paginated list of all webclips in the tenant library, with optional filtering by label or internal Esper name.
**About List Webclips**
Returns Webclip records for all webclips uploaded to the tenant — the same resource created by POST /api/v2/webclips. Each record includes the webclip''s UUID, label, URL, target bundle details, full-screen and removability flags, icon URL, and audit timestamps. The exact_esper_name filter performs an exact-match lookup on the internal esper_name field, useful for finding a specific webclip by its Esper identifier without paginating through the full list. For a unified view of webclips alongside IPA-based apps, use GET /api/v2/apps with app_type=WEBCLIP.
**Key Query Parameters**
label — Filter by webclip display label (partial match)
exact_esper_name — Exact-match filter on the internal esper_name field
**Common Use Cases**
Looking up a specific webclip''s UUID by its esper_name for use in blueprint or operation configuration
Auditing all webclips in the tenant library before a deployment or cleanup operation
Verifying webclip details (URL, target bundle, removability) before assigning to a blueprint
**Best Practices**
Use exact_esper_name when you know the internal name — it is more precise than label and avoids ambiguity with similarly labeled webclips
Paginate with limit and offset for tenants with large webclip libraries'
tags:
- apps_management_Webclips
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
content:
type: object
properties:
count:
type: integer
description: number of results returned
prev:
type: string
description: URL for previous page of results
next:
type: string
description: URL for next page of results
results:
type: array
items:
oneOf:
- $ref: '#/components/schemas/apps_management_Webclip'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_400_Bad_Data'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_401_Unauthorized'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_500_Internal_Server_Error'
operationId: getV2Webclips
x-operation-id-source: derived
/v2/webclips/{webclipId}:
get:
x-badges:
- name: Stable
color: green
security:
- apps_management_apiKey: []
parameters:
- in: path
required: true
name: webclipId
schema:
type: string
format: uuid
summary: Get webclip by id for a tenant
description: '⚠️ iOS/iPadOS only.
Retrieves the full record for a specific webclip by its Esper UUID.
Returns a single Webclip object with all fields including label, URL, target bundle ID and name, full-screen mode, removability, icon URL, and audit timestamps.
**About Get Webclip**
This endpoint fetches the complete detail record for a single webclip, identified by its Esper-assigned UUID. It is the direct lookup complement to GET /api/v2/webclips — use it when you already have the webclipId and need to confirm current configuration or retrieve specific field values before an update or deployment operation. The response is identical in structure to webclip records returned by the list endpoint.
**Key Fields**
webclipId (path) — Esper webclip UUID (required)
label — Home screen display name
url — URL the webclip opens
target_bundle_id / target_bundle_name — iOS app handling the URL
is_full_screen / is_removable — Behavioral flags
icon_url — URL for the webclip''s home screen icon (nullable)
**Common Use Cases**
Confirming webclip configuration details before including it in a blueprint
Retrieving current url or target bundle values for audit or documentation purposes
Pre-flight check before a DELETE to confirm the correct webclip is targeted
**Best Practices**
Use this as a pre-flight check before DELETE operations to confirm the correct webclipId is targeted
If the webclipId is unknown, use GET /api/v2/webclips with exact_esper_name to look it up first'
tags:
- apps_management_Webclips
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
content:
$ref: '#/components/schemas/apps_management_Webclip'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_400_Bad_Data'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_401_Unauthorized'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_404_Not_Found'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_500_Internal_Server_Error'
operationId: getV2WebclipsByWebclipId
x-operation-id-source: derived
delete:
x-badges:
- name: Stable
color: green
security:
- apps_management_apiKey: []
parameters:
- in: path
required: true
name: webclipId
schema:
type: string
format: uuid
summary: Delete webclip for a tenant
description: '⚠️ Apple devices only.
Deletes a specific webclip from the tenant library by its Esper UUID, returning the deleted webclip record.
The deletion is permanent. A 409 response indicates the webclip cannot be deleted because it is currently referenced by an active blueprint or configuration.
**About Delete Webclip**
Deleting a webclip removes it from the tenant library and makes it unavailable for new deployments. The 200 response returns the complete Webclip record for the deleted entry — retain it for audit purposes. The 409 Conflict response is significant: it indicates the webclip is still referenced in a blueprint or active configuration and must be removed from those references before deletion can proceed. Devices that already have the webclip installed are not immediately affected by deletion from the library — the webclip remains on those devices until actively removed via an operation or blueprint change.
**Key Fields**
webclipId (path) — Esper webclip UUID (required)
Response — The deleted Webclip record
**Common Use Cases**
Removing an outdated or incorrect webclip from the tenant library
Cleaning up test webclips created during development or blueprint configuration
Decommissioning a webclip for a retired internal web application
**Best Practices**
If you receive a 409, use GET /api/v2/webclips/{webclipId} to confirm which blueprints and blueprint versions reference the webclip, then remove those references before retrying the delete
Store the returned Webclip record from the 200 response for audit trail purposes
Note that deletion removes the webclip from the console but does not uninstall it from devices where it is already deployed — use an uninstall operation for that'
tags:
- apps_management_Webclips
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
content:
$ref: '#/components/schemas/apps_management_Webclip'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_400_Bad_Data'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_401_Unauthorized'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_404_Not_Found'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_409_Conflict'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/apps_management_Error_500_Internal_Server_Error'
operationId: deleteV2WebclipsByWebclipId
x-operation-id-source: derived
components:
schemas:
apps_management_WebclipCreateRequest:
type: object
properties:
icon:
type: string
format: binary
description: Icon of the webclip
label:
type: string
description: Label of the web clip which is displayed on device
example: Example Label
esper_name:
type: string
description: Name of the webclip in Esper
example: Example Name
url:
type: string
description: URL for the webclip
example: https://example.com
target_bundle_id:
type: string
description: Target bundle ID for the webclip
example: com.example.bundle
target_bundle_name:
type: string
description: Target bundle name for the webclip
example: Example Bundle
is_full_screen:
type: boolean
description: Indicates if the webclip is full screen
example: true
is_removable:
type: boolean
description: Indicates if the webclip is removable
example: false
required:
- label
- esper_name
- url
- target_bundle_id
- target_bundle_name
- is_full_screen
- is_removable
apps_management_Error_404_Not_Found:
type: object
properties:
code:
type: integer
format: int32
default: 404
message:
type: string
content:
type: object
required:
- code
- message
apps_management_Error_400_Bad_Data:
type: object
properties:
code:
type: integer
format: int32
default: 400
message:
type: string
content:
type: object
required:
- code
- message
apps_management_Error_500_Internal_Server_Error:
type: object
properties:
code:
type: integer
format: int32
default: 500
message:
type: string
content:
type: object
required:
- code
- message
apps_management_Error_409_Conflict:
type: object
properties:
code:
type: integer
format: int32
default: 409
message:
type: string
content:
type: object
required:
- code
- message
apps_management_Webclip:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for the web clip
example: 09811f63-e2ca-4625-97c1-081145195d67
tenant_id:
type: string
format: uuid
description: Tenant identifier
example: 7d5fd1bf-bdf9-490b-9e32-203756a61235
label:
type: string
description: Label of the web clip
example: Google
url:
type: string
format: uri
description: URL associated with the web clip
example: https://www.google.com/
icon_url:
type:
- string
- 'null'
format: uri
description: URL for the icon of the web clip
example: null
target_bundle_name:
type: string
description: Name of the target bundle
example: Esper
target_bundle_id:
type: string
description: ID of the target bundle
example: com.esper.io
is_full_screen:
type: boolean
description: Indicates if the web clip is full screen
example: false
is_removable:
type: boolean
description: Indicates if the web clip is removable
example: true
created_at:
type: string
format: date-time
description: Timestamp of when the web clip was created
updated_at:
type: string
format: date-time
description: Timestamp of when the web clip was last updated
created_by:
type: string
description: The user who created the web clip
updated_by:
type: string
description: The user who last updated the web clip
apps_management_Error_401_Unauthorized:
type: object
properties:
code:
type: integer
format: int32
default: 401
message:
type: string
content:
type: object
required:
- code
- message
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
# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/esper/refs/heads/main/openapi/esper-apps-management-webclips-api-openapi.yml