Roku users API

The users API from Roku — 4 operation(s) for users.

Documentation

Specifications

Schemas & Data

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

Other Resources

OpenAPI Specification

roku-users-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Roku External Control Protocol (ECP) Apps users API
  version: '1.0'
  description: 'The External Control Protocol (ECP) is an HTTP-based API exposed on port 8060 of every Roku

    streaming device on the local network. It enables third-party applications, mobile remote-control

    apps, automated testing systems, and home-automation hubs to discover Roku devices via SSDP,

    inject simulated remote-control key presses, launch installed apps with deep-link parameters,

    query device state, and retrieve diagnostic information.


    The protocol is plain HTTP/1.1 (no TLS) and is intended for trusted local-network use only.

    Most control operations require the user to enable "Control by mobile apps" on the device.

    Additional diagnostic endpoints (chanperf, sgnodes, registry, etc.) are gated behind Roku

    Developer Mode.

    '
  contact:
    name: Roku Developer Program
    url: https://developer.roku.com
  x-generated-from: documentation
  x-source-url: https://developer.roku.com/docs/developer-program/dev-tools/external-control-api.md
servers:
- url: http://{rokuDeviceIp}:8060
  description: A Roku device on the local network
  variables:
    rokuDeviceIp:
      default: 192.168.1.100
      description: The IPv4 address of the Roku device, discovered via SSDP
tags:
- name: users
paths:
  /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'
components:
  schemas:
    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
    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
    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
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    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
    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