A source represents a source of data from a service. For example, an iCloud account is a source of the iCloud service.
Sources can have child sources, such as a rirelay.instance source having multiple rirelay.source sources which can be targeted individually.
Attributes
| name | type | description |
|---|---|---|
id | source ID | Resource identifier. |
resource | string, always source | Resource type specifier. |
user | user ID | The user associated with this source. |
type | string | The type of this source, for example icloud.account. |
identifier | string | A unique identifier for the source within the scope of its service. |
parent | optional, source ID | Populated if the source is a child of another. |
children | list object containing source resources | Contains any sub-sources of the source. |
state | string | One of: unvalidated, active, deactivated, blocked, locked. |
date_created | datetime | When the resource was created. |
Types
Currently supported types include:
icloud.account, the primary source on the iCloud service.rirelay.instance, the primary source on the rirelay service. Corresponds to an instance of the Reincubate Relay application.rirelay.source, a child source ofrirelay.instance. Corresponds to a device that the parent Reincubate Relay app has access to.
Identifier
The value of a source's identifier attribute identifies it uniquely within its service. For an iCloud account this would be the username. For a Reincubate Relay app instance it would be the instance ID.
Parent
If the source is a child source this field will point to its parent source object. The top source in this hierarchy is referred to as the primary source.
A child source cannot be created directly via the API, but are automatically created by the API when the appropriate poll is created.
States
unvalidated
: a session has never been successfully created against this source, therefore the API cannot tell if it is a valid source.
active
: the source has been validated and is ready for use.
deactivated
: access to the source has been forbidden by the owning organisation.
blocked
: access to the source has been forbidden by an API admin.
locked
: access to the source has been temporarily restricted by the external service.
Retrieve GET /sources/{source ID}
Using cURL
curl https://ricloud-api.reincubate.com/sources/<source ID> \
-H 'Authorization: Token <your key_token>'
Using ricloud-py
import ricloud
source = ricloud.Source.create(<source ID>)
Sample response
{
"id": 1,
"resource": "source",
"user": 1,
"type": "mocks.mock",
"identifier": "john.appleseed@reincubate.com",
"info": null,
"parent": null,
"children": {
"data": [],
"has_more": false,
"total_count": 0,
"url": "/sources/1/children"
},
"state": "active",
"date_created": "2020-02-20T11:59:03.195527Z"
}
List GET /sources
| name | type | description |
|---|---|---|
organisation | super, organisation ID | For API admins to filter by organisation. |
user | user ID | Filter by associated user. |
type | string | Filter by source type. |
identifier | string | Filter by source identifier. |
state | string | Filter by source state. |
date_created | datetime filter | Filter by resource creation date. |
Using cURL
curl https://ricloud-api.reincubate.com/sources \
-H 'Authorization: Token <your key_token>'
Using ricloud-py
import ricloud
sources = ricloud.Source.list()
Update POST /sources/{source ID}
| name | type | description |
|---|---|---|
state | string | Update the source state. |
Using cURL
curl https://ricloud-api.reincubate.com/sources/<source ID> \
-X POST \
-H 'Authorization: Token <your key_token>' \
-H 'Content-Type: application/json' \
-d '{
"state": "deactivated"
}'
Using ricloud-py
import ricloud
source = ricloud.Source.update_with_id(<source ID>, state='deactivated')
# OR
source = ricloud.Source.retrieve(<source ID>)
source.update(state='deactivated')
Changelog
2020-02-20
- Major The
childrenattribute of the source object is now a nested list object, rather than a simple list attribute.
2019-10-16
- Adds two new source types:
rirelay.instanceandrirelay.source.
