Esper esper_cloud_api_Personal Access Token API

The esper_cloud_api_Personal Access Token API from Esper — 2 operation(s) for esper_cloud_api_personal access token.

Operations 4

POST /authn2/v0/personal-access-token/ Generate a new personal access token #
GET /authn2/v0/personal-access-token/ Get tokens for corresponding user and tenant #
PUT /authn2/v0/personal-access-token/{personal_access_token_id} Renew personal access token #
DELETE /authn2/v0/personal-access-token/{personal_access_token_id} Delete personal access token #

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-esper-cloud-api-personal-access-token-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-esper-cloud-api-personal-access-token-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ESPER API REFERENCE esper_cloud_api_Personal Access Token…
  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: esper_cloud_api_Personal Access Token
  x-displayName: Personal Access Token
paths:
  /authn2/v0/personal-access-token/:
    post:
      x-badges:
      - name: Stable
        color: green
      tags:
      - esper_cloud_api_Personal Access Token
      summary: Generate a new personal access token
      description: 'Generates a new personal access token (API key) for the authenticated user, scoped to the current tenant.

        Use this endpoint to create a named, expiry-controlled API key for programmatic access to the Esper API.


        **About Generate Personal Access Token**


        Personal access tokens are named, expiry-controlled API keys tied to a specific user and tenant. They replace the legacy developer app token system (see POST /v0/enterprise/{enterprise_id}/developerapp/{developerapp_id}/renew-token/, which is deprecated). Personal access tokens are scoped to the authenticated caller — this endpoint generates an API key for the user associated with the API key making the request, and cannot be used to create API keys on behalf of other users. The full API key value is returned only in the response to this create call — it is not retrievable again via the list endpoint, which returns only the key prefix. Store the API key value securely immediately after creation.


        **Key Fields / Request Body**


        name — (required) a human-readable label for the API key, used to identify it in the token list


        description — (required) a description of the API key''s intended use


        expiry_at — (required) the expiry date as a Unix timestamp integer; set to -1 for a non-expiring API key


        **Key Fields (Response)**


        id — the UUID of the newly created token record; store this for use in renewal and deletion calls


        token — the full API key value; this is the only time it is returned — store it securely immediately


        prefix — a short prefix of the API key, used to identify it in future list responses


        expiry_at — the expiry timestamp as set in the request


        **Common Use Cases**


        Creating an API key for a CI/CD pipeline or automated script


        Generating a long-lived API key for an integration that cannot handle session-based authentication


        Issuing a dedicated API key for a specific integration or team member


        **Best Practices**


        Store the token value from the response immediately and securely — it cannot be retrieved again after this call


        Store the id alongside the API key value for future renewal or deletion via PUT and DELETE /authn2/v0/personal-access-token/{personal_access_token_id}


        Set a meaningful expiry_at value rather than using -1 (no expiry) wherever possible — expiring API keys reduce the blast radius of credential leaks


        Use distinct name and description values per API key to make the list endpoint actionable during audits


        **Workflow**


        POST to this endpoint with a name, description, and expiry_at


        Immediately store the returned token value and id securely


        Use the API key value in subsequent Esper API calls


        Track the expiry_at and renew via PUT /authn2/v0/personal-access-token/{personal_access_token_id} before expiry'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: name for the token.
                description:
                  type: string
                  description: description for the token.
                expiry_at:
                  type: integer
                  description: exipy date for token.
              required:
              - name
              - description
              - expiry_at
      responses:
        '200':
          description: Token successfully generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_PersonalAccessTokenCreateResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_GenericErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_GenericErrorResponse'
      operationId: postAuthn2V0PersonalAccessToken
      x-operation-id-source: derived
    get:
      x-badges:
      - name: Stable
        color: green
      tags:
      - esper_cloud_api_Personal Access Token
      summary: Get tokens for corresponding user and tenant
      description: 'Returns the full list of tokens for the current user and tenant. Tokens are scoped to the authenticated caller. This endpoint only returns tokens belonging to the user associated with the API key making the request, not tokens for other users in the tenant. Use this endpoint to locate the id of a specific token for use with the renew (PUT) or delete (DELETE) endpoints.


        Use this endpoint to audit active API keys, identify keys approaching expiry, or retrieve token IDs for renewal or deletion.


        **About Get Personal Access Tokens**


        Returns the full list of personal access tokens for the current user and tenant. Personal access tokens are scoped to the authenticated caller. This endpoint only returns API keys belonging to the user associated with the API key making the request, not those belonging to other users in the tenant. Use this endpoint to locate the id of a specific token for use with the renew (PUT) or delete (DELETE) endpoints.


        **Key Fields (Response)**


        id — the UUID of the token record; use with PUT and DELETE /authn2/v0/personal-access-token/{personal_access_token_id}


        name — the human-readable label assigned at creation


        description — the description assigned at creation


        prefix — a short prefix of the API key; use this to identify which key corresponds to a known credential without exposing the secret


        expiry_at — the expiry as a Unix timestamp; -1 indicates no expiry


        created_at / updated_at — timestamps for the token record


        legacy_token_id / legacy_developer_app_id — references to the legacy token system, if applicable


        **Common Use Cases**


        Auditing which API keys are active for the current user


        Identifying API keys approaching expiry so they can be renewed before they stop working


        Retrieving the id of a specific token for renewal or deletion when the ID was not stored at creation time


        **Best Practices**


        Use prefix values to match list entries to known API keys in your secrets store — the full key value is never returned here


        Regularly review expiry_at values and renew any API keys that will expire before your next maintenance window


        Treat any token with a legacy_token_id as a migration candidate — consider replacing it with a new personal access token and retiring the legacy credential


        **Workflow**


        Call GET /authn2/v0/personal-access-token/ to retrieve all API keys for the current user


        Identify the target token by name, prefix, or expiry_at


        Use the token id with PUT .../personal-access-token/{personal_access_token_id} to renew, or DELETE to revoke'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_PersonalAccessTokenGetResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_GenericErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_GenericErrorResponse'
      operationId: getAuthn2V0PersonalAccessToken
      x-operation-id-source: derived
  /authn2/v0/personal-access-token/{personal_access_token_id}:
    put:
      x-badges:
      - name: Stable
        color: green
      tags:
      - esper_cloud_api_Personal Access Token
      summary: Renew personal access token
      description: 'Renews a personal access token by updating its expiry date.


        Use this endpoint to extend the validity of an existing API key before it expires, without needing to generate a new key and update credentials in all systems that use it.


        **About Renew Personal Access Token**


        Personal access tokens are API keys with an expiry date set at creation. This endpoint extends the expiry in place — the API key value itself does not change, only the expiry_at timestamp is updated. Personal access tokens are scoped to the authenticated caller — only API keys belonging to the user associated with the API key making the request can be renewed; those belonging to other users cannot be managed here. The API key value is returned in the response. API keys created with expiry_at: -1 (no expiry) can also be updated to add an expiry via this endpoint.


        **Key Fields / Request Body**


        expiry_at — (required) the new expiry date as a Unix timestamp integer; set to -1 for no expiry


        **Key Fields (Response)**


        id — the UUID of the token record


        token — the API key value (unchanged); returned here for convenience


        expiry_at — the updated expiry timestamp as set in the request


        updated_at — timestamp confirming when the renewal was applied


        **Common Use Cases**


        Extending an API key''s validity before it expires to avoid service interruption in automated integrations


        Converting an API key from a fixed expiry to no expiry (or vice versa) by updating expiry_at


        Renewing an API key as part of a scheduled credential rotation policy


        **Best Practices**


        Use GET /authn2/v0/personal-access-token/ to retrieve the personal_access_token_id if it was not stored at creation time — match by name or prefix


        Renew API keys before they expire rather than after — a lapsed key will cause API calls to fail until renewed or replaced


        Keep a record of each API key''s expiry_at in your secrets management system so renewals can be scheduled proactively


        **Workflow**


        Call GET /authn2/v0/personal-access-token/ to identify the target token and retrieve its id if needed


        PUT to this endpoint with the new expiry_at value


        Confirm the updated expiry_at in the response'
      parameters:
      - $ref: '#/components/parameters/esper_cloud_api_PersonalAccessTokenID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                expiry_at:
                  type: integer
                  description: exipy date for token.
              required:
              - expiry_at
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_PersonalAccessTokenUpdateResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_GenericErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_GenericErrorResponse'
      operationId: putAuthn2V0PersonalAccessTokenByPersonalAccessTokenId
      x-operation-id-source: derived
    delete:
      x-badges:
      - name: Stable
        color: green
      tags:
      - esper_cloud_api_Personal Access Token
      summary: Delete personal access token
      description: 'Permanently revokes a personal access token (API key), immediately invalidating any API calls that use it.


        Use this endpoint to decommission an API key that is no longer needed, has been compromised, or belongs to a user who is leaving the organization.


        **About Delete Personal Access Token**


        Deleting a personal access token permanently revokes the API key — any integration or script using it will receive authentication errors on its next call. Personal access tokens are scoped to the authenticated caller — only API keys belonging to the user associated with the API key making the request can be deleted; those belonging to other users cannot be managed here. Deletion is immediate with no grace period. Returns HTTP 204 on success with no response body. If an API key needs to be replaced rather than simply revoked, generate a new one via POST /authn2/v0/personal-access-token/ and update all dependent systems before deleting the old key.

        **Key Parameters**


        personal_access_token_id — the UUID of the token record to revoke; obtain from GET /authn2/v0/personal-access-token/


        **Common Use Cases**


        Revoking an API key that may have been exposed or compromised


        Decommissioning an API key used by a departing team member or retired integration


        Cleaning up unused or expired API keys during a credential audit


        **Best Practices**


        If the API key is in active use, generate and deploy a replacement via POST /authn2/v0/personal-access-token/ before deleting the old one to avoid service interruption


        Use GET /authn2/v0/personal-access-token/ to confirm the correct personal_access_token_id by matching on name or prefix before deleting — revocation is immediate and irreversible


        Confirm the 204 response before notifying stakeholders that the API key has been revoked


        **Workflow**


        Call GET /authn2/v0/personal-access-token/ to identify the target token and retrieve its id


        If the API key is in active use, generate and deploy a replacement first


        Call DELETE /authn2/v0/personal-access-token/{personal_access_token_id}


        Confirm the 204 response indicating successful revocation'
      parameters:
      - $ref: '#/components/parameters/esper_cloud_api_PersonalAccessTokenID'
      responses:
        '204':
          description: OK
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_GenericErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/esper_cloud_api_GenericErrorResponse'
      operationId: deleteAuthn2V0PersonalAccessTokenByPersonalAccessTokenId
      x-operation-id-source: derived
