This is the documentation for Reincubate's ricloud API. The API provides users access to their own data in Apple's iCloud and local iTunes backups via the Reincubate Relay app.
For product information see the ricloud API product page.
The API is organised into a set of resources. A client can create, retrieve, update and destroy (CRUD) these to configure, trigger, and monitor operations on the API. See the API resource reference for more details.
The API relies on asynchronous operations for setting up sessions against third-party services and data processing. This gives it the ability to manage a large amount of data demand while interacting with external services responsibly. It also affords extra flexibility to react to fluctuations in response times or degradation in services from third parties.
Storage bucket publishing
Data requested from the API is published directly into a client's bucket on either Google Cloud Storage or Amazon S3. This helps to minimise issues related to scaling data delivery, and also enables faster data retrieval as publishing is less likely to become a bottleneck.
Notification of asynchronous operation completion is handled via webhooks, whereby events are sent to a client's server through standard HTTP requests. These events contain information on where to find requested data within a client's bucket, allowing the client to make a decision on when and how to use it.
Before plunging into the getting started section, it is helpful to be familiar with a handful of terms and concepts that will be used throughout.
A service describes a collection of data sources available through the API. This includes third-party services, such as iCloud, or Reincubate products, such as asrelay.
Different services will have varying requirements for certain resources on the API, as well as alter the overall lifecycle of API objects. For example, the payload needed to create a session for the iCloud service differs from that needed on the asrelay service.
These are specific sources of data within a service. An iCloud account is the primary source of the iCloud service, whereas a Reincubate Relay app instance is the primary source of the Reincubate Relay service.
A user represents the end-user that is requesting data. In many cases, this will be a user of your application.
A session represents access to a specific source, and one is needed in order to retrieve any information or data from the source through the API.
Creating a session is the equivalent of a 'login' into an iCloud account or 'pairing' with a Reincubate Relay app instance.
The API will execute the session initialisation process asynchronously. This means the call to create a session will return immediately, but the session will not be ready to use until initialisation has completed.
Polls are how users can request data through the API. An active session against the targeted source is needed for a poll to be created.
All polls are processed asynchronously via one or more tasks, and results are published to cloud storage buckets configured on your organisation.
These are the underlying chunks of work performed by the API. When a session is created, it also creates a task in order to perform any initialisation against external services. When a poll is created, it will create at least one task to perform any necessary work.
A result is a reference to data or a file published to a client's storage bucket.