Esper Apps Management Webclips API

API to manage webclips for a tenant

Operations 4

POST /v2/webclips Create webclip for a tenant #
GET /v2/webclips Get webclips for a tenant #
GET /v2/webclips/{webclipId} Get webclip by id for a tenant #
DELETE /v2/webclips/{webclipId} Delete webclip for a tenant #

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-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 Specification

esper-apps-management-webclips-api-openapi.yml Raw ↑
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