Roku snapshots API

The snapshots API from Roku — 2 operation(s) for snapshots.

Operations 5

GET /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/snapshots Roku List Snapshots #
POST /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/snapshots Roku Create Snapshot #
GET /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/snapshots/{snapshot_id} Roku Get Snapshot #
PATCH /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/snapshots/{snapshot_id} Roku Update Snapshot #
DELETE /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/snapshots/{snapshot_id} Roku Delete Snapshot #

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/external-control-protocol-active-app-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/external-control-protocol-app-list-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/external-control-protocol-app-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/external-control-protocol-device-info-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/external-control-protocol-media-player-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/external-control-protocol-device-info-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/external-control-protocol-app-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/external-control-protocol-app-list-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/external-control-protocol-active-app-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/external-control-protocol-media-player-structure.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/pay-web-services-transaction-validation-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/pay-web-services-refund-validation-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/pay-web-services-cancel-subscription-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/pay-web-services-refund-subscription-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/pay-web-services-update-bill-cycle-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/pay-web-services-issue-credit-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-schema/pay-web-services-subscription-result-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/pay-web-services-transaction-validation-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/pay-web-services-refund-validation-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/pay-web-services-subscription-result-structure.json

Other Resources

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/roku-snapshots-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

roku-snapshots-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Roku Nabu Cloud Snapshots API
  contact:
    name: DevX Tools Team
    email: dldevxtools@roku.com
  version: 1.3.29
  description: Nabu Cloud is Roku's developer cloud platform for managing test devices, snapshots, builds, projects, organisations, groups, and personal access tokens. It provides REST APIs for orchestrating remote Roku test devices and CI/CD workflows.
  x-generated-from: rokudev/dev-doc
  x-source-url: https://github.com/rokudev/dev-doc/blob/v2.0/reference/openapi.json
servers:
- url: https://api.cloud.roku.dev
  description: Roku Nabu Cloud Production
