SmallStep Protect API

Manage access to protected resources

OpenAPI Specification

smallstep-protect-api-openapi.yml Raw ↑
openapi: 3.1.1
info:
  contact:
    email: support@smallstep.com
    name: Smallstep Support
    url: https://support.smallstep.com
  description: '# Getting Started

    First you''ll need to get an API token from the Team Settings page of your [Smallstep dashboard](https://smallstep.com/app).


    Then you can try [listing certificates](/operations/list-certificates) for your first API call:

    ```

    set +o history

    echo "Authorization: Bearer [your API token]" > api_headers

    set -o history

    curl -H @api_headers https://gateway.smallstep.com/api/certificates

    ```


    More resources:

    * [Terraform Provider](https://github.com/smallstep/terraform-provider-smallstep)

    * [Python Client](https://github.com/smallstep/smallstep-python)

    '
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  summary: Smallstep API
  title: Smallstep Authentication Protect API
  version: '2025-01-01'
servers:
- url: https://gateway.smallstep.com/api
security:
- JWT: []
tags:
- description: Manage access to protected resources
  name: Protect
paths:
  /accounts:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    get:
      deprecated: true
      description: 'Get a page of accounts.

        '
      operationId: ListAccounts
      parameters:
      - $ref: '#/components/parameters/pagination'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/account'
                type: array
          description: A page of accounts.
          headers:
            X-Next-Cursor:
              $ref: '#/components/headers/X-Next-Cursor'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - list-accounts
      summary: List Accounts
      tags:
      - Protect
    post:
      deprecated: true
      description: Create a new account.
      operationId: PostAccounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/accountRequest'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/account'
          description: 'The newly created account

            '
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - post-accounts
      summary: Create Account
      tags:
      - Protect
  /accounts/{accountID}:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    - $ref: '#/components/parameters/accountID'
    delete:
      deprecated: true
      description: 'Delete an account.

        '
      operationId: DeleteAccount
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - delete-account
      summary: Delete Account
      tags:
      - Protect
    get:
      deprecated: true
      description: 'Get an account.

        '
      operationId: GetAccount
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/account'
          description: 'The account.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - get-account
      summary: Get Account
      tags:
      - Protect
    put:
      deprecated: true
      description: 'Update an existing account.

        '
      operationId: PutAccount
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/account'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/account'
          description: 'The updated account.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - put-account
      summary: Update Account
      tags:
      - Protect
  /endpoint-configurations:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    get:
      deprecated: true
      description: 'Get a page of endpoint configurations.

        '
      operationId: ListEndpointConfigurations
      parameters:
      - $ref: '#/components/parameters/pagination'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/endpointConfiguration'
                type: array
          description: A page of endpoint configurations.
          headers:
            X-Next-Cursor:
              $ref: '#/components/headers/X-Next-Cursor'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - list-endpoint-configurations
      summary: List Endpoint Configurations
      tags:
      - Protect
    post:
      deprecated: true
      description: Create a new endpoint configuration.
      operationId: PostEndpointConfigurations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/endpointConfigurationRequest'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/endpointConfiguration'
          description: 'The newly created endpoint configuration

            '
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - post-endpoint-configurations
      summary: Create Endpoint Configuration
      tags:
      - Protect
  /endpoint-configurations/{endpointConfigurationID}:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    - $ref: '#/components/parameters/endpointConfigurationID'
    delete:
      deprecated: true
      description: 'Delete an endpoint configuration.

        '
      operationId: DeleteEndpointConfiguration
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - delete-endpoint-configuration
      summary: Delete Endpoint Configuration
      tags:
      - Protect
    get:
      deprecated: true
      description: 'Get an endpoint configuration.

        '
      operationId: GetEndpointConfiguration
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/endpointConfiguration'
          description: 'The endpoint configuration.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - get-endpoint-configuration
      summary: Get Endpoint Configuration
      tags:
      - Protect
    put:
      deprecated: true
      description: 'Update an existing endpoint configuration.

        '
      operationId: PutEndpointConfiguration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/endpointConfiguration'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/endpointConfiguration'
          description: 'The updated endpoint configuration.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - put-endpoint-configuration
      summary: Update Endpoint Configuration
      tags:
      - Protect
  /managed-radius:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    get:
      description: List all RADIUS servers managed by Smallstep.
      operationId: ListManagedRadius
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/managedRadius'
                type: array
          description: 'The team''s Smallstep-managed RADIUS servers.

            '
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - list-managed-radius
      summary: List Managed RADIUS Servers
      tags:
      - Protect
    post:
      description: 'Configure a new RADIUS server managed by Smallstep.

        '
      operationId: PostManagedRadius
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/managedRadius'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/managedRadius'
          description: 'The Smallstep-managed RADIUS server configuration.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          $ref: '#/components/responses/409'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - post-managed-radius
      summary: Create Managed RADIUS
      tags:
      - Protect
  /managed-radius/{managedRadiusID}:
    parameters:
    - $ref: '#/components/parameters/managedRadiusID'
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    - $ref: '#/components/parameters/secret'
    delete:
      description: 'Deprovision a Smallstep-managed RADIUS server.

        '
      operationId: DeleteManagedRadius
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - delete-managed-radius
      summary: Delete Managed RADIUS
      tags:
      - Protect
    get:
      description: 'Get a Smallstep-managed RADIUS server configuration.

        '
      operationId: GetManagedRadius
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/managedRadius'
          description: 'The Smallstep-managed RADIUS server configuration.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - get-managed-radius
      summary: Get Managed RADIUS
      tags:
      - Protect
    put:
      description: 'Update a Smallstep-managed RADIUS server configuration.

        '
      operationId: PutManagedRadius
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/managedRadius'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/managedRadius'
          description: 'The Smallstep-managed RADIUS server configuration.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          $ref: '#/components/responses/409'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - put-managed-radius
      summary: Put Managed RADIUS
      tags:
      - Protect
  /protect/browser:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    get:
      description: 'List configurations for using client certificates in browsers.

        '
      operationId: ListBrowser
      parameters:
      - $ref: '#/components/parameters/pagination'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/browser'
                type: array
          description: 'The list of configurations for using client certificates in browsers.

            '
          headers:
            X-Next-Cursor:
              $ref: '#/components/headers/X-Next-Cursor'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - list-browser
      summary: List Browser mTLS Configurations
      tags:
      - Protect
    post:
      description: 'Create a new configuration for using a client certificate in a browser.

        '
      operationId: PostBrowser
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/browser'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/browser'
          description: 'The configuration for using a client certificate in a browser.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - post-browser
      summary: Create Browser mTLS Configuration
      tags:
      - Protect
  /protect/browser/{browserID}:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    - $ref: '#/components/parameters/browserID'
    delete:
      description: 'Delete a configuration for using a client certificate in a browser.

        '
      operationId: DeleteBrowser
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - delete-browser
      summary: Delete Browser mTLS Configuration
      tags:
      - Protect
    get:
      description: 'Get a configuration for using a client certificate in a browser.

        '
      operationId: GetBrowser
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/browser'
          description: 'The configuration for using a client certificate in a browser.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - get-browser
      summary: Get Browser mTLS Configuration
      tags:
      - Protect
    put:
      description: 'Update a configuration for using a client certificate in a browser.

        '
      operationId: PutBrowser
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/browser'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/browser'
          description: 'The updated configuration for using a client certificate in a browser.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - put-browser
      summary: Update Browser mTLS Configuration
      tags:
      - Protect
  /protect/ethernet:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    get:
      description: 'List configurations for connecting devices to EAP-TLS 802.1X wired networks.

        '
      operationId: ListEthernet
      parameters:
      - $ref: '#/components/parameters/pagination'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ethernet'
                type: array
          description: 'The configurations for connecting devices to EAP-TLS 802.1X wired networks.

            '
          headers:
            X-Next-Cursor:
              $ref: '#/components/headers/X-Next-Cursor'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - list-ethernet
      summary: List Ethernet Device Configurations
      tags:
      - Protect
    post:
      description: 'Create a new configuration for connecting a device to an EAP-TLS 802.1X wired network.

        '
      operationId: PostEthernet
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ethernet'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ethernet'
          description: 'The configuration for connecting a device to an EAP-TLS 802.1X wired network.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - post-ethernet
      summary: Create Ethernet Device Configuration
      tags:
      - Protect
  /protect/ethernet/{ethernetID}:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    - $ref: '#/components/parameters/ethernetID'
    delete:
      description: 'Delete a configuration for connecting a device to an EAP-TLS 802.1X wired network.

        '
      operationId: DeleteEthernet
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - delete-ethernet
      summary: Delete Ethernet Device Configuration
      tags:
      - Protect
    get:
      description: 'Get a configuration for connecting a device to an EAP-TLS 802.1X wired network.

        '
      operationId: GetEthernet
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ethernet'
          description: 'The configuration for connecting a device to an EAP-TLS 802.1X wired network.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - get-ethernet
      summary: Get Ethernet Device Configuration
      tags:
      - Protect
    put:
      description: 'Update a configuration for connecting a device to an EAP-TLS 802.1X wired network.

        '
      operationId: PutEthernet
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ethernet'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ethernet'
          description: 'The updated configuration for connecting a device to an EAP-TLS 802.1X wired network.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - put-ethernet
      summary: Update Ethernet Device Configuration
      tags:
      - Protect
  /protect/vpn:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    get:
      description: 'List configurations for connecting devices to VPNs.

        '
      operationId: ListVpn
      parameters:
      - $ref: '#/components/parameters/pagination'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/vpn'
                type: array
          description: 'The list of configurations for connecting devices to VPNs.

            '
          headers:
            X-Next-Cursor:
              $ref: '#/components/headers/X-Next-Cursor'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - list-vpn
      summary: List VPN Device Configurations
      tags:
      - Protect
    post:
      description: 'Create a new configuration for connecting a device to a VPN.

        '
      operationId: PostVpn
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/vpn'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/vpn'
          description: 'The configuration for connecting a device to a VPN.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - post-vpn
      summary: Create VPN Device Configuration
      tags:
      - Protect
  /protect/vpn/{vpnID}:
    parameters:
    - $ref: '#/components/parameters/requestID'
    - $ref: '#/components/parameters/version'
    - $ref: '#/components/parameters/accept'
    - $ref: '#/components/parameters/vpnID'
    delete:
      description: 'Delete a configuration for connecting a device to a VPN.

        '
      operationId: DeleteVpn
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - delete-vpn
      summary: Delete VPN Device Configuration
      tags:
      - Protect
    get:
      description: 'Get a configuration for connecting a device to a VPN.

        '
      operationId: GetVpn
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/vpn'
          description: 'The configuration for connecting a device to a VPN.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
      - JWT:
        - get-vpn
      summary: Get VPN Device Configuration
      tags:
      - Protect
    put:
      description: 'Update a configuration for connecting a device to a VPN.

        '
      operationId: PutVpn
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/vpn'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/vpn'
          description: 'The updated configuration for connecting a device to a VPN.

            '
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Smallstep-Api-Version:
              $ref: '#/components/headers/X-Smallstep-Api-Version'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:

# --- truncated at 32 KB (83 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/smallstep/refs/heads/main/openapi/smallstep-protect-api-openapi.yml