components:
  schemas:
    esper_cloud_api_PersonalAccessTokenUpdateResponse:
      title: PersonalAccessTokenUpdateResponse
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique ID for the generated token.
        name:
          type: string
          description: Name for the token.
        description:
          type: string
          description: Description for the token.
        created_at:
          type: string
          format: timestamp
          description: Timestamp indicating when the token was created.
        updated_at:
          type: string
          format: timestamp
          description: Timestamp indicating when the token was last updated.
        token:
          type: string
          description: The generated access token value.
        prefix:
          type: string
          description: Prefix for the generated token value.
        expiry_at:
          type: integer
          description: exipy date for token.
        legacy_token_id:
          type: integer
          description: token id corresponding to legacy system
        legacy_developer_app_id:
          type: string
          description: developer app id corresponding to legacy system
    esper_cloud_api_PersonalAccessTokenCreateResponse:
      title: PersonalAccessTokenCreateResponse
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique ID for the generated token.
        name:
          type: string
          description: Name for the token.
        description:
          type: string
          description: Description for the token.
        created_at:
          type: string
          format: timestamp
          description: Timestamp indicating when the token was created.
        updated_at:
          type: string
          format: timestamp
          description: Timestamp indicating when the token was last updated.
        token:
          type: string
          description: The generated access token value.
        prefix:
          type: string
          description: Prefix for the generated token value.
        expiry_at:
          type: integer
          description: exipy date for token.
    esper_cloud_api_PersonalAccessTokenGetResponse:
      title: PersonalAccessTokenGetResponse
      type: object
      properties:
        count:
          type: integer
        personal_access_tokens:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: The unique identifier of the token.
              name:
                type: string
                description: The name of the token.
              description:
                type: string
                description: A description of the token.
              created_at:
                type: string
                format: timestamp
                description: Timestamp indicating when the token was created.
              updated_at:
                type: string
                format: timestamp
                description: Timestamp indicating when the token was updated.
              prefix:
                type: string
                description: The token prefix.
              token:
                type: string
                description: The token value.
              expiry_at:
                type: integer
                description: exipy date for token, -1 indicates no expiry.
              legacy_token_id:
                type: integer
                description: token id corresponding to legacy system
              legacy_developer_app_id:
                type: string
                description: developer app id corresponding to legacy system
    esper_cloud_api_GenericErrorResponse:
      type: object
      properties:
        status:
          type: integer
          format: int32
          description: Either 'status' or 'code' will be present, but not both.
        code:
          type: integer
          format: int32
          description: Either 'status' or 'code' will be present, but not both.
        error:
          type: string
          description: Either 'error' or 'errors' will be present, but not both.
        errors:
          type: array
          items:
            type: string
          description: Either 'error' or 'errors' will be present, but not both.
        message:
          title: Message describing the error
          type: string
  parameters:
    esper_cloud_api_PersonalAccessTokenID:
      name: personal_access_token_id
      description: Personal Access Token Id
      in: path
      required: true
      schema:
        type: string
        format: uuid
  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


# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/esper/refs/heads/main/openapi/esper-esper-cloud-api-personal-access-token-api-openapi.yml