Skip to content

Commit

Permalink
feat: Split Core & Extension APIs
Browse files Browse the repository at this point in the history
  • Loading branch information
jlacivita committed Feb 19, 2024
1 parent abb2bf6 commit 4d322ea
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 0 deletions.
4 changes: 4 additions & 0 deletions requirements/specifications/device/device-information.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ See [Firebolt Requirements Governance](../../governance.md) for more info.
## 1. Overview
This document outlines the requirements for ontological, intrinsic, and product-related device indentification APIs.

**TODO**: add capabilities to all APIs

The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in [BCP 14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

## 2. Table of Contents
Expand Down Expand Up @@ -55,6 +57,8 @@ This API will likely only be permitted to fisrt-party apps and **MUST** only be

The value of this **MUST** be unique within a distributor.

This API requires `use` access to the `xrn:firebolt:capability:device:identification` capability.

**NOTE**: we probably need a registry of Firebolt distributors to avoid collisions.

### 3.2. Anonymized Device Identifier
Expand Down
109 changes: 109 additions & 0 deletions requirements/specifications/device/syndication-ontology.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# Syndication SDK

Document Status: Working Draft

See [Firebolt Requirements Governance](../../governance.md) for more info.

| Contributor | Organization |
| --------------- | -------------- |
| Jeremy LaCivita | Comcast |
| Peter Yu | Comcast |

## 1. Overview
This document outlines the requirements for ontological, intrinsic, and product-related device indentification APIs.

**TODO**: add capabilities to all APIs

The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in [BCP 14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

## 2. Table of Contents
- [1. Overview](#1-overview)
- [2. Table of Contents](#2-table-of-contents)
- [3. Ontology](#3-ontology)
- [3.1. OS Class](#31-os-class)
- [3.2. Leased](#32-leased)
- [3.3. Experience](#33-experience)
- [3.4. Account Type](#34-account-type)
- [3.5. Account Sub Type](#35-account-sub-type)
- [3.6. Programmer](#36-programmer)
- [3.7. Retailer](#37-retailer)

## 3. Ontology
The Syndication Extension SDK **MUST** expose an `Ontology` module to contain the APIs outlined below.

### 3.1. OS Class
The `Ontology` module of the Syndication Extension SDK **MUST** have a string `osClass` property that returns what software and bootstrap configuration needs to be loaded on the device for a given operator.

This property **MUST** be readable by any app with `use` access to the `xrn:firebolt:capability:syndication:ontology` capability.

This property **MUST** be read/write and have a setter available to any app with `manage` access to the `xrn:firebolt:capability:syndication:ontology` capability.

The value **SHOULD** be set during device activation by a 1st party setup experience.

Examples values:

- `entos-rdk-residential`
- `entos-rdk-commercial`
- `skyq-rdk`
- `xre-rdk`
- `flex-rdk`

### 3.2. Leased
The `Ontology` module of the Syndication Extension SDK **MUST** have a boolean `leased` property that returns whether or not the device is leased by the customer (true) or owned (false).

This property **MUST** be readable by any app with `use` access to the `xrn:firebolt:capability:syndication:ontology` capability.

This property **MUST** be read/write and have a setter available to any app with `manage` access to the `xrn:firebolt:capability:syndication:ontology` capability.

The value **SHOULD** be set during device activation by a 1st party setup experience.

### 3.3. Experience
The `Ontology` module of the Syndication Extension SDK **MUST** have a string `experienceAppId` property that returns the appId of the primary aggregated experience app, aka "launcher", aka EPG, installed on this device.

This property **MUST** be readable by any app with `use` access to the `xrn:firebolt:capability:syndication:ontology` capability.

This property **MUST** be read/write and have a setter available to any app with `manage` access to the `xrn:firebolt:capability:syndication:ontology` capability.

The value **SHOULD** be set during device activation by a 1st party setup experience.

**TODO**: is app id okay here? what if a Firebolt app is using this API and is running on a different distribution platform w/ different app ids?

### 3.4. Account Type
The `Ontology` module of the Syndication Extension SDK **MUST** have a string `accountType` property that returns the type of account that is active on this device, e.g. `"residential"` or `"business"`.

This property **MUST** be read only by any app with `use` access to the `xrn:firebolt:capability:syndication:ontology` capability.

The value of this property **MUST** be configurable as a pass-through provider and may be provided by an App, a middleware component, or a cloud REST API.

See [Cloud Pass-through Providers](#) for more info.

### 3.5. Account Sub Type
The `Ontology` module of the Syndication Extension SDK **MUST** have a string `accountSubType` property that returns the type of account that is active on this device, e.g. `"hospitality"` or `"university"`.

This property **MUST** be read only by any app with `use` access to the `xrn:firebolt:capability:syndication:ontology` capability.

The value of this property **MUST** be configurable as a pass-through provider and may be provided by an App, a middleware component, or a cloud REST API.

See [Cloud Pass-through Providers](#) for more info.

### 3.6. Programmer
The `Ontology` module of the Syndication Extension SDK **MUST** have a string `programmerId` property that returns the ID of the partner that is providing programming to the primary aggregated experience.

This property **MUST** be readable by any app with `use` access to the `xrn:firebolt:capability:syndication:ontology` capability.

This property **MUST** be read/write and have a setter available to any app with `manage` access to the `xrn:firebolt:capability:syndication:ontology` capability.

The value **SHOULD** be set during device activation by a 1st party setup experience.

**TODO**: What is the scope of these ids?

### 3.7. Retailer
The `Ontology` module of the Syndication Extension SDK **MUST** have a string `retailerId` property that returns the ID of the partner that initially retailed the device.

This property **MUST** be readable by any app with `use` access to the `xrn:firebolt:capability:syndication:ontology` capability.

This property **MUST** be read/write and have a setter available to any app with `manage` access to the `xrn:firebolt:capability:syndication:ontology` capability.

The value **SHOULD** be set during device activation by a 1st party setup experience.

**TODO**: What is the scope of these ids?

0 comments on commit 4d322ea

Please sign in to comment.