tags:
- name: snapshots
paths:
  /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/snapshots:
    get:
      tags:
      - snapshots
      summary: Roku List Snapshots
      operationId: snapshots-list_snapshots
      security:
      - Nabu Cloud: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: integer
          title: Project Id
      - name: organisation_id
        in: path
        required: true
        schema:
          type: integer
          title: Organisation Id
      - name: device_id
        in: path
        required: true
        schema:
          type: integer
          title: Device Id
      - name: items
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000000
          description: The number of items per page. Use 0 for no limit.
          default: 100
          title: Items
        description: The number of items per page. Use 0 for no limit.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          description: The page number. Use 0 for the first page.
          default: 0
          title: Page
        description: The page number. Use 0 for the first page.
      - name: parent_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          description: The ID of the parent Snapshot.
          title: Parent Id
        description: The ID of the parent Snapshot.
      - name: live
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Show live snapshots
          title: Live
        description: Show live snapshots
      - name: name
        in: query
        required: false
        schema:
          type: string
          minLength: 3
          maxLength: 255
          description: The name of the Snapshot.
          title: Name
        description: The name of the Snapshot.
      - name: description
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 0
            maxLength: 4096
          - type: 'null'
          description: Description of the Snapshot.
          title: Description
        description: Description of the Snapshot.
      - name: properties
        in: query
        required: false
        schema:
          anyOf:
          - type: object
            additionalProperties: true
            maxProperties: 8192
          - type: 'null'
          description: Properties of the Snapshot.
          examples:
          - config_service_flags:
              fw.swup.channel-sync-enabled: 'false'
          title: Properties
        description: Properties of the Snapshot.
      - name: rootfs_artifactory_path
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 3
            maxLength: 255
            pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$
          - type: 'null'
          description: The path of the rootfs image in artifactory.
          examples:
          - official/release/2024-h2/r14.0.4.122xx-rta/native_tv:latest
          - premergeci/native_tv:4838657
          title: Rootfs Artifactory Path
        description: The path of the rootfs image in artifactory.
      - name: start_at
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          description: The last time the snapshot was run
          title: Start At
        description: The last time the snapshot was run
      - name: created_at
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          description: The day the snapshot was created
          title: Created At
        description: The day the snapshot was created
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SnapshotOut'
                title: Response Snapshots-List Snapshots
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - snapshots
      summary: Roku Create Snapshot
      description: 'Snapshots can either be created from a device''s current filesystem state (or

        most recent filesystem state if the device is currently off) or by creating

        a modified version of an existing snapshot.


        If both SnapshotCreate.system_setting_changes and

        SnapshotCreate.config_server_overrides_changes are None then the snapshot

        will be created from the device state. However if either is not None then

        parent_id must be provided and the new snapshot will be created as a

        modified version of the parent snapshot.


        If creating from a running device parent_id is purely organisational and

        will not effect the content of the created snapshot.


        If creating from a parent snapshot the parent snapshot must belong to the

        same device.'
      operationId: snapshots-create_snapshot
      security:
      - Nabu Cloud: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: integer
          title: Project Id
      - name: organisation_id
        in: path
        required: true
        schema:
          type: integer
          title: Organisation Id
      - name: device_id
        in: path
        required: true
        schema:
          type: integer
          title: Device Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SnapshotCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapshotOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/snapshots/{snapshot_id}:
    get:
      tags:
      - snapshots
      summary: Roku Get Snapshot
      operationId: snapshots-get_snapshot
      security:
      - Nabu Cloud: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: integer
          title: Project Id
      - name: organisation_id
        in: path
        required: true
        schema:
          type: integer
          title: Organisation Id
      - name: device_id
        in: path
        required: true
        schema:
          type: integer
          title: Device Id
      - name: snapshot_id
        in: path
        required: true
        schema:
          type: integer
          title: Snapshot Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapshotOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - snapshots
      summary: Roku Update Snapshot
      operationId: snapshots-update_snapshot
      security:
      - Nabu Cloud: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: integer
          title: Project Id
      - name: organisation_id
        in: path
        required: true
        schema:
          type: integer
          title: Organisation Id
      - name: device_id
        in: path
        required: true
        schema:
          type: integer
          title: Device Id
      - name: snapshot_id
        in: path
        required: true
        schema:
          type: integer
          title: Snapshot Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SnapshotUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapshotOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - snapshots
      summary: Roku Delete Snapshot
      operationId: snapshots-delete_snapshot
      security:
      - Nabu Cloud: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: integer
          title: Project Id
      - name: organisation_id
        in: path
        required: true
        schema:
          type: integer
          title: Organisation Id
      - name: device_id
        in: path
        required: true
        schema:
          type: integer
          title: Device Id
      - name: snapshot_id
        in: path
        required: true
        schema:
          type: integer
          title: Snapshot Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    SnapshotOut:
      properties:
        id:
          type: integer
          minimum: 0
          title: Id
        created_at:
          type: string
          format: date-time
          title: Created At
        parent_id:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          title: Parent Id
          description: The ID of the parent Snapshot.
        name:
          type: string
          maxLength: 255
          minLength: 3
          title: Name
          description: The name of the Snapshot.
        description:
          anyOf:
          - type: string
            maxLength: 4096
            minLength: 0
          - type: 'null'
          title: Description
          description: Description of the Snapshot.
        properties:
          anyOf:
          - additionalProperties: true
            type: object
            maxProperties: 8192
          - type: 'null'
          title: Properties
          description: Properties of the Snapshot.
          examples:
          - config_service_flags:
              fw.swup.channel-sync-enabled: 'false'
        rootfs_artifactory_path:
          anyOf:
          - type: string
            maxLength: 255
            minLength: 3
            pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$
          - type: 'null'
          title: Rootfs Artifactory Path
          description: The path of the rootfs image in artifactory.
          examples:
          - official/release/2024-h2/r14.0.4.122xx-rta/native_tv:latest
          - premergeci/native_tv:4838657
        started_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Started At
        children:
          items:
            type: integer
          type: array
          title: Children
          description: The IDs of the child Snapshots.
          default: []
        ready:
          type: boolean
          title: Ready
          description: "\n        Whether the snapshot is ready to use. Trying to start a device with a\n        snapshot that is not ready will result in an error. Deleting the\n        instance an unready snapshot is being taken from can cause the snapshot\n        creation process to fail.\n    "
          default: false
      type: object
      required:
      - id
      - created_at
      title: SnapshotOut
    SnapshotUpdate:
      properties:
        name:
          type: string
          maxLength: 255
          minLength: 3
          title: Name
          description: The name of the Snapshot.
        description:
          anyOf:
          - type: string
            maxLength: 4096
            minLength: 0
          - type: 'null'
          title: Description
          description: Description of the Snapshot.
        properties:
          anyOf:
          - additionalProperties: true
            type: object
            maxProperties: 8192
          - type: 'null'
          title: Properties
          description: Properties of the Snapshot.
          examples:
          - config_service_flags:
              fw.swup.channel-sync-enabled: 'false'
      type: object
      title: SnapshotUpdate
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SnapshotCreate:
      properties:
        parent_id:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          title: Parent Id
          description: The ID of the parent Snapshot.
        name:
          type: string
          maxLength: 255
          minLength: 3
          title: Name
          description: The name of the Snapshot.
        description:
          anyOf:
          - type: string
            maxLength: 4096
            minLength: 0
          - type: 'null'
          title: Description
          description: Description of the Snapshot.
        properties:
          anyOf:
          - additionalProperties: true
            type: object
            maxProperties: 8192
          - type: 'null'
          title: Properties
          description: Properties of the Snapshot.
          examples:
          - config_service_flags:
              fw.swup.channel-sync-enabled: 'false'
        system_setting_changes:
          anyOf:
          - additionalProperties:
              anyOf:
              - type: string
                format: binary
              - type: 'null'
            propertyNames:
              format: binary
            type: object
          - type: 'null'
          title: System Setting Changes
          description: "\n            A dictionary of system setting changes to apply to the snapshot.\n            This dictionary changes settings in system.conf.db. Entries with a\n            value of null will be removed.\n        "
        config_server_overrides_changes:
          anyOf:
          - additionalProperties:
              anyOf:
              - type: string
              - type: 'null'
            type: object
          - type: 'null'
          title: Config Server Overrides Changes
          description: "\n            A dictionary of config server setting override changes to apply to\n            the snapshot. These overrides are set in the ConfigServer/Overrides\n            key of system.conf.db. Entries with a value of null will be removed.\n        "
      type: object
      required:
      - name
      title: SnapshotCreate