openapi: 3.1.0 info: title: Roku Nabu Cloud 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 paths: /api/v1/-/livez: get: tags: - healthz summary: Roku Healthz operationId: healthz-healthz responses: '200': description: Successful Response content: application/json: schema: additionalProperties: type: string type: object title: Response Healthz-Healthz /api/v1/-/readyz: get: tags: - healthz summary: Roku Readyz operationId: healthz-readyz responses: '200': description: Successful Response content: application/json: schema: additionalProperties: type: string type: object title: Response Healthz-Readyz /api/v1/users/me: get: tags: - users summary: Roku Get Me operationId: users-get_me responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UserOut' security: - Nabu Cloud: [] /api/v1/users/me/organisations: get: tags: - users summary: Roku Get My Organisation description: Currently only returns a single item, the roku organisation operationId: users-get_my_organisation security: - Nabu Cloud: [] parameters: - 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: slug in: query required: false schema: type: string minLength: 3 maxLength: 255 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ description: Slug of the organisation, used in URLs title: Slug description: Slug of the organisation, used in URLs - name: name in: query required: false schema: type: string title: Name - name: max_devices in: query required: false schema: type: integer exclusiveMinimum: 0 description: Maximum number of devices in the organisation title: Max Devices description: Maximum number of devices in the organisation - name: max_snapshots in: query required: false schema: type: integer exclusiveMinimum: 0 description: Maximum number of snapshots in the organisation title: Max Snapshots description: Maximum number of snapshots in the organisation - name: max_project_devices in: query required: false schema: type: integer minimum: 0 description: Maximum number of devices in the organisation per project, 0 for Organisation max title: Max Project Devices description: Maximum number of devices in the organisation per project, 0 for Organisation max - name: max_project_snapshots in: query required: false schema: type: integer minimum: 0 description: Maximum number of snapshots in the organisation per project, 0 for Organisation max title: Max Project Snapshots description: Maximum number of snapshots in the organisation per project, 0 for Organisation max - name: max_project_runtime in: query required: false schema: type: integer minimum: 0 description: Maximum runtime of a device in the organisation per project, 0 for Organisation max title: Max Project Runtime description: Maximum runtime of a device in the organisation per project, 0 for Organisation max - name: created_at in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: The creation day of the organisation title: Created At description: The creation day of the organisation responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/OrganisationOut' title: Response Users-Get My Organisation '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/users/me/projects: get: tags: - users summary: Roku Get My Projects operationId: users-get_my_projects security: - Nabu Cloud: [] parameters: - 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: slug in: query required: false schema: type: string minLength: 3 maxLength: 255 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ description: The slug of the project, used in URLs title: Slug description: The slug of the project, used in URLs - name: name in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The name of the Project title: Name description: The name of the Project - name: description in: query required: false schema: anyOf: - type: string minLength: 0 maxLength: 4096 - type: 'null' description: The description of the Project title: Description description: The description of the Project - name: billing_entity in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The billing entity of the Project title: Billing Entity description: The billing entity of the Project - name: max_devices in: query required: false schema: type: integer minimum: 0 description: Maximum number of devices in the project, 0 for organisation max title: Max Devices description: Maximum number of devices in the project, 0 for organisation max - name: max_snapshots in: query required: false schema: type: integer minimum: 0 description: Maximum number of snapshots in the project, 0 for organisation max title: Max Snapshots description: Maximum number of snapshots in the project, 0 for organisation max - name: max_runtime in: query required: false schema: type: integer minimum: 0 description: Maximum runtime of a device in the project, 0 for organisation max title: Max Runtime description: Maximum runtime of a device in the project, 0 for organisation max - name: created_at in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: The creation day of the project title: Created At description: The creation day of the project - name: include_personal_project in: query required: false schema: type: boolean description: Show private projects default: true title: Include Personal Project description: Show private projects responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/ProjectOut' title: Response Users-Get My Projects '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/users/me/groups: get: tags: - users summary: Roku Get My Group operationId: users-get_my_group security: - Nabu Cloud: [] parameters: - 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: project_id in: query required: false schema: anyOf: - type: integer - type: 'null' title: Project Id - name: name in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The name of the group. Unique in the organisation title: Name description: The name of the group. Unique in the organisation - name: description in: query required: false schema: anyOf: - type: string minLength: 0 maxLength: 4096 - type: 'null' description: Description of the Group. title: Description description: Description of the Group. - name: created_at in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: The day the group was created title: Created At description: The day the group was created responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/GroupOut' title: Response Users-Get My Group '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/users/me/personal_access_tokens: get: tags: - personal-access-tokens summary: Roku List Personal Access Tokens description: List all personal access tokens for the authenticated user with their associated scopes. operationId: personal-access-tokens-list_personal_access_tokens responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/PersonalAccessTokenOut' type: array title: Response Personal-Access-Tokens-List Personal Access Tokens security: - Nabu Cloud: [] post: tags: - personal-access-tokens summary: Roku Create Personal Access Token description: Create a new personal access token for the authenticated user. The token will be returned only once and cannot be retrieved again. Maximum of 20 tokens per user. operationId: personal-access-tokens-create_personal_access_token requestBody: content: application/json: schema: $ref: '#/components/schemas/PersonalAccessTokenCreate' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PersonalAccessTokenCreated' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - Nabu Cloud: [] /api/v1/users/me/personal_access_tokens/{token_id}: delete: tags: - personal-access-tokens summary: Roku Revoke Personal Access Token description: Revoke a specific personal access token for the authenticated user by token ID. operationId: personal-access-tokens-revoke_personal_access_token security: - Nabu Cloud: [] parameters: - name: token_id in: path required: true schema: type: integer title: Token Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/users/me/personal_access_tokens/scopes: get: tags: - personal-access-tokens summary: Roku Get Personal Access Token Scopes description: Get all available scopes for personal access tokens that the authenticated user can use. Admin scope is only available to superusers. operationId: personal-access-tokens-get_personal_access_token_scopes responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/ScopeOut' type: array title: Response Personal-Access-Tokens-Get Personal Access Token Scopes security: - Nabu Cloud: [] /api/v1/users/me/personal_access_tokens/{token_id}/refresh: patch: tags: - personal-access-tokens summary: Roku Refresh Personal Access Token description: Refresh a personal access token by updating its expiration date. operationId: personal-access-tokens-refresh_personal_access_token security: - Nabu Cloud: [] parameters: - name: token_id in: path required: true schema: type: integer title: Token Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PersonalAccessTokenRefresh' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PersonalAccessTokenOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/builds: get: tags: - builds summary: Roku List All Builds operationId: builds-list_builds security: - Nabu Cloud: [] parameters: - 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: artifactory_path in: query required: false schema: type: string minLength: 3 maxLength: 255 pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$ description: The path of the build in artifactory. title: Artifactory Path description: The path of the build in artifactory. - name: public in: query required: false schema: type: boolean description: Whether the build is public title: Public description: Whether the build is public - name: source in: query required: false schema: $ref: '#/components/schemas/BuildSource' description: The source of the build examples: - official - premergeci description: The source of the build - name: device_type in: query required: false schema: $ref: '#/components/schemas/DeviceType' description: The type of the Device. examples: - tv description: The type of the Device. - name: asan in: query required: false schema: type: boolean description: Whether the build is ASAN title: Asan description: Whether the build is ASAN - name: only_artifactory_path in: query required: false schema: anyOf: - type: boolean - type: 'null' description: Only return the artifactory path of the build title: Only Artifactory Path description: Only return the artifactory path of the build responses: '200': description: Successful Response content: application/json: schema: anyOf: - type: array items: $ref: '#/components/schemas/BuildOut' - type: array items: type: string title: Response Builds-List Builds '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/builds/{build_id}: get: tags: - builds summary: Roku Get Build operationId: builds-get_build security: - Nabu Cloud: [] parameters: - name: build_id in: path required: true schema: type: integer title: Build Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BuildOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisation-roles: get: tags: - organisation-roles summary: Roku List Organisation Roles operationId: organisation-roles-list_organisation_roles security: - Nabu Cloud: [] parameters: - 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. responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/OrganisationRoleOut' title: Response Organisation-Roles-List Organisation Roles '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisation-roles/{role_id}: get: tags: - organisation-roles summary: Roku Get Organisation Role operationId: organisation-roles-get_organisation_role security: - Nabu Cloud: [] parameters: - name: role_id in: path required: true schema: type: integer title: Role Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/OrganisationRoleOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations: get: tags: - organisations summary: Roku List Organisations operationId: organisations-list_organisations security: - Nabu Cloud: [] parameters: - 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: slug in: query required: false schema: type: string minLength: 3 maxLength: 255 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ description: Slug of the organisation, used in URLs title: Slug description: Slug of the organisation, used in URLs - name: name in: query required: false schema: type: string title: Name - name: max_devices in: query required: false schema: type: integer exclusiveMinimum: 0 description: Maximum number of devices in the organisation title: Max Devices description: Maximum number of devices in the organisation - name: max_snapshots in: query required: false schema: type: integer exclusiveMinimum: 0 description: Maximum number of snapshots in the organisation title: Max Snapshots description: Maximum number of snapshots in the organisation - name: max_project_devices in: query required: false schema: type: integer minimum: 0 description: Maximum number of devices in the organisation per project, 0 for Organisation max title: Max Project Devices description: Maximum number of devices in the organisation per project, 0 for Organisation max - name: max_project_snapshots in: query required: false schema: type: integer minimum: 0 description: Maximum number of snapshots in the organisation per project, 0 for Organisation max title: Max Project Snapshots description: Maximum number of snapshots in the organisation per project, 0 for Organisation max - name: max_project_runtime in: query required: false schema: type: integer minimum: 0 description: Maximum runtime of a device in the organisation per project, 0 for Organisation max title: Max Project Runtime description: Maximum runtime of a device in the organisation per project, 0 for Organisation max - name: created_at in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: The creation day of the organisation title: Created At description: The creation day of the organisation responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/OrganisationOut' title: Response Organisations-List Organisations '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}: get: tags: - organisations summary: Roku Get Organisation description: Set Organisation_id to 1. Currently not in use as there is only Roku, but kept for future use. operationId: organisations-get_organisation security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/OrganisationOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/members: get: tags: - organisations summary: Roku List Organisation Members operationId: organisations-list_organisation_members security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation 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. responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/OrganisationMemberOut' title: Response Organisations-List Organisation Members '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/members/{user_id}: get: tags: - organisations summary: Roku Get Organisation Member operationId: organisations-get_organisation_member security: - Nabu Cloud: [] parameters: - name: user_id in: path required: true schema: type: string format: uuid title: User Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/OrganisationMemberOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/regions: get: tags: - organisations summary: Roku List Organisation Regions description: Set Organisation_id to 1. Currently not in use as there is only Roku, but kept for future use. operationId: organisations-list_organisation_regions security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation 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. responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/OrganisationRegionOut' title: Response Organisations-List Organisation Regions '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/regions/{region_id}: get: tags: - organisations summary: Roku Get Organisation Region operationId: organisations-get_organisation_region security: - Nabu Cloud: [] parameters: - name: region_id in: path required: true schema: type: integer title: Region Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/OrganisationRegionOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/roles/projects: get: tags: - organisations summary: Roku List Project Roles operationId: organisations-list_project_roles security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation 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. responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/ProjectRoleOut' title: Response Organisations-List Project Roles '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/roles/projects/{role_id}: get: tags: - organisations summary: Roku Get Project Role operationId: organisations-get_project_role security: - Nabu Cloud: [] parameters: - name: role_id in: path required: true schema: type: integer title: Role Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectRoleOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/roles/groups: get: tags: - organisations summary: Roku List Group Roles operationId: organisations-list_group_roles security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation 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. responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/GroupRoleOut' title: Response Organisations-List Group Roles '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/roles/groups/{role_id}: get: tags: - organisations summary: Roku Get Group Role operationId: organisations-get_group_role security: - Nabu Cloud: [] parameters: - name: role_id in: path required: true schema: type: integer title: Role Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GroupRoleOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/groups: get: tags: - groups summary: Roku List Group operationId: groups-list_group security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation 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: project_id in: query required: false schema: anyOf: - type: integer - type: 'null' title: Project Id - name: name in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The name of the group. Unique in the organisation title: Name description: The name of the group. Unique in the organisation - name: description in: query required: false schema: anyOf: - type: string minLength: 0 maxLength: 4096 - type: 'null' description: Description of the Group. title: Description description: Description of the Group. - name: created_at in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: The day the group was created title: Created At description: The day the group was created responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/GroupOut' title: Response Groups-List Group '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - groups summary: Roku Create Group operationId: groups-create_group security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GroupCreate' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GroupOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/groups/{group_id}: get: tags: - groups summary: Roku Get a Group by ID operationId: groups-get_group security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation Id - name: group_id in: path required: true schema: type: integer title: Group Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GroupOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - groups summary: Roku Update Group operationId: groups-update_group security: - Nabu Cloud: [] parameters: - name: group_id in: path required: true schema: type: integer title: Group Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GroupUpdate' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GroupOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - groups summary: Roku Delete Group operationId: groups-delete_group security: - Nabu Cloud: [] parameters: - name: group_id in: path required: true schema: type: integer title: Group Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/groups/{group_id}/members: get: tags: - groups summary: Roku List Group Members operationId: groups-list_group_members security: - Nabu Cloud: [] parameters: - name: group_id in: path required: true schema: type: integer title: Group Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id - name: skip in: query required: false schema: type: integer minimum: 0 description: The number of results to skip. Use this for pagination. Use 0 for the first page. default: 0 title: Skip description: The number of results to skip. Use this for pagination. Use 0 for the first page. - name: limit in: query required: false schema: type: integer minimum: 0 description: The number of results to return, must be non-negative int. Use 0 for no limit. default: 100 title: Limit description: The number of results to return, must be non-negative int. Use 0 for no limit. responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/GroupMemberOut' title: Response Groups-List Group Members '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - groups summary: Roku Add Group Member operationId: groups-add_group_member security: - Nabu Cloud: [] parameters: - name: group_id in: path required: true schema: type: integer title: Group Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GroupAddMember' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GroupMemberOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/groups/{group_id}/members/{user_id}: get: tags: - groups summary: Roku Get Group Member operationId: groups-get_group_member security: - Nabu Cloud: [] parameters: - name: group_id in: path required: true schema: type: integer title: Group Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id - name: user_id in: path required: true schema: type: string format: uuid title: User Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GroupMemberOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - groups summary: Roku Update Group Member operationId: groups-update_group_member security: - Nabu Cloud: [] parameters: - name: group_id in: path required: true schema: type: integer title: Group Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id - name: user_id in: path required: true schema: type: string format: uuid title: User Id - name: group_role_id in: query required: true schema: type: integer title: Group Role Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GroupMemberOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - groups summary: Roku Remove Group Member operationId: groups-remove_group_member security: - Nabu Cloud: [] parameters: - name: group_id in: path required: true schema: type: integer title: Group Id - name: organisation_id in: path required: true schema: type: integer title: Organisation Id - name: user_id in: path required: true schema: type: string format: uuid title: User Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects: get: tags: - projects summary: Roku List Projects operationId: projects-list_projects security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation 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: slug in: query required: false schema: type: string minLength: 3 maxLength: 255 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ description: The slug of the project, used in URLs title: Slug description: The slug of the project, used in URLs - name: name in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The name of the Project title: Name description: The name of the Project - name: description in: query required: false schema: anyOf: - type: string minLength: 0 maxLength: 4096 - type: 'null' description: The description of the Project title: Description description: The description of the Project - name: billing_entity in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The billing entity of the Project title: Billing Entity description: The billing entity of the Project - name: max_devices in: query required: false schema: type: integer minimum: 0 description: Maximum number of devices in the project, 0 for organisation max title: Max Devices description: Maximum number of devices in the project, 0 for organisation max - name: max_snapshots in: query required: false schema: type: integer minimum: 0 description: Maximum number of snapshots in the project, 0 for organisation max title: Max Snapshots description: Maximum number of snapshots in the project, 0 for organisation max - name: max_runtime in: query required: false schema: type: integer minimum: 0 description: Maximum runtime of a device in the project, 0 for organisation max title: Max Runtime description: Maximum runtime of a device in the project, 0 for organisation max - name: created_at in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: The creation day of the project title: Created At description: The creation day of the project - name: include_personal_project in: query required: false schema: type: boolean description: Show private projects default: true title: Include Personal Project description: Show private projects responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/ProjectOut' title: Response Projects-List Projects '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - projects summary: Roku Create Project operationId: projects-create_project security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectCreate' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}: get: tags: - projects summary: Roku Get Project operationId: projects-get_project security: - Nabu Cloud: [] parameters: - name: organisation_id in: path required: true schema: type: integer title: Organisation Id - name: project_id in: path required: true schema: type: integer title: Project Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - projects summary: Roku Update Project operationId: projects-update_project 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectUpdate' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - projects summary: Roku Delete Project operationId: projects-delete_project 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: cascade_delete in: query required: false schema: anyOf: - type: boolean - type: 'null' description: Deletes project, and everything associated with it, including snapshots! title: Cascade Delete description: Deletes project, and everything associated with it, including snapshots! responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/groups: get: tags: - projects summary: Roku List Project Groups operationId: projects-list_project_groups 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: 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: project_role in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The name of the project role title: Project Role description: The name of the project role - name: added in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: The day the group was added title: Added description: The day the group was added - name: group_name in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The name of the Group title: Group Name description: The name of the Group - name: group_description in: query required: false schema: type: string minLength: 0 maxLength: 4096 description: The name of the Group title: Group Description description: The name of the Group - name: group_created_at in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: When the group was created title: Group Created At description: When the group was created responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/ProjectGroupOut' title: Response Projects-List Project Groups '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - projects summary: Roku Add Project Group operationId: projects-add_project_group 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectGroupAdd' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectGroupOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/groups/{group_id}: get: tags: - projects summary: Roku Get Project Group operationId: projects-get_project_group 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: group_id in: path required: true schema: type: integer title: Group Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectGroupOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - projects summary: Roku Update Project Group operationId: projects-update_project_group 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: group_id in: path required: true schema: type: integer title: Group Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectGroupUpdate' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectGroupOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - projects summary: Roku Remove Project Group operationId: projects-remove_project_group 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: group_id in: path required: true schema: type: integer title: Group Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/members: get: tags: - projects summary: Roku List Project Members operationId: projects-list_project_members 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: 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: project_role in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The name of the project role title: Project Role description: The name of the project role - name: added in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: When the user was added. title: Added description: When the user was added. - name: member_username in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The username of the member. title: Member Username description: The username of the member. - name: member_email in: query required: false schema: type: string description: The email of the member. format: email title: Member Email description: The email of the member. responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/ProjectMemberOut' title: Response Projects-List Project Members '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - projects summary: Roku Add Project Member operationId: projects-add_project_member 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectMemberAdd' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectMemberOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/members/{user_id}: get: tags: - projects summary: Roku Get Project Member operationId: projects-get_project_member security: - Nabu Cloud: [] parameters: - name: user_id in: path required: true schema: type: string format: uuid title: User Id - 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 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectMemberOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - projects summary: Roku Update Project Member operationId: projects-update_project_member 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: user_id in: path required: true schema: type: string format: uuid title: User Id - name: project_role_id in: query required: true schema: type: integer title: Project Role Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectMemberOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - projects summary: Roku Remove Project Member operationId: projects-remove_project_member 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: user_id in: path required: true schema: type: string format: uuid title: User Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/serviceaccounts/login: post: tags: - serviceaccounts summary: Roku Login Token operationId: serviceaccounts-login_token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Body_serviceaccounts-login_token' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/OIDCTokenResponseModel' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/devices: get: tags: - devices summary: Roku List Devices description: Show devices in a project. operationId: devices-list_devices 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: 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: esn in: query required: false schema: type: string minLength: 12 maxLength: 12 pattern: ^XY+([A-Z0-9]+)?$ description: The ESN of the device. title: Esn description: The ESN of the device. - name: device_type in: query required: false schema: $ref: '#/components/schemas/DeviceType' description: The type of the Device. examples: - tv description: The type of the Device. - name: name in: query required: false schema: type: string minLength: 3 maxLength: 255 description: The name of the Device. title: Name description: The name of the Device. - name: description in: query required: false schema: anyOf: - type: string minLength: 0 maxLength: 4096 - type: 'null' description: Description of the Device. title: Description description: Description of the Device. - name: account_name in: query required: false schema: anyOf: - type: string format: email - type: 'null' description: Account name of the Device. examples: - user@roku.com title: Account Name description: Account name of the Device. - name: properties in: query required: false schema: anyOf: - type: object additionalProperties: true maxProperties: 8192 - type: 'null' description: Device properties. examples: - {} - config_service_flags: fw.swup.channel-sync-enabled: 'false' title: Properties description: Device properties. - name: qa_hub in: query required: false schema: type: boolean description: Whether the device should be auto registered in QA Hub. title: Qa Hub description: Whether the device should be auto registered in QA Hub. - name: created_at in: query required: false schema: anyOf: - type: string format: date - type: 'null' description: The day the device was created title: Created At description: The day the device was created responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/DeviceOut' title: Response Devices-List Devices '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - devices summary: Roku Create Device operationId: devices-create_device 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeviceCreate' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/DeviceOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}: get: tags: - devices summary: Roku Get Device operationId: devices-get_device 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 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/DeviceOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - devices summary: Roku Update Device operationId: devices-update_device 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/DeviceUpdate' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/DeviceOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - devices summary: Roku Delete Device operationId: devices-delete_device 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: delete_snapshots in: query required: false schema: type: boolean default: false title: Delete Snapshots responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/start: post: tags: - devices summary: Roku Start Device operationId: devices-start_device 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: skip_build_validation in: query required: false schema: type: boolean default: false title: Skip Build Validation requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeviceStart' responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/DeviceOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/stop: post: tags: - devices summary: Roku Stop Device operationId: devices-stop_device 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 responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/DeviceOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/runs: get: tags: - devices summary: Roku Get Device Runs operationId: devices-get_device_runs 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 responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/DeviceHistoryOut' title: Response Devices-Get Device Runs '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/organisations/{organisation_id}/projects/{project_id}/devices/{device_id}/logs/{instance_id}: get: tags: - devices summary: Roku Read Logs operationId: devices-read_logs security: - Nabu Cloud: [] parameters: - name: instance_id in: path required: true schema: type: integer title: Instance Id - 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 responses: '200': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /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' /asyncapi: get: tags: - asyncapi summary: Roku Serve Asyncapi Schema description: Serve the AsyncAPI schema as an HTML response. operationId: asyncapi-serve_asyncapi_schema parameters: - name: sidebar in: query required: false schema: type: boolean default: true title: Sidebar - name: info in: query required: false schema: type: boolean default: true title: Info - name: servers in: query required: false schema: type: boolean default: true title: Servers - name: operations in: query required: false schema: type: boolean default: true title: Operations - name: messages in: query required: false schema: type: boolean default: true title: Messages - name: schemas in: query required: false schema: type: boolean default: true title: Schemas - name: errors in: query required: false schema: type: boolean default: true title: Errors - name: expandMessageExamples in: query required: false schema: type: boolean default: true title: Expandmessageexamples responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /asyncapi.json: get: tags: - asyncapi summary: Roku Download App Json Schema operationId: asyncapi-download_app_json_schema responses: '200': description: Successful Response content: application/json: schema: {} /asyncapi.yaml: get: tags: - asyncapi summary: Roku Download App Yaml Schema operationId: asyncapi-download_app_yaml_schema responses: '200': description: Successful Response content: application/json: schema: {} components: schemas: AWSRegion: type: string enum: - us-west-2 title: AWSRegion AgentStreamOption: properties: id: type: integer title: Id name: type: string title: Name type: object required: - id - name title: AgentStreamOption Body_serviceaccounts-login_token: properties: grant_type: type: string pattern: client_credentials title: Grant Type client_id: type: string title: Client Id client_secret: type: string title: Client Secret type: object title: Body_serviceaccounts-login_token BuildOut: properties: id: type: integer title: Id artifactory_path: type: string maxLength: 255 minLength: 3 pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$ title: Artifactory Path description: The path of the build in artifactory. tag: type: string title: Tag description: The tag of the build full_version: anyOf: - type: string - type: 'null' title: Full Version description: The full version of the build asan: type: boolean title: Asan description: Whether the build is ASAN public: type: boolean title: Public description: Whether the build is public source: $ref: '#/components/schemas/BuildSource' description: The source of the build examples: - official - premergeci device_type: $ref: '#/components/schemas/DeviceType' description: The type of the Device. examples: - tv type: object required: - id - artifactory_path - tag - full_version - asan - public - source - device_type title: BuildOut BuildSource: type: string enum: - pre-merge - main - released - alpha - misc title: BuildSource DeviceCreate: properties: device_type: $ref: '#/components/schemas/DeviceType' description: The type of the Device. examples: - tv name: type: string maxLength: 255 minLength: 3 title: Name description: The name of the Device. description: anyOf: - type: string maxLength: 4096 minLength: 0 - type: 'null' title: Description description: Description of the Device. account_name: anyOf: - type: string format: email - type: 'null' title: Account Name description: Account name of the Device. examples: - user@roku.com properties: anyOf: - additionalProperties: true type: object maxProperties: 8192 - type: 'null' title: Properties description: Device properties. examples: - {} - config_service_flags: fw.swup.channel-sync-enabled: 'false' qa_hub: type: boolean title: Qa Hub description: Whether the device should be auto registered in QA Hub. type: object required: - device_type - name title: DeviceCreate DeviceHistoryOut: properties: instance_id: type: integer minimum: 0 title: Instance Id description: ID of the device instance. creator_id: type: string format: uuid title: Creator Id description: The ID of the user who started the device. creator_username: type: string maxLength: 255 minLength: 3 title: Creator Username description: The username of the user who started the device. created_at: type: string format: date-time title: Created At started_at: anyOf: - type: string format: date-time - type: 'null' title: Started At ended_at: anyOf: - type: string format: date-time - type: 'null' title: Ended At runtime: type: integer minimum: 0 title: Runtime description: Runtime of the device in seconds. snapshot_id: type: integer minimum: 0 title: Snapshot Id description: The ID of the snapshot to use for the device. snapshot_name: type: string maxLength: 255 minLength: 3 title: Snapshot Name description: Name of the snapshot. region_id: type: integer minimum: 0 title: Region Id description: The ID of the region where the device will run. region_name: type: string maxLength: 255 minLength: 3 title: Region Name description: Name of the region. stream_option_id: type: integer minimum: 0 title: Stream Option Id description: The ID of the stream option to use for the device. stream_option_name: type: string maxLength: 255 minLength: 3 title: Stream Option Name description: 'Name of the stream option. ' max_runtime: type: integer minimum: 0 title: Max Runtime description: The maximum runtime of the device in seconds, 0 for project max runtime. status: $ref: '#/components/schemas/KubernetesStatus' rootfs_artifactory_path: type: string maxLength: 255 minLength: 3 pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$ 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 reboot: type: integer maximum: 150 minimum: -1 title: Reboot description: Device reboot behaviour.-1 for no reboots, including requested reboot; 0 for no device crash reboots; and >0 for n number of device crash reboots.A device crash is determined by restart_reason in the device nvram. A device shutdown will act like a reboot. type: object required: - instance_id - creator_id - creator_username - created_at - runtime - snapshot_id - region_id - stream_option_id - max_runtime - status - rootfs_artifactory_path - reboot title: DeviceHistoryOut DeviceInstanceInfo: properties: id: type: integer minimum: 0 title: Id creator_id: type: string format: uuid title: Creator Id description: The ID of the user who started the device. created_at: type: string format: date-time title: Created At started_at: type: string format: date-time title: Started At snapshot_id: type: integer minimum: 0 title: Snapshot Id description: The ID of the snapshot to use for the device. snapshot_name: type: string maxLength: 255 minLength: 3 title: Snapshot Name description: Name of the snapshot. region_id: type: integer minimum: 0 title: Region Id description: The ID of the region where the device will run. region_name: type: string maxLength: 255 minLength: 3 title: Region Name description: Name of the region. stream_option_id: type: integer minimum: 0 title: Stream Option Id description: The ID of the stream option to use for the device. stream_option_name: type: string maxLength: 255 minLength: 3 title: Stream Option Name description: 'Name of the stream option. ' max_runtime: type: integer minimum: 0 title: Max Runtime description: The maximum runtime of the device in seconds, 0 for project max runtime. rootfs_artifactory_path: type: string maxLength: 255 minLength: 3 pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$ 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 reboot: type: integer maximum: 150 minimum: -1 title: Reboot description: Device reboot behaviour.-1 for no reboots, including requested reboot; 0 for no device crash reboots; and >0 for n number of device crash reboots.A device crash is determined by restart_reason in the device nvram. A device shutdown will act like a reboot. ip_address: anyOf: - type: string format: ipvanyaddress - type: 'null' title: Ip Address description: IP address of the running device Instance. janus_id: anyOf: - type: integer minimum: 0 - type: 'null' title: Janus Id description: ID of the Janus WebRTC stream. janus_pin: anyOf: - type: string - type: 'null' title: Janus Pin description: Pin to access the Janus WebRTC stream. janus_token: anyOf: - type: string - type: 'null' title: Janus Token description: Janus API Token. janus_websocket_url: anyOf: - type: string description: "\n WebSocket URL to connect to the Janus WebRTC gateway. Includes the\n ws:// prefix and the path to the instance.\n " - type: 'null' title: Janus Websocket Url janus_ice_servers: anyOf: - items: $ref: '#/components/schemas/IceServer' type: array description: List of ICE servers to use for WebRTC connections. - type: 'null' title: Janus Ice Servers instance_api_url: anyOf: - type: string description: "\n Url prefix for the instance api. Does not contain the protocol\n prefix since the instance api contains both ws and http endpoints.\n " - type: 'null' title: Instance Api Url instance_uuid: type: string format: uuid title: Instance Uuid type: object required: - id - creator_id - created_at - snapshot_id - region_id - stream_option_id - max_runtime - rootfs_artifactory_path - reboot - instance_uuid title: DeviceInstanceInfo DeviceOut: properties: id: type: integer minimum: 0 title: Id esn: type: string maxLength: 12 minLength: 12 pattern: ^XY+([A-Z0-9]+)?$ title: Esn description: The ESN of the device. device_type: $ref: '#/components/schemas/DeviceType' description: The type of the Device. examples: - tv name: type: string maxLength: 255 minLength: 3 title: Name description: The name of the Device. description: anyOf: - type: string maxLength: 4096 minLength: 0 - type: 'null' title: Description description: Description of the Device. account_name: anyOf: - type: string format: email - type: 'null' title: Account Name description: Account name of the Device. examples: - user@roku.com properties: anyOf: - additionalProperties: true type: object maxProperties: 8192 - type: 'null' title: Properties description: Device properties. examples: - {} - config_service_flags: fw.swup.channel-sync-enabled: 'false' qa_hub: type: boolean title: Qa Hub description: Whether the device should be auto registered in QA Hub. last_snapshot: type: integer minimum: 0 title: Last Snapshot description: The ID of the snapshot to use for the device. last_snapshot_name: type: string maxLength: 255 minLength: 3 title: Last Snapshot Name description: Name of the snapshot. rootfs_artifactory_path: type: string maxLength: 255 minLength: 3 pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$ 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 snapshots: items: type: integer type: array title: Snapshots description: List of device snapshot IDs. default: [] status: $ref: '#/components/schemas/DeviceStatus' description: The running status of the device. default: shutdown running_device: anyOf: - $ref: '#/components/schemas/DeviceInstanceInfo' - type: 'null' type: object required: - id - esn - device_type - name - qa_hub title: DeviceOut DeviceStart: properties: snapshot_id: type: integer minimum: 0 title: Snapshot Id description: The ID of the snapshot to use for the device. region_id: type: integer minimum: 0 title: Region Id description: The ID of the region where the device will run. stream_option_id: type: integer minimum: 0 title: Stream Option Id description: The ID of the stream option to use for the device. rootfs_artifactory_path: type: string maxLength: 255 minLength: 3 pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$ 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 max_runtime: type: integer minimum: 0 title: Max Runtime description: The maximum runtime of the device in seconds, 0 for project max runtime. default: 0 reboot: type: integer maximum: 150 minimum: -1 title: Reboot description: Device reboot behaviour.-1 for no reboots, including requested reboot; 0 for no device crash reboots; and >0 for n number of device crash reboots.A device crash is determined by restart_reason in the device nvram. A device shutdown will act like a reboot. default: 0 override_is_asan: anyOf: - type: boolean - type: 'null' title: Override Is Asan description: "\n Whether to force the device instance to be an ASAN build. If set to\n True then the instance is started with ASAN resources, if False the\n instance is started without, if None the ASAN status is determined\n by the rootfs image.\n This can be useful if an asan rootfs is for some reason not\n tagged as such.\n\ \ " type: object required: - snapshot_id - region_id - stream_option_id - rootfs_artifactory_path title: DeviceStart DeviceStatus: type: string enum: - shutdown - pending - running title: DeviceStatus DeviceType: type: string enum: - tv - stb - streambar title: DeviceType DeviceUpdate: properties: name: type: string maxLength: 255 minLength: 3 title: Name description: The name of the Device. description: anyOf: - type: string maxLength: 4096 minLength: 0 - type: 'null' title: Description description: Description of the Device. account_name: anyOf: - type: string format: email - type: 'null' title: Account Name description: Account name of the Device. examples: - user@roku.com properties: anyOf: - additionalProperties: true type: object maxProperties: 8192 - type: 'null' title: Properties description: Device properties. examples: - {} - config_service_flags: fw.swup.channel-sync-enabled: 'false' qa_hub: type: boolean title: Qa Hub description: Whether the device should be auto registered in QA Hub. type: object title: DeviceUpdate GroupAddMember: properties: group_role_id: type: integer title: Group Role Id user_id: type: string format: uuid title: User Id type: object required: - group_role_id - user_id title: GroupAddMember GroupCreate: properties: name: type: string maxLength: 255 minLength: 3 title: Name description: The name of the group. Unique in the organisation type: object required: - name title: GroupCreate GroupMemberOut: properties: id: type: string format: uuid title: Id username: type: string title: Username full_name: anyOf: - type: string - type: 'null' title: Full Name email: anyOf: - type: string format: email - type: 'null' title: Email group_role_id: type: integer title: Group Role Id group_role_name: type: string title: Group Role Name type: object required: - id - username - full_name - email - group_role_id - group_role_name title: GroupMemberOut GroupOut: properties: id: type: integer title: Id name: type: string maxLength: 255 minLength: 3 title: Name description: The name of the group. Unique in the organisation type: object required: - id - name title: GroupOut GroupRoleOut: properties: group_role_id: type: integer title: Group Role Id name: type: string title: Name permissions: items: type: string type: array title: Permissions type: object required: - group_role_id - name - permissions title: GroupRoleOut GroupUpdate: properties: name: type: string maxLength: 255 minLength: 3 title: Name description: The name of the group. Unique in the organisation type: object required: - name title: GroupUpdate HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError IceServer: properties: urls: items: type: string type: array title: Urls username: anyOf: - type: string - type: 'null' title: Username credential: anyOf: - type: string - type: 'null' title: Credential type: object required: - urls title: IceServer KubernetesStatus: type: string enum: - created - pending - running - completed - failed - crashed - unknown title: KubernetesStatus OIDCTokenResponseModel: properties: access_token: type: string title: Access Token refresh_token: anyOf: - type: string - type: 'null' title: Refresh Token expires_in: type: integer title: Expires In refresh_expires_in: type: integer title: Refresh Expires In token_type: type: string title: Token Type scope: type: string title: Scope type: object required: - access_token - expires_in - refresh_expires_in - token_type - scope title: OIDCTokenResponseModel description: OIDC Token response model OrganisationMemberOut: properties: user_id: type: string format: uuid title: User Id username: type: string title: Username organisation_role_id: type: integer title: Organisation Role Id organisation_role_name: type: string title: Organisation Role Name type: object required: - user_id - username - organisation_role_id - organisation_role_name title: OrganisationMemberOut OrganisationOut: properties: id: type: integer title: Id idp_id: anyOf: - type: string format: uuid - type: 'null' title: Idp Id description: Identity Provider(IdP) ID of the organisation name: type: string maxLength: 255 minLength: 3 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ title: Name description: Slug of the organisation, used in URLs slug: type: string title: Slug description: Name of the organisation max_devices: type: integer exclusiveMinimum: 0 title: Max Devices description: Maximum number of devices in the organisation max_snapshots: type: integer exclusiveMinimum: 0 title: Max Snapshots description: Maximum number of snapshots in the organisation max_project_devices: type: integer minimum: 0 title: Max Project Devices description: Maximum number of devices in the organisation per project, 0 for Organisation max max_project_snapshots: type: integer minimum: 0 title: Max Project Snapshots description: Maximum number of snapshots in the organisation per project, 0 for Organisation max max_project_runtime: type: integer minimum: 0 title: Max Project Runtime description: Maximum runtime of a device in the organisation per project, 0 for Organisation max current_devices: type: integer minimum: 0 title: Current Devices default: 0 current_snapshots: type: integer minimum: 0 title: Current Snapshots default: 0 type: object required: - id - name - slug - max_devices - max_snapshots - max_project_devices - max_project_snapshots - max_project_runtime title: OrganisationOut OrganisationRegionOut: properties: region_id: type: integer title: Region Id region_name: type: string title: Region Name aws_region: $ref: '#/components/schemas/AWSRegion' agent_active: type: boolean title: Agent Active agent_stream_options: items: $ref: '#/components/schemas/AgentStreamOption' type: array title: Agent Stream Options type: object required: - region_id - region_name - aws_region - agent_active - agent_stream_options title: OrganisationRegionOut OrganisationRoleOut: properties: organisation_id: type: integer title: Organisation Id name: type: string title: Name permissions: items: type: string type: array title: Permissions type: object required: - organisation_id - name - permissions title: OrganisationRoleOut PersonalAccessTokenCreate: properties: name: type: string maxLength: 255 minLength: 3 title: Name description: A descriptive name for the token description: anyOf: - type: string maxLength: 4096 minLength: 0 - type: 'null' title: Description description: Optional description for the token expires_in_days: type: integer maximum: 365 minimum: 1 title: Expires In Days description: Number of days until the token expires (1-365 days) default: 30 scopes: items: type: string maxLength: 255 minLength: 3 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ type: array title: Scopes description: List of scopes that define the token's permissions type: object required: - name - scopes title: PersonalAccessTokenCreate PersonalAccessTokenCreated: properties: token: type: string maxLength: 2048 minLength: 1 title: Token description: The actual token - save this, it won't be shown again! token_info: $ref: '#/components/schemas/PersonalAccessTokenOut' type: object required: - token - token_info title: PersonalAccessTokenCreated description: Response when a new PAT is created - includes the actual token PersonalAccessTokenOut: properties: id: type: integer title: Id description: The unique identifier of the personal access token name: type: string maxLength: 255 minLength: 3 title: Name description: A descriptive name for the token description: anyOf: - type: string maxLength: 4096 minLength: 0 - type: 'null' title: Description description: Optional description for the token scopes: items: type: string maxLength: 255 minLength: 3 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ type: array title: Scopes description: List of scopes that define the token's permissions version: type: integer title: Version description: Version number of the token format created_at: type: string format: date-time title: Created At description: When the token was created expires_at: type: string format: date-time title: Expires At description: When the token expires last_used_at: anyOf: - type: string format: date-time - type: 'null' title: Last Used At description: When the token was last used revoked_at: anyOf: - type: string format: date-time - type: 'null' title: Revoked At description: When the token was revoked, if applicable status: $ref: '#/components/schemas/PersonalAccessTokenStatus' readOnly: true type: object required: - id - name - scopes - version - created_at - expires_at - status title: PersonalAccessTokenOut PersonalAccessTokenRefresh: properties: expires_in_days: type: integer maximum: 365 minimum: 1 title: Expires In Days description: Number of days until the token expires (1-365 days) default: 30 type: object title: PersonalAccessTokenRefresh PersonalAccessTokenStatus: type: string enum: - active - expired - revoked title: PersonalAccessTokenStatus ProjectCreate: properties: slug: type: string maxLength: 255 minLength: 3 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ title: Slug description: The slug of the project, used in URLs name: type: string maxLength: 255 minLength: 3 title: Name description: The name of the Project description: anyOf: - type: string maxLength: 4096 minLength: 0 - type: 'null' title: Description description: The description of the Project billing_entity: type: string maxLength: 255 minLength: 3 title: Billing Entity description: The billing entity of the Project max_devices: type: integer minimum: 0 title: Max Devices description: Maximum number of devices in the project, 0 for organisation max default: 0 max_snapshots: type: integer minimum: 0 title: Max Snapshots description: Maximum number of snapshots in the project, 0 for organisation max default: 0 max_runtime: type: integer minimum: 0 title: Max Runtime description: Maximum runtime of a device in the project, 0 for organisation max default: 0 private: type: boolean title: Private description: Whether the project is listed in search results default: false type: object required: - slug - name - billing_entity title: ProjectCreate ProjectGroupAdd: properties: group_id: type: integer title: Group Id project_role_id: type: integer title: Project Role Id type: object required: - group_id - project_role_id title: ProjectGroupAdd ProjectGroupOut: properties: group_id: type: integer title: Group Id group_name: type: string title: Group Name project_role_id: type: integer title: Project Role Id project_role_name: type: string title: Project Role Name type: object required: - group_id - group_name - project_role_id - project_role_name title: ProjectGroupOut ProjectGroupUpdate: properties: project_role_id: type: integer title: Project Role Id type: object required: - project_role_id title: ProjectGroupUpdate ProjectMemberAdd: properties: user_id: type: string format: uuid title: User Id project_role_id: type: integer title: Project Role Id type: object required: - user_id - project_role_id title: ProjectMemberAdd ProjectMemberOut: properties: user_id: type: string format: uuid title: User Id username: type: string title: Username project_role_id: type: integer title: Project Role Id project_role_name: type: string title: Project Role Name type: object required: - user_id - username - project_role_id - project_role_name title: ProjectMemberOut ProjectOut: properties: id: type: integer minimum: 0 title: Id slug: type: string maxLength: 255 minLength: 3 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ title: Slug description: The slug of the project, used in URLs name: type: string maxLength: 255 minLength: 3 title: Name description: The name of the Project description: anyOf: - type: string maxLength: 4096 minLength: 0 - type: 'null' title: Description description: The description of the Project billing_entity: type: string maxLength: 255 minLength: 3 title: Billing Entity description: The billing entity of the Project max_devices: type: integer minimum: 0 title: Max Devices description: Maximum number of devices in the project, 0 for organisation max default: 0 max_snapshots: type: integer minimum: 0 title: Max Snapshots description: Maximum number of snapshots in the project, 0 for organisation max default: 0 max_runtime: type: integer minimum: 0 title: Max Runtime description: Maximum runtime of a device in the project, 0 for organisation max default: 0 private: type: boolean title: Private description: Whether the project is listed in search results default: false user_project: type: boolean title: User Project description: Whether the project is a user project created_at: type: string format: date-time title: Created At description: When the project was created current_devices: type: integer minimum: 0 title: Current Devices default: 0 current_snapshots: type: integer minimum: 0 title: Current Snapshots default: 0 type: object required: - id - slug - name - billing_entity - user_project - created_at title: ProjectOut ProjectRoleOut: properties: project_role_id: type: integer title: Project Role Id name: type: string title: Name permissions: items: type: string type: array title: Permissions type: object required: - project_role_id - name - permissions title: ProjectRoleOut ProjectUpdate: properties: slug: type: string maxLength: 255 minLength: 3 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ title: Slug description: The slug of the project, used in URLs name: type: string maxLength: 255 minLength: 3 title: Name description: The name of the Project description: anyOf: - type: string maxLength: 4096 minLength: 0 - type: 'null' title: Description description: The description of the Project billing_entity: type: string maxLength: 255 minLength: 3 title: Billing Entity description: The billing entity of the Project max_devices: type: integer minimum: 0 title: Max Devices description: Maximum number of devices in the project, 0 for organisation max max_snapshots: type: integer minimum: 0 title: Max Snapshots description: Maximum number of snapshots in the project, 0 for organisation max max_runtime: type: integer minimum: 0 title: Max Runtime description: Maximum runtime of a device in the project, 0 for organisation max private: type: boolean title: Private description: Whether the project is listed in search results type: object title: ProjectUpdate ScopeOut: properties: name: type: string maxLength: 255 minLength: 3 pattern: ^[a-z0-9]+(-[a-z0-9]+)*$ title: Name description: The name of the scope description: type: string maxLength: 4096 minLength: 0 title: Description description: Description of what the scope allows permissions: items: type: string type: array title: Permissions description: List of permissions granted by this scope type: object required: - name - description - permissions title: ScopeOut 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 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 UserOut: properties: id: type: string format: uuid title: Id username: type: string title: Username full_name: anyOf: - type: string - type: 'null' title: Full Name email: anyOf: - type: string format: email - type: 'null' title: Email type: object required: - id - username - full_name - email title: UserOut 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 servers: - url: https://api.cloud.roku.dev description: Roku Nabu Cloud Production