Slide Agents API

Everything about [agents](#model/agent)

OpenAPI Specification

slide-agents-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  contact:
    email: hey@slide.tech
    name: Slide Team
    url: https://docs.slide.tech
  description: "## Introduction\nThe Slide API is organized around REST. Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.\n\n## Authentication\nWe use API tokens to authenticate requests. You can view and manage your API tokens in the [Slide Console](https://docs.slide.tech).\nWhen making HTTP requests, you'll need to include the API token in the `Authorization` header, using Bearer auth (e.g. `Authorization: Bearer YOUR_SECRET_TOKEN`).\n\nExample:\n```shell\n$ curl -H 'Authorization: Bearer YOUR_SECRET_TOKEN' 'https://api.slide.tech/v1/device'\n```\n\n## Pagination\nAll list endpoints support pagination. You can use the `limit` and `offset` query parameters to control the number of items returned and the starting index.\nList responses will include a `pagination` key that includes the `next_offset` to use for pagination.\nIf `next_offset` is not present, that indicates there are no more items to fetch.\n\nExample:\n```shell\n$ curl -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \\\n    'https://api.slide.tech/v1/device?offset=0&limit=10'\n{\n    \"pagination\": {\n        \"next_offset\": 10\n    },\n    \"data\": [\n        ...\n    ]\n}\n```\n\n## Rate Limiting\nWe limit the number of requests you can make to the API within a certain time frame.\nEach API token has a pool of `50` requests. We refill this pool at a rate of `10` requests per second.\nIf you exceed the rate limit, you'll receive a response with a `429 Too Many Requests` HTTP code and a `err_rate_limit_exceeded` error code.\nPlease wait before retrying the request. We recommend you implement an exponential backoff strategy to handle rate limits.\n\n## Errors\nSlide uses conventional HTTP response codes to indicate the success or failure of an API request.\nIn general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted), and codes in the 5xx range indicate an error with Slide's servers.\n\nWe also include [error codes and details](#model/error) in the response, which may provide more context about the error.\n\nExample:\n```shell\n$ curl 'https://api.slide.tech/v1/device'\n{\n    \"codes\": [\n        \"err_missing_authentication\"\n    ],\n    \"details\": [\n        ...\n    ],\n    \"message\": \"unauthorized\"\n}\n```\n\nSome common error codes are:\n\n| Code                         | Description                                                                                                                                             |\n|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `err_endpoint_not_found`     | Requested endpoint does not exist.                                                                                                                      |\n| `err_entity_not_found`       | Requested entity does not exist.                                                                                                                        |\n| `err_validation_error`       | Bad request due to validation error. The error `details` will contain any fields that were not valid.                                                   |\n| `err_missing_authentication` | Unauthorized due to missing API token. See [authentication](#description/authentication) for more details.                                              |\n| `err_unauthorized`           | Unauthorized due to invalid API token. You've provided an invalid API token or the API token does not have permission to access the requested resource. |\n| `err_internal_server_error`  | Something went wrong. If you retry the request and it does not succeed, you may contact us at `hey@slide.tech`.                                         |\n| `err_rate_limit_exceeded`    | Rate limit exceeded. Please wait before retrying the request. See [rate limiting](#description/rate-limiting) for more details.                         |\n\n<details>\n  <summary>Show more error codes.</summary>\n\n| Code                                | Description                                                                                                           |\n|-------------------------------------|-----------------------------------------------------------------------------------------------------------------------|\n| `err_agent_not_connected_to_device` | Agent is not connected to the device. Ensure the agent is powered on and has network connectivity.                    |\n| `err_device_not_connected_to_cloud` | Device is not connected to the cloud. Ensure the device is powered on and has network connectivity.                   |\n| `err_backup_already_running`        | A backup is already running for this agent. Please wait for the current backup to complete before starting a new one. |\n| `err_client_not_found`              | Client not found. Ensure the client ID is valid and the client exists.                                                |\n\n</details>\n\n## Eventual Consistency\n\nSlide operates an eventual consistency model, where data may not be immediately available after an operation.\nThis is due to the distributed nature of our system and the need for replication and synchronization across multiple\nsystems. Users should expect that operations may take a short period of time to propagate and become visible to all\ncomponents of the system.\n\n## Deprecations and Breaking Changes\n\n### Active Deprecations\n\n`Device.ip_addresses` and `Agent.ip_addresses` will be removed. They have been replaced by `Device.addresses` and `Agent.addresses` respectively.\n"
  title: Slide Accounts Agents API
  version: 1.34.0
servers:
- url: https://api.slide.tech
security:
- BearerAuth: []
tags:
- description: Everything about [agents](#model/agent)
  name: Agents
paths:
  /v1/agent:
    get:
      operationId: Agents
      parameters:
      - $ref: '#/components/parameters/QueryDeviceID'
      - $ref: '#/components/parameters/QueryOffset'
      - $ref: '#/components/parameters/QueryLimit'
      - description: Sort by a specific field
        in: query
        name: sort_by
        schema:
          default: hostname
          enum:
          - id
          - hostname
          - name
          type: string
      - $ref: '#/components/parameters/QuerySortAsc'
      - $ref: '#/components/parameters/QueryClientID'
      - description: Filter agents to before a specific pairing timestamp (RFC3339 format)
        in: query
        name: paired_before
        schema:
          format: date-time
          type: string
      - description: Filter agents to after a specific pairing timestamp (RFC3339 format)
        in: query
        name: paired_after
        schema:
          format: date-time
          type: string
      - description: Filter agents by type
        in: query
        name: agent_type
        schema:
          enum:
          - windows
          - linux
          - nas
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Paginated response
                properties:
                  data:
                    description: List of agents
                    items:
                      $ref: '#/components/schemas/Agent'
                    title: Agents
                    type: array
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                required:
                - pagination
                - data
                title: Paginated response
                type: object
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '500':
          $ref: '#/components/responses/500'
      summary: List agents
      tags:
      - Agents
    post:
      operationId: AgentPrePair
      requestBody:
        content:
          application/json:
            example: "{\n  \"display_name\": \"My Agent\",\n  \"device_id\": \"d_0123456789ab\"\n}"
            schema:
              properties:
                device_id:
                  $ref: '#/components/schemas/DeviceID'
                display_name:
                  $ref: '#/components/schemas/DisplayName'
              required:
              - display_name
              - device_id
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentPairCode'
          description: Created
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Create an agent for an auto-pair installation
      tags:
      - Agents
  /v1/agent/pair:
    post:
      operationId: AgentPair
      requestBody:
        content:
          application/json:
            example: "{\n  \"pair_code\": \"ABC123\",\n  \"device_id\": \"d_0123456789ab\"\n}"
            schema:
              properties:
                device_id:
                  $ref: '#/components/schemas/DeviceID'
                pair_code:
                  $ref: '#/components/schemas/PairCode'
              required:
              - pair_code
              - device_id
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Pair agent
      tags:
      - Agents
  /v1/agent/{agent_id}:
    get:
      operationId: AgentByID
      parameters:
      - $ref: '#/components/parameters/PathAgentID'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Get agent
      tags:
      - Agents
    patch:
      operationId: AgentUpdate
      parameters:
      - $ref: '#/components/parameters/PathAgentID'
      requestBody:
        content:
          application/json:
            example: "{\n  \"display_name\": \"<change me or remove the field to keep unchanged>\",\n  \"vss_writer_configs\": [{\"writer_id\":\"{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}\", \"excluded\":true}, {\"writer_id\":\"{A6AD56C2-B509-4E6C-BB19-49D8F43532F0}\", \"excluded\":false}],\n  \"sealed\": false,\n  \"passphrase\": \"Super Secret Passphrase\",\n  \"file-index\": false,\n  \"backup_paused_until\": \"2025-10-31T23:59:59Z\",\n  \"backup_paused_indefinite\": true,\n  \"backup_resume\": true,\n  \"comments\": \"Agent for production server\",\n  \"backup_schedule\": {\n    \"interval_in_minutes\": 60,\n    \"start_hour\": 9,\n    \"end_hour\": 18,\n    \"days\": [0, 1, 2, 3, 4, 5, 6]\n  },\n  \"timezone\": \"America/New_York\",\n  \"local_retention_policy\": {\n    \"retention_policy_name\": \"balanced\",\n    \"retention_policy_max_age_months\": 84\n  },\n  \"volumes\": [\n    {\n      \"volume_id\": \"v_0123456789ab\",\n      \"include\": true\n    }\n  ],\n  \"volumes_include_default\": true,\n  \"alert_configs\": [\n    {\n      \"alert_type\": \"device_not_checking_in\",\n      \"pause_for_minutes\": 1440\n    },\n    {\n      \"alert_type\": \"device_out_of_date\",\n      \"pause_for_minutes\": 1440\n    },\n    {\n      \"alert_type\": \"device_storage_not_healthy\",\n      \"pause_for_minutes\": 1440\n    },\n    {\n      \"alert_type\": \"device_storage_space_low\",\n      \"pause_for_minutes\": 1440\n    },\n    {\n      \"alert_type\": \"device_storage_space_critical\",\n      \"pause_for_minutes\": 1440\n    },\n    {\n      \"alert_type\": \"agent_not_checking_in\",\n      \"pause_for_minutes\": 1440\n    },\n    {\n      \"alert_type\": \"agent_not_backing_up\",\n      \"pause_for_minutes\": 1440\n    },\n    {\n      \"alert_type\": \"agent_backup_failed\",\n      \"pause_for_minutes\": 1440\n    }\n  ],\n  \"default_restore_settings\": {\n    \"cpu_count\": 4,\n    \"memory_mb\": 8192,\n    \"network_model\": \"virtio\",\n    \"disk_bus\": \"virtio\"\n  }\n}"
            schema:
              properties:
                alert_configs:
                  description: Array of alert configurations
                  items:
                    $ref: '#/components/schemas/AlertConfig'
                  type: array
                backup_paused_indefinite:
                  description: Set to true to pause backups indefinitely. This takes precedence over backup_paused_until. Backups will remain paused until you explicitly set backup_resume to true. Set to false to clear the indefinite pause (backups will resume, or remain paused until backup_paused_until if that is still in the future).
                  example: true
                  type: boolean
                backup_paused_until:
                  description: Pause backups until this timestamp (RFC3339 format). Backups will automatically resume after this time. To pause indefinitely instead, use backup_paused_indefinite. If both backup_paused_until and backup_paused_indefinite are set, backup_paused_indefinite takes precedence and backups remain paused until explicitly resumed via backup_resume.
                  example: '2025-10-31T23:59:59Z'
                  format: date-time
                  type: string
                backup_resume:
                  description: Set to true to immediately resume backups. This clears both backup_paused_until and backup_paused_indefinite, and takes precedence over both if provided in the same request.
                  example: true
                  type: boolean
                backup_schedule:
                  $ref: '#/components/schemas/BackupSchedule'
                comments:
                  description: Optional comments for this agent.
                  example: Agent for production server
                  maxLength: 4000
                  type: string
                default_restore_settings:
                  $ref: '#/components/schemas/DefaultRestoreSettings'
                display_name:
                  $ref: '#/components/schemas/DisplayName'
                file_index:
                  deprecated: true
                  description: This field exists only for backward compatibility. It is a deprecated field. Use file_index_enabled instead.
                  type: boolean
                file_index_enabled:
                  description: Set to false to leave file indexing off on an agent, true to enable file indexing and searching
                  type: boolean
                local_retention_policy:
                  $ref: '#/components/schemas/LocalRetentionPolicy'
                nas_smb_password:
                  description: SMB password for the NAS share. Only applicable to NAS agents. Omit to keep the current password. Write-only.
                  example: secretpassword
                  type: string
                  writeOnly: true
                nas_smb_username:
                  description: SMB username for the NAS share. Only applicable to NAS agents.
                  example: backupuser
                  type: string
                nas_unc_path:
                  description: UNC path to the NAS SMB share. Only applicable to NAS agents.
                  example: \\nas01\backups
                  type: string
                passphrase:
                  $ref: '#/components/schemas/Passphrase'
                sealed:
                  description: Set to false to unseal an agent with a user-managed passphrase. This will allow backups to occur.
                  type: boolean
                timezone:
                  description: IANA timezone string (e.g., "America/New_York", "Europe/London")
                  example: America/New_York
                  type: string
                volumes:
                  description: Array of volume settings (volume_id and include flag)
                  items:
                    $ref: '#/components/schemas/VolumeSetting'
                  type: array
                volumes_include_default:
                  description: Whether new volumes should be included by default
                  example: true
                  type: boolean
                vss_writer_configs:
                  items:
                    $ref: '#/components/schemas/AgentVSSWriterConfig'
                  type: array
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Update agent
      tags:
      - Agents
  /v1/agent/{agent_id}/file-search:
    get:
      operationId: FileSearch
      parameters:
      - $ref: '#/components/parameters/PathAgentID'
      - $ref: '#/components/parameters/QueryOffset'
      - $ref: '#/components/parameters/QueryLimit'
      - description: Sort by a specific field
        in: query
        name: sort_by
        schema:
          default: path
          enum:
          - path
          - last_modified
          - file_size
          type: string
      - $ref: '#/components/parameters/QuerySortAsc'
      - description: The search for files. Must be URL encoded.
        in: query
        name: search_term
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    description: List of file paths that match search criteria
                    items:
                      $ref: '#/components/schemas/FileIndexSearch'
                    title: Paths
                    type: array
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                required:
                - pagination
                - data
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Get the file paths on a system
      tags:
      - Agents
  /v1/agent/{agent_id}/file-search/version:
    get:
      operationId: PathVersion
      parameters:
      - $ref: '#/components/parameters/PathAgentID'
      - $ref: '#/components/parameters/QueryOffset'
      - $ref: '#/components/parameters/QueryLimit'
      - description: "Sort by a specific field:\n * `created_time` - the snapshot's creation time\n * `last_modified` - when the file was last modified\n * `file_size` - the file size\n"
        in: query
        name: sort_by
        schema:
          default: created_time
          enum:
          - created_time
          - last_modified
          - file_size
          type: string
      - $ref: '#/components/parameters/QuerySortAsc'
      - description: The path of the file to get versions for. Must be URL encoded.
        in: query
        name: path
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    description: List of versions of the path
                    items:
                      $ref: '#/components/schemas/PathVersion'
                    title: PathVersions
                    type: array
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                required:
                - pagination
                - data
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Get the versions of a path
      tags:
      - Agents
  /v1/agent/{agent_id}/passphrase:
    post:
      operationId: AgentPassphraseAdd
      parameters:
      - $ref: '#/components/parameters/PathAgentID'
      requestBody:
        content:
          application/json:
            example: "{\n  \"name\": \"ABC123\",\n  \"passphrase\": \"Super Secret Passphrase\"\n}"
            schema:
              properties:
                name:
                  type: string
                passphrase:
                  minLength: 10
                  type: string
              required:
              - name
              - passphrase
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentPassphrase'
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Add agent passphrase
      tags:
      - Agents
  /v1/agent/{agent_id}/passphrase/{agent_passphrase_id}:
    delete:
      operationId: AgentPassphraseDelete
      parameters:
      - $ref: '#/components/parameters/PathAgentID'
      - $ref: '#/components/parameters/PathAgentPassphraseID'
      requestBody:
        content:
          application/json:
            example: "{\n  \"passphrase\": \"Super Secret Passphrase\",\n}"
            schema:
              properties:
                passphrase:
                  description: The current passphrase for the agent.
                  type: string
              required:
              - passphrase
        required: true
      responses:
        '204':
          description: No Content
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Delete agent passphrase
      tags:
      - Agents
  /v1/agent/{agent_id}/service:
    get:
      operationId: AgentServices
      parameters:
      - $ref: '#/components/parameters/PathAgentID'
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Agent services response
                properties:
                  data:
                    description: List of services for the agent
                    items:
                      $ref: '#/components/schemas/AgentService'
                    title: Agent services
                    type: array
                required:
                - data
                title: Agent services response
                type: object
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Get agent services
      tags:
      - Agents
    patch:
      operationId: AgentServiceUpdate
      parameters:
      - $ref: '#/components/parameters/PathAgentID'
      requestBody:
        content:
          application/json:
            example: "{\n  \"services\": [\n    {\n      \"service_id\": \"svc_abc123\",\n      \"verify_on_boot\": true\n    }\n  ]\n}"
            schema:
              properties:
                services:
                  description: List of service configuration updates.
                  items:
                    $ref: '#/components/schemas/AgentServiceUpdateItem'
                  type: array
              required:
              - services
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                description: List of services that were updated
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/AgentServiceUpdateItem'
                    type: array
                required:
                - data
                title: Agent service update response
                type: object
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Update agent services
      tags:
      - Agents
  /v1/agent/{agent_id}/service/reset:
    post:
      operationId: AgentServiceReset
      parameters:
      - $ref: '#/components/parameters/PathAgentID'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Reset all of an agent's service verification settings to system defaults
      tags:
      - Agents
  /v1/nas-agent:
    post:
      description: Creates a NAS agent that backs up files from an SMB share. Tests SMB credentials against the specified device before creating the agent.
      operationId: NASAgentCreate
      requestBody:
        content:
          application/json:
            example:
              device_id: d_abc123def456
              display_name: NAS Backup - Finance Share
              nas_smb_password: secretpassword
              nas_smb_username: backupuser
              nas_unc_path: \\nas01\finance
              timezone: America/New_York
            schema:
              properties:
                device_id:
                  $ref: '#/components/schemas/DeviceID'
                display_name:
                  $ref: '#/components/schemas/DisplayName'
                nas_smb_password:
                  description: SMB password for the NAS share. Omit (along with nas_smb_username) to access an anonymous share. Write-only.
                  example: secretpassword
                  type: string
                  writeOnly: true
                nas_smb_username:
                  description: SMB username for the NAS share. Omit (along with nas_smb_password) to access an anonymous share.
                  example: backupuser
                  type: string
                nas_unc_path:
                  description: UNC path to the NAS SMB share.
                  example: \\nas01\backups
                  type: string
                timezone:
                  $ref: '#/components/schemas/Timezone'
              required:
              - device_id
              - display_name
              - nas_unc_path
              - timezone
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
          description: Created
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Create a NAS agent
      tags:
      - Agents
components:
  schemas:
    AgentService:
      description: Agent service object representing a Windows service monitored by service verification.
      properties:
        description:
          description: Description of the Windows service.
          example: Enables the detection, download, and installation of updates for Windows.
          type: string
        display_name:
          description: Display name of the Windows service.
          example: Windows Update
          type: string
        name:
          description: Internal name of the Windows service.
          example: wuauserv
          type: string
        service_id:
          description: Unique identifier of the service.
          example: svc_abc123
          type: string
        startup:
          description: Startup type of the service.
          enum:
          - Automatic
          - AutomaticDelayedStart
          - Manual
          - Disabled
          example: Automatic
          type: string
        state:
          description: Current state of the service.
          enum:
          - Stopped
          - Running
          - StartPending
          - StopPending
          - ContinuePending
          - PausePending
          - Paused
          example: Running
          type: string
        verify_on_boot:
          description: Whether this service is checked during boot verification.
          example: true
          type: boolean
      required:
      - service_id
      - name
      - display_name
      - description
      - state
      - startup
      - verify_on_boot
      type: object
    ClientID:
      description: ID of a client
      example: c_0123456789ab
      pattern: ^c_[a-z0-9]{12}$
      type: string
    DefaultRestoreSettings:
      description: Default restore VM settings
      properties:
        cpu_count:
          description: Number of CPUs
          enum:
          - 1
          - 2
          - 4
          - 8
          - 16
          example: 4
          type: integer
        disk_bus:
          description: Disk bus type
          enum:
          - sata
          - virtio
          example: virtio
          type: string
        memory_mb:
          description: Memory in MB
          enum:
          - 4096
          - 6144
          - 8192
          - 12288
          - 16384
          - 24576
          - 28672
          - 32768
          - 49152
          - 65536
          - 98304
          - 131072
          - 163840
          - 196608
          - 229376
          - 262144
          example: 8192
          type: integer
        network_model:
          description: Network model
          enum:
          - virtio
          - hypervisor_default
          - e1000
          - rtl8139
          example: virtio
          type: string
      type: object
    Passphrase:
      description: User passphrase. If the agent has a user passphrase, you must provide it here.
      example: Super Secret Passphrase
      minLength: 10
      type: string
    DeviceID:
      description: ID of a device
      example: d_0123456789ab
      pattern: ^d_[a-z0-9]{12}$
      type: string
    SnapshotID:
      description: ID of a snapshot
      example: s_0123456789ab
      pattern: ^s_[a-z0-9]{12}$
      type: string
    Timezone:
      description: Timezone of the agent
      example: America/New_York
      pattern: ^[a-zA-Z0-9/_-]+$
      type: string
    Volumes:
      description: Volumes to include in the backup
      items:
        properties:
          include:
            description: Whether the volume is included in the backup
            example: true
            type: boolean
          mount_points:
            description: Mount points for this volume (e.g., ["C:", "D:"]) - present in responses only
            example:
            - 'C:'
            items:
              type: string
            type: array
          volume_id:
            $ref: '#/components/schemas/VolumeID'
        required:
        - volume_id
        - include
        type: object
      type: array
    VolumeSetting:
      description: Volume setting configuration
      properties:
        include:
          description: Whether to include this volume in backups
          example: true
          ty

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