Overview
This is the REST API documentation for the Breezie platform. This document describes the details for invoking the Breezie REST API and what you can expect as return values.
|
This is a Beta release of the Breezie platform API, changes may be applied without prior announcement. |
|
All endpoint references throughout this document are based on our US server (https://api.breezie.com). The base URL changes for projects based on EU (https://api-uk.breezie.com) and Australia (https://api-au.breezie.com). |
|
This document assumes a basic knowledge about REST APIs. |
Authentication
The Breezie API use the OAuth 2.0 protocol as an authentication and authorization mechanism.
Although the Breezie API supports all the grant types defined in the OAuth 2.0 protocol, this document will be focused
on the authorization code grant type that is recommended on most occasions. For more details of this and other
grant types please see the standard documentation.
Definitions
For a better understanding of the authentication process, basic concepts are defined here:
- User
-
This is a person that has an account on the Breezie platform. A User can be an Admin User or a Final User (known as a 'Breezie User'). Users are authenticated in the Breezie platform with the combination of a username and a password.
- Client
-
This is an application that requires access to one or multiple Users' data to perform an action. Clients require a
Client IDand aSecretto be authenticated in the Breezie platform. - Breezie Authorization Service
-
The Authorization server is a centralized service that provides authentication to Users and Clients. Through the Authorization Service a Client can obtain the authorization of a User to access his/her Breezie information without having to share any credentials between them. There are two end points that will be used during the authentication process:
- Authorization URI
-
https://auth.breezie.com/uaa/oauth/authorize
Used to authenticate theUser - Token URI
-
https://auth.breezie.com/uaa/oauth/token
Used to get the tokens
| As well as the Breezie API URI, the Breezie Authorization Service URI changes depending on the Breezie region. This document refers to the US URI, please check the URI of the region you want to access. |
- Authorization code
-
This is a character sequence that identifies the request of a specific User to grant authorization to a Client for accessing his/her Breezie data.
- Refresh token
-
This is a character sequence that grants authorization of a Client to generate access tokens for a specific User.
- Access token
-
This is a character sequence that grants authorization to access the Breezie data of a specific User.
The Authentication Process
The following process details the authorization code grant type of the OAuth 2.0 standard. It defines how a Client
can authenticate a HTTP request to access the data of a Breezie platform User without sharing credentials
between them.
Although the authorization code grant type covers the most common use cases, the Breezie platform supports all the OAuth 2.0 grant types.
|
During this process the following situations are supposed:
1. The Client requests authorization
The Client initiates the flow redirecting the User browser to the authorization endpoint of the Breezie
Authorization Service. The 'Client' constructs the request URI by adding the following parameters to the query
component of the authorization endpoint URI using the application/x-www-form-urlencoded format:
response_type-
Value must be set to
code. This field is required.
Please note that, although this case is considering the authorization code grant type exclusively, all the rest of
the OAuth 2.0 grant types are supported by the Breezie platform.
|
client_id-
The client identifier provided by the
Breezie Authorization Serverwhen the client was registered. This field is required. redirect_uri-
URI which the authorization server will send the
Userbrowser back once access is granted or denied. state-
An opaque value used by the Client to maintain a state between the request and callback. The authorization server includes this value when redirecting the user-agent back to the Client. The use of this field is optional but recommended.
GET /uaa/oauth/authorize?response_type=code&client_id=client-id&state=abc&
redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcallback HTTP/1.1
Host: auth.breezie.com
The Breezie Authorization Server responds to this request with a HTTP 302 Redirect that brings the User’s browser to the Breezie Authorization Server authentication page.
2. Authenticating the User
The Breezie Authorization Service authenticates the User via username and password and establishes whether the User grants or denies the Client’s access request.
| When using the Breezie tablet device, the User can be authenticated automatically. |
Once the User is authenticated, the Breezie Authorization Server requires the User to confirm the consent for the Client to access to the information saved in the Breezie platform.
| The confirmation step could be removed if a specific use case requires it. |
3. Getting the Authorization code
Assuming the User grants access, the Breezie Authorization Service redirects the browser back to the Client
using the redirection URI provided in the first step. The redirection URI includes the authorization code and the same
state previously provided by the Client in the first step.
Once the User grants access, the Breezie Authorization Service redirects the browser back to the Client
using the redirection URI provided in the first step. The redirection URI includes the following properties:
- code
-
The authorization code generated by the Authorization Server.
- state
-
The exact value received from the
Clientin the first step if the "state" parameter was present. Otherwise, this parameter is omitted.
HTTP/1.1 302 Found
Location: https://client.example.com/callback?code=xxxx&state=abc
4. Getting the token
Once the browser has been redirected, the client has the authorization code that will be used to obtain the access token. The client makes a POST request to the token endpoint by sending the following parameters using the "application/x-www-form-urlencoded" format request entity-body:
- grant_type
-
Must be set to "authorization code".
Please note, although this case considers the authorization code grant type exclusively,
the other OAuth 2.0 grant types are supported by the Breezie platform.
|
- code
-
The authorization code received from the Authorization Server.
- redirect_uri
-
Same value included in the first step authorization request. Values must be identical.
Additionally, the request has to be authenticated using HTTP Basic
Authentication, adding an Authorization header following the next steps:
-
Constructs a string by concatenating the
Client Id, a single colon:character, and theClient Secret. -
Encodes the resulting string into an octet sequence using
UTF-8. -
The resulting string is encoded using Base64.
-
The authorization method and a space ("Basic ") is then prepended to the encoded string.
For example, if the Client Id is Aladdin and the Client Secret is OpenSesame, then the field’s value is the
base64-encoding of Aladdin:OpenSesame, or QWxhZGRpbjpPcGVuU2VzYW1l. Then the Authorization header will appear as:
Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l
$ curl -X POST -H "Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l" -d "grant_type=authorization_code&code=xxxx&redirect_uri=https%3A%2F%2Fclient.example.com%2Fcallback" https://auth.breezie.com/uaa/oauth/token
{
"access_token": "abcdabcdabcdabcdabcd",
"token_type": "bearer",
"refresh_token": "efghefghefghefghefgh",
"expires_in": 1799,
}
5. Accessing the data
Once the Client has an access token, it can authenticate a request to any Breezie API endpoint attaching the token in
an 'Authorization' HTTP header.
If xxxx is a sample access token, the Client could access an example resource as follows:
$ curl -H "Authorization: Bearer xxxx" https://api.breezie.com/example
6. Identifying the authenticated User
In the previous step, the Client could obtain access to the Breezie platform resources of the authenticated User. However,
the Client has not identified the authenticated User yet.
The Breezie Authentication Server provides an endpoint that satisfies this specific requirement:
https://auth.breezie.com/uaa/userinfo
This endpoint requires an access token as shown in the previous step and returns basic information of the User that granted the access token.
$ curl -H "Authorization: Bearer xxxx" https://auth.breezie.com/uaa/userinfo
{
"id": "123456778-1234-1234-1234abcd1234abcd1234",
"username": "user_email@bexample.com",
"roles": [
"ROLE_BW",
"ROLE_P"
],
"sponsors": [],
"sponsees": [],
"scope": {
"organizationId": 11111111-1111-1111-111111111111111,
"regionId": null,
"campusId": null,
"facilityId": null,
"userId": null
},
"createdTime": 1488799431921,
"createdBy": "breezie-service",
"lastUpdatedTime": 1489183127012,
"updatedBy": "anonymousUser"
}
7. Refreshing the access token
Because access tokens are typically short-lasting credentials, Clients can be registered on the Breezie Authorization Server and provided with a refresh token as well as the access token.
The refresh token allows the Client to obtain new access tokens as required. For this purpose, the Client can send a request to the token endpoint of the Breezie Authorization Server with the following parameters:
- grant_type
-
Value must be set to "refresh_token".
- refresh_token
-
The refresh token issued to the client in step 4.
Requests to this endpoint have to be authenticated using HTTP Basic Authentication, as previously seen in step 4.
$ curl -X POST -H "Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l" -d "grant_type=refresh_token&refresh_token=efghefghefghefghefgh" https://auth.breezie.com/uaa/oauth/token
{
"access_token": "2abcd2abcd2abcd2abcd2abcd2",
"token_type": "bearer",
"refresh_token": "efghefghefghefghefgh",
"expires_in": 1799,
}
Scope
This represents a hierarchical structure composed of an Organization ID, Region ID, Campus ID, facility ID and User ID
that defines the ambit of a resource. This structure comes from the business model where Users belong to a particular Facility that
is part of a Campus which belongs to a Region that is part of an Organization.
In general, resources have restricted accessibility. Access to a resource is defined by the Scope of the resource that
requires access and the roles and scope of the person who wants to access the resource.
In general, resources have a Scope and based on it, and the nature of the resources, the accessibility will be defined. For example, an app is a resource that belongs to a Region (its scope will specify the Organization and the Region), so all Users that are in this Region will have access to the app.
Roles
| Role | Description |
|---|---|
ROLE_U |
This role represents a Breezie User, the person who owns a Breezie tablet. This person has write rights over his own resources and read permissions on a set of resources based on his scope. |
ROLE_S |
This role represents a |
ROLE_P |
This is a complementary role that add rights on the private information of a User. |
ROLE_FR |
This role represents an administrator with read access in a Facility. |
ROLE_FW |
This role represents an administrator with read and write access in a Facility. |
ROLE_CR |
This role represents an administrator with read access in a Campus. |
ROLE_CW |
This role represents an administrator with read and write access in a Campus. |
ROLE_RR |
This role represents an administrator with read access in a Region. |
ROLE_RW |
This role represents an administrator with read and write access in a Region. |
ROLE_OR |
This role represents an administrator with read access in a Organization. |
ROLE_OW |
This role represents an administrator with read and write access in a Organization. |
ROLE_BR |
This role represents an administrator with read access in the whole system. |
ROLE_BW |
This role represents an administrator with read and write access in the whole system. |
Methods
| Method | Usage |
|---|---|
|
Used to retrieve a resource |
|
Used to create a new resource |
|
Used to update an existing resource, replacing the resource for the one sent |
|
Used to update an existing resource, including partial updates |
|
Used to delete an existing resource |
Response Status
| Status code | Usage |
|---|---|
|
The request completed successfully |
|
A new resource has been created successfully. The resource’s URI is available from the response’s
|
|
An update to an existing resource has been applied successfully |
|
The request was malformed. The response body will include an error providing further information |
|
The request was unauthorised |
|
The request was authorised but forbidden to access that resource |
|
The requested resource did not exist |
|
The request did not validate correctly |
Errors
Whenever an error response 422 (Validation Exception) is returned, the body will contain a JSON object that describes the problem. The error object has the following structure:
| Path | Type | Description |
|---|---|---|
|
|
Unix timestamp the error occurred |
|
|
Unique code of the error that occurred |
|
|
HTTP status code of error |
|
|
Short message describing the error |
|
|
More detailed description of the error |
|
|
The path where the error occurred |
|
|
Java class of the exception that occurred |
|
|
Array of field errors explained why the validation failed |
|
|
The resource of the failed validation |
|
|
The field of the resource that failed |
|
|
The type of validation that failed |
|
|
Descriptive message of failed validation |
For example, a request that attempts to submit an invalid person will produce a
422 Unprocessable Entity response:
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json;charset=UTF-8
Content-Length: 564
{
"timestamp" : 1631702634968,
"code" : 1002,
"status" : 422,
"message" : "Validation Error",
"description" : "Person object could not be fully validated, please see fieldErrors to determine failed fields",
"path" : "unknown/errors",
"exception" : "com.breezie.exception.ValidationException",
"fieldErrors" : [ {
"resource" : "person",
"field" : "age",
"code" : "Range",
"message" : "must be between 1 and 122"
}, {
"resource" : "person",
"field" : "name",
"code" : "NotNull",
"message" : "may not be null"
} ]
}
Whenever an error response (status code >= 400) is returned, the body will contain a JSON object that describes the problem. The error object has the following structure:
| Path | Type | Description |
|---|---|---|
|
|
Unix timestamp the error occurred |
|
|
Unique code of the error that occurred |
|
|
HTTP status code of error |
|
|
Short message describing the error |
|
|
More detailed description of the error |
|
|
The path where the error occurred |
|
|
Java class of the exception that occurred |
For example, a request that attempts to apply a non-existent tag to a note will produce a
400 Bad Request response:
HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 282
{
"timestamp" : 1631702635138,
"code" : 4056,
"status" : 404,
"message" : "Resource not found",
"description" : "A resource with given identifier cannot be found",
"path" : "unknown/errors?errorType=not-found",
"exception" : "com.breezie.exception.NotFoundException"
}
Resources
Users
A User is a representation of anyone who authenticates with the Breezie platform. Listing, creating, updating and deleting are the
operations available from this API.
Structure
| Path | Type | Description |
|---|---|---|
|
|
User identifier |
|
|
Username assositated with the user |
|
|
First name of the user |
|
|
Last name of the user |
|
|
Welcome message to show during user setup process |
|
|
Level of familiarity of the user with internet and related technologies. Allowed values: 1, 2 or 3. 1 = 'Not at all familiar with the internet', 2 = 'A little familiar with the internet', 3 = 'Quite familiar with the internet'. |
|
|
Url of the profile image |
|
|
ID of the organization that the user belongs to |
|
|
ID of the region that the user belongs to |
|
|
ID of the campus that the user belongs to |
|
|
ID of the facility that the user belongs to |
|
|
ID of the user (only for breezie users, other roles won’t have value on this field) |
|
|
ID list of users sponsoring this user |
|
|
Role of the user |
|
|
ID list of users who this user is sponsoring |
Users API
Listing Users
A GET request to /users will list all Users accessible by the User who makes the request.
Only Users with the roles ROLE_BW or ROLE_BR will see sponsors in this list.
Example request
$ curl 'https://api.breezie.com/users' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
ETag: "0b849648390cb736754653a641c6c0f06"
Content-Length: 2372
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
[ {
"id" : "3c3d3ce7-3d79-4611-8fb2-6bb66149be11",
"username" : "sarah.francis@email.com",
"firstName" : "Sarah",
"lastName" : "Francis",
"profileImageUri" : null,
"scope" : {
"organizationId" : null,
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
},
"familiarity" : null,
"welcomeNote" : null,
"roles" : [ "ROLE_BW" ],
"sponsors" : [ ],
"sponsees" : [ ]
}, {
"id" : "4809459f-3d27-46fd-8a59-b6b8204d2838",
"username" : "bobjones@email.com",
"firstName" : "Bob",
"lastName" : "Jones",
"profileImageUri" : "https://api-dev.breezie.com/pictures/c9897964-fb64-45ee-876a-128dbaf4c18b/file",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "4809459f-3d27-46fd-8a59-b6b8204d2838"
},
"familiarity" : 1,
"welcomeNote" : "Welcome to Breezie.",
"roles" : [ "ROLE_U" ],
"sponsors" : [ "02841ef2-5037-4879-a1b8-0e042bcf22b9" ],
"sponsees" : [ ]
}, {
"id" : "dft54er4-8709-9iyt-ht5r67ytg4df",
"username" : "janeparker@email.com",
"firstName" : "Jane",
"lastName" : "Parker",
"profileImageUri" : "https://api-dev.breezie.com/pictures/gt89365-fb64-876a-45ee-rhdy363926hd/file",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "dft54er4-8709-9iyt-ht5r67ytg4df"
},
"familiarity" : 2,
"welcomeNote" : "Welcome to Breezie.",
"roles" : [ "ROLE_U" ],
"sponsors" : [ ],
"sponsees" : [ ]
}, {
"id" : "02841ef2-5037-4879-a1b8-0e042bcf22b9",
"username" : "alicia.smith@email.com",
"firstName" : "Alicia",
"lastName" : "Smith",
"profileImageUri" : "https://api-dev.breezie.com/pictures/rt534625-gfts-876a-oi8u-134rf4eds233/file",
"scope" : {
"organizationId" : null,
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
},
"familiarity" : 1,
"welcomeNote" : "Welcome to Breezie.",
"roles" : [ "ROLE_S" ],
"sponsors" : [ ],
"sponsees" : [ "4809459f-3d27-46fd-8a59-b6b8204d2838" ]
} ]
Listing Users in an Organization
A GET request to /users/search/findByOrganizationId?id=[organization-id] will list all of the Users
in the Organization specified that are accessible by the User who make the request. Sponsors are not listed.
Example request
$ curl 'https://api.breezie.com/users/search/findByOrganizationId?id=48865325-ddb0-4dc5-ac55-d7729794b8ec' -i -H 'Authorization: Bearer: 00a8bc434df00b000d4f1a2b6745eef3fb35bfa'
Listing Users in a Region
A GET request to /users/search/findByRegionId?id=[region-id] will list all of the Users in the Region specified
that are accessible by the User who make the request. Sponsors are not listed.
Example request
$ curl 'https://api.breezie.com/users/search/findByRegionId?id=e9f7a654-7135-4b10-afa3-c3a97319c823' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Listing Users in a Campus
A GET request to /users/search/findByCampusId?id=[campus-id] will list all of the Users in the Campus specified
that are accessible by the User who make the request. Sponsors are not listed.
Example request
$ curl 'https://api.breezie.com/users/search/findByCampusId?id=7ccae739-0817-46ef-b39c-4c695a6ec835' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Listing Users in a Facility
A GET request to /users/search/findByFacilityId?id=[facility-id] will list all of the Users in the Facility
specified that are accessible by the User who make the request. Sponsors are not listed.
Example request
$ curl 'https://api.breezie.com/users/search/findByFacilityId?id=9105e5a5-acba-4c00-8f5d-5b8fccd80da0' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Retrieve a User
A GET request to /users/{id} will retrieve the User identified by id
Example request
$ curl 'https://api.breezie.com/users/4809459f-3d27-46fd-8a59-b6b8204d2838' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
ETag: "0664954dc476f6a7d9d906a4ab3876c80"
Content-Length: 715
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"id" : "4809459f-3d27-46fd-8a59-b6b8204d2838",
"username" : "bobjones@email.com",
"firstName" : "Bob",
"lastName" : "Jones",
"profileImageUri" : "https://api-dev.breezie.com/pictures/c9897964-fb64-45ee-876a-128dbaf4c18b/file",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "4809459f-3d27-46fd-8a59-b6b8204d2838"
},
"familiarity" : 1,
"welcomeNote" : "Welcome to Breezie.",
"roles" : [ "ROLE_U" ],
"sponsors" : [ "351ef1ef-1d3a-4ac1-8137-12f91accc905" ],
"sponsees" : [ ]
}
Retrieve a User By Username
A GET request to /users/search/findByUsername?username={username} will retrieve the User identified by username
Example request
$ curl 'https://api.breezie.com/users/search/findByUsername?username=bobjones@email.com' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Create a User
A POST request to /users will save a new User and return the created representation.
Request structure
| Path | Type | Description |
|---|---|---|
|
|
Username associated with the user (cannot be changed) |
|
|
Password used for login purposes |
|
|
First name of the user |
|
|
Last name of the user |
|
|
Welcome message to show during user setup process |
|
|
Level of familiarity of the user with internet and related technologies. Allowed values: 1, 2 or 3. 1 = 'Not at all familiar with the internet', 2 = 'A little familiar with the internet', 3 = 'Quite familiar with the internet'. |
|
|
ID of the organization that the user belongs to |
|
|
ID of the region that the user belongs to |
|
|
ID of the campus that the user belongs to |
|
|
ID of the facility that the user belongs to |
|
|
Role of the user |
|
|
ID list of users sponsoring this user |
|
|
ID list of users who this user is sponsoring |
Example request
$ curl 'https://api.breezie.com/users/' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"username" : "steve.jones@email.com",
"password" : "qhfr456ghijhw",
"firstName" : "Steve",
"lastName" : "Jones",
"welcomeNote" : "Welcome to Breezie.",
"familiarity" : 2,
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0"
},
"roles" : [ "ROLE_U" ],
"sponsors" : [ ],
"sponsees" : [ ]
}'
Example response
HTTP/1.1 201 Created
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
Content-Length: 605
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"id" : "6v9105e5-acfccd80ba-8f5d-5b8da0-4c00",
"username" : "steve.jones@email.com",
"firstName" : "Steve",
"lastName" : "Jones",
"profileImageUri" : null,
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "6v9105e5-acfccd80ba-8f5d-5b8da0-4c00"
},
"familiarity" : 2,
"welcomeNote" : "Welcome to Breezie.",
"roles" : [ "ROLE_U" ],
"sponsors" : [ ],
"sponsees" : [ ]
}
Replace a User
A PUT request to /users/{id} is used to update a User completely.
Example request
$ curl 'https://api.breezie.com/users/4809459f-3d27-46fd-8a59-b6b8204d2838' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"username" : "bobjones@email.com",
"password" : null,
"firstName" : "Bob",
"lastName" : "Jones",
"welcomeNote" : "Welcome to Breezie.",
"familiarity" : 3,
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0"
},
"roles" : [ "ROLE_U" ],
"sponsors" : [ ],
"sponsees" : [ ]
}'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
Content-Length: 600
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"id" : "4809459f-3d27-46fd-8a59-b6b8204d2838",
"username" : "bobjones@email.com",
"firstName" : "Bob",
"lastName" : "Jones",
"profileImageUri" : null,
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "4809459f-3d27-46fd-8a59-b6b8204d2838"
},
"familiarity" : 3,
"welcomeNote" : "Welcome to Breezie.",
"roles" : [ "ROLE_U" ],
"sponsors" : [ ],
"sponsees" : [ ]
}
Update a User
A PATCH request to /users/{id} is used to update a User partially.
Example request
$ curl 'https://api.breezie.com/users/4809459f-3d27-46fd-8a59-b6b8204d2838' -i -X PATCH -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"firstName" : "Ryan"
}'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
Content-Length: 606
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"id" : "4809459f-3d27-46fd-8a59-b6b8204d2838",
"username" : "bobjones@email.com",
"firstName" : "Ryan",
"lastName" : "Jones",
"profileImageUri" : null,
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : null
},
"familiarity" : 1,
"welcomeNote" : "Welcome to Breezie.",
"roles" : [ "ROLE_U" ],
"sponsors" : [ "ddea6728-8cd2-449d-9e5f-092200043f25" ],
"sponsees" : [ ]
}
Delete a User
A DELETE request is used to delete a User.
Example request
$ curl 'https://api.breezie.com/users/4809459f-3d27-46fd-8a59-b6b8204d2838' -i -X DELETE -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Application-Context: application:test:-1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Create User Image Object
A POST request to users/{id}/picture is used to generate an image representation that allows you to upload an image file for the specified User.
To complete the image upload, a POST request with the image file to the URL returned in this request is required.
Example request
$ curl 'https://api.breezie.com/users/4809459f-3d27-46fd-8a59-b6b8204d2838/picture' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 201 Created
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
Content-Length: 503
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"keyname" : "hfd74-j4jdgvft79-gjsh9grd-dadhg4fa",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "4809459f-3d27-46fd-8a59-b6b8204d2838"
},
"extension" : "png",
"visibility" : "restricted",
"url" : "https://api.breezie.com/pictures/hfd74-j4jdgvft79-gjsh9grd-dadhg4fa/file"
}
Listing sponsors
A GET request to /users/{id}/sponsors will retrieve the list of Users that are Partners of the User identified by id.
Example request
$ curl 'https://api.breezie.com/users/4809459f-3d27-46fd-8a59-b6b8204d2838/sponsors' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
ETag: "026812e3b7522b7a902d2132f76fa8d83"
Content-Length: 556
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
[ {
"id" : "492734ec-7409-4614-8368-65310f7236b0",
"username" : "alicia.smith@email.com",
"firstName" : "Alicia",
"lastName" : "Smith",
"profileImageUri" : "https://api-dev.breezie.com/pictures/rt534625-gfts-876a-oi8u-134rf4eds233/file",
"scope" : {
"organizationId" : null,
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
},
"familiarity" : 1,
"welcomeNote" : "Welcome to Breezie.",
"roles" : [ "ROLE_S" ],
"sponsors" : [ ],
"sponsees" : [ "4809459f-3d27-46fd-8a59-b6b8204d2838" ]
} ]
Settings
Settings is a representation of a set of properties that defines the Device behaviour.
The set of properties that can be set on a Device are defined in a schema that can be found on
https://api.breezie.com/devices/schema.json. This json document describes all the properties available and the
restrictions.
|
Settings can be defined at different levels: breezie level, organization level
and user level. Properties defined at Breezie level can be overwritten at Organization and User level and properties
set at Organization level can be overwritten at User level.
|
The Settings applied to a device is the combination of Breezie Settings, Organizations Settings
and User Settings. In the event that the same property is defined at different levels, the User level
has the highest priority and Breezie level the lowest.
|
Retrieve Settings for a User
A GET request to /users/{id}/settings will return the set of properties set at User level.
Example request
$ curl 'https://api.breezie.com/users/067e6162-3b6f-4ae2-a171-2470b63dff00/settings' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'version: 1.0'
Example response
HTTP/1.1 200 OK
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 370
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"volume" : 50,
"allowAppsUninstall" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"screenBrightness" : 7,
"allowMicrophone" : true,
"schemaUri" : "/schemas/actual_schema_breezie",
"enableCamera" : true,
"screenTimeout" : 60,
"userId" : "067e6162-3b6f-4ae2-a171-2470b63dff00",
"version" : "1.0"
}
Replace Settings for a User
A PUT request to /users/{id}/settings will update the set of properties set at User level.
Example request
$ curl 'https://api.breezie.com/users/067e6162-3b6f-4ae2-a171-2470b63dff00/settings' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'version: 1.0' -H 'Content-Type: application/json' -d '{
"allowMicrophone" : true,
"enableCamera" : true,
"screenTimeout" : 60,
"volume" : 50,
"screenBrightness" : 7,
"allowAppsUninstall" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ]
}'
Example response
HTTP/1.1 201 Created
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 370
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"allowMicrophone" : true,
"enableCamera" : true,
"screenTimeout" : 60,
"volume" : 50,
"screenBrightness" : 7,
"allowAppsUninstall" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"userId" : "067e6162-3b6f-4ae2-a171-2470b63dff00",
"version" : "1.0",
"schemaUri" : "/schemas/actual_schema_breezie"
}
Sensitive Information
Sensitive represents protected information of the User. Access to this resource is restricted.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Telephone number of the user |
|
|
Social security number of the user |
|
|
Date of birth of the user |
|
|
Gender of the user |
|
|
Religion that the user practices |
Sensitive API
Retrieve Sensitive Information
A GET request to /users/{id}/sensitive will return the private information of the User.
This information is exclusively accessible by the owner or Partners of the owner.
Example request
$ curl 'https://api.breezie.com/users/4809459f-3d27-46fd-8a59-b6b8204d2838/sensitive' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
ETag: "0bad90a36ad9de7556f967eab89a0fd0c"
Content-Length: 139
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"phoneNumber" : "07411223333",
"socialSecurity" : "000AAA",
"dob" : -663552000000,
"gender" : "Male",
"religion" : "agnostic"
}
Create Sensitive Information
A POST request to /users/{id}/sensitive will save the private information of the User. This information is exclusively writable by the owner or Partners of the owner.
Example request
$ curl 'https://api.breezie.com/users/dft54er4-8709-9iyt-ht5r67ytg4df/sensitive' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"phoneNumber" : "07411223333",
"socialSecurity" : "000AAA",
"dob" : -663552000000,
"gender" : "Male",
"religion" : "agnostic"
}'
Example response
HTTP/1.1 201 Created
X-Application-Context: application:test:-1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Replace Sensitive Information
A PUT request to /users/{id}/sensitive will update the private information of the User completely. This information is exclusively upgradeable by the owner or partners of the owner.
Example request
$ curl 'https://api.breezie.com/users/4809459f-3d27-46fd-8a59-b6b8204d2838/sensitive' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"phoneNumber" : "07411223333",
"socialSecurity" : "000AAA",
"dob" : -663552000000,
"gender" : "Male",
"religion" : "agnostic"
}'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Update Sensitive Information
A PATCH request to /users/{id}/sensitive will save the private information of the User partially. This information is exclusively upgradeable by the owner or Partners of the owner.
Example request
$ curl 'https://api.breezie.com/users/4809459f-3d27-46fd-8a59-b6b8204d2838/sensitive' -i -X PATCH -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"socialSecurity" : "111BBB"
}'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Sponsor Request
A sponsorRequest represents an invitation to someone to become the sponsor of a User.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Sponsor request identifier |
|
|
Id of the user who wants to be sponsorized |
|
|
Email of the person who receives the request |
|
|
First name of the person who receives the request |
|
|
Last name of the person who receives the request |
|
|
Message that will be received by the person who received the request |
|
|
Url where the person who receives the request will be redirect to complete the process |
Sponsor Requests API
Listing Sponsor Requests
A GET request to /sponsorRequests/search/findByUserId?id=[userId] will list all sponsor requests made on behalf of the User identified by userId. Any User with read access to the specified User can make this request.
Example request
$ curl 'https://api.breezie.com/sponsorRequests/search/findByUserId?id=4809459f-3d27-46fd-8a59-b6b8204d2838' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
ETag: "02e2f901295ec2cd615d8776e4331e8c6"
Content-Length: 304
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
[ {
"id" : "e41f610f-3382-4368-88de-67a3b2ea586c",
"userId" : "4809459f-3d27-46fd-8a59-b6b8204d2838",
"email" : "mike.owen@email.com",
"firstName" : "Mike",
"lastName" : "Owen",
"message" : "Hi Mike, Would you mind to help me with Breezie?",
"redirectUri" : "https://manage.breezie.com"
} ]
Create Sponsor Request
A POST request to /sponsorRequests will create a sponsor request for the User specified in the body. Any User with write access to the specified User can make this request.
Example request
$ curl 'https://api.breezie.com/sponsorRequests/' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"userId" : "4809459f-3d27-46fd-8a59-b6b8204d2838",
"email" : "mike.owen@email.com",
"firstName" : "Mike",
"lastName" : "Owen",
"message" : "Hi Mike, Would you mind to help me with Breezie?",
"redirectUri" : "https://manage.breezie.com"
}'
Example response
HTTP/1.1 201 Created
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
Content-Length: 300
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"id" : "99b13bd5-72fe-4dc8-b9a0-4b25cc90210c",
"userId" : "4809459f-3d27-46fd-8a59-b6b8204d2838",
"email" : "mike.owen@email.com",
"firstName" : "Mike",
"lastName" : "Owen",
"message" : "Hi Mike, Would you mind to help me with Breezie?",
"redirectUri" : "https://manage.breezie.com"
}
Update Sponsor Request
A PATCH request to /sponsorRequests/{id} will update a sponsor request identified by id. Any User with write access to the specified User can make this request.
Example request
$ curl 'https://api.breezie.com/sponsorRequests/c70f354c-483f-45d0-8970-0a33ac2e12ab' -i -X PATCH -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"firstName" : "Michael"
}'
Example response
HTTP/1.1 200 OK
X-Application-Context: application:test:-1
Content-Type: application/json;charset=UTF-8
Content-Length: 279
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"id" : "c70f354c-483f-45d0-8970-0a33ac2e12ab",
"userId" : "4809459f-3d27-46fd-8a59-b6b8204d2838",
"email" : "mike.owen@email.com",
"firstName" : "Michael",
"lastName" : "Owen",
"message" : "Hi Mike, Would you mind to help me with Breezie?",
"redirectUri" : null
}
Organizations
An organization is a representation of an institution where other resources of the system like users, devices,
contents… will be allocated. This resource is the top of an pyramidal structure called scope composed by
facilities, campuses, regions and organizations.
Structure
| Path | Type | Description |
|---|---|---|
|
|
The organization id |
|
|
The name of the organization |
|
|
The country the organization is located in |
|
|
The first line of the organization address |
|
|
The second line of the organization address |
|
|
The organization zip code |
|
|
Flag indicating if the organization is a demo one or not |
|
|
The one who created the organization |
|
|
The time (Unix timestamp) the organization was created |
|
|
The time (Unix timestamp) the organization was updated |
|
|
The one who updated the organization |
Organizations API
Listing organizations
A GET request to /organizations will retrieve all organizations accessible by the user who made the request.
Example request
$ curl 'https://api.breezie.com/organizations' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 1341
[ {
"name" : "Kaufland",
"country" : "Germany",
"addressLine1" : "Auckan Street 7",
"addressLine2" : "Floor 3",
"zipCode" : "9AS 7U1",
"demo" : true,
"disabled" : false,
"customTC" : false,
"checkInActive" : false,
"themeId" : null,
"logoUrl" : null,
"scopeLevelsAvailable" : null,
"organizationLevelReference" : null,
"regionLevelReference" : null,
"campusLevelReference" : null,
"facilityLevelReference" : null,
"vitalCare" : false,
"id" : "1cd4264a-e0cc-48d0-80d8-51d10569f140",
"createdTime" : 1621357899628,
"lastUpdatedTime" : 1621357899628,
"createdBy" : "user",
"updatedBy" : "user",
"validCredentials" : true
}, {
"name" : "Pearson",
"country" : "New Zeland",
"addressLine1" : "Clarance Lane 34",
"addressLine2" : "Apartment 12",
"zipCode" : "W1Q YU7",
"demo" : true,
"disabled" : false,
"customTC" : false,
"checkInActive" : false,
"themeId" : null,
"logoUrl" : null,
"scopeLevelsAvailable" : null,
"organizationLevelReference" : null,
"regionLevelReference" : null,
"campusLevelReference" : null,
"facilityLevelReference" : null,
"vitalCare" : false,
"id" : "178c7750-407d-489e-887e-e21d3564e58a",
"createdTime" : 1621357899627,
"lastUpdatedTime" : 1621357899627,
"createdBy" : "user",
"updatedBy" : "user",
"validCredentials" : false
} ]
Retrieve an organization
A GET request to /organizations/{id} will retrieve all metadata about a specific organization.
Example request
$ curl 'https://api.breezie.com/organizations/c78de1cb-de64-4ef3-be0a-8d4b2cee16fe' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 672
{
"name" : "Pearson",
"country" : "New Zeland",
"addressLine1" : "Clarance Lane 34",
"addressLine2" : "Apartment 12",
"zipCode" : "W1Q YU7",
"demo" : true,
"disabled" : false,
"customTC" : false,
"checkInActive" : false,
"themeId" : null,
"logoUrl" : null,
"scopeLevelsAvailable" : null,
"organizationLevelReference" : null,
"regionLevelReference" : null,
"campusLevelReference" : null,
"facilityLevelReference" : null,
"vitalCare" : false,
"id" : "c78de1cb-de64-4ef3-be0a-8d4b2cee16fe",
"createdTime" : 1621357899343,
"lastUpdatedTime" : 1621357899343,
"createdBy" : "user",
"updatedBy" : "user",
"validCredentials" : false
}
Replace an organization
A PUT request to /organizations/{id} will do a complete replace of the resource.
Example request
$ curl 'https://api.breezie.com/organizations/9a268497-beda-43a6-aedb-0a591ee447a3' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Steam Engine",
"country" : "UK",
"addressLine1" : "41 Crosser Street",
"addressLine2" : "Nr 10",
"zipCode" : "SE17BU",
"demo" : true,
"disabled" : true
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 661
{
"name" : "Steam Engine",
"country" : "UK",
"addressLine1" : "41 Crosser Street",
"addressLine2" : "Nr 10",
"zipCode" : "SE17BU",
"demo" : true,
"disabled" : true,
"customTC" : false,
"checkInActive" : false,
"themeId" : null,
"logoUrl" : null,
"scopeLevelsAvailable" : null,
"organizationLevelReference" : null,
"regionLevelReference" : null,
"campusLevelReference" : null,
"facilityLevelReference" : null,
"vitalCare" : false,
"id" : "9a268497-beda-43a6-aedb-0a591ee447a3",
"createdTime" : 1621357899464,
"lastUpdatedTime" : 1621357899475,
"createdBy" : "user",
"updatedBy" : "user",
"validCredentials" : false
}
Update an organization
A PATCH request to /organizations/{id} will update the organization partially. This will only update the fields
you requested to be changed.
Example request
$ curl 'https://api.breezie.com/organizations/cce35ff9-2ced-4e9b-9ccb-f005a2f6192a' -i -X PATCH -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Audi",
"country" : "Austria"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 666
{
"name" : "Audi",
"country" : "Austria",
"addressLine1" : "Clarance Lane 34",
"addressLine2" : "Apartment 12",
"zipCode" : "W1Q YU7",
"demo" : true,
"disabled" : false,
"customTC" : false,
"checkInActive" : false,
"themeId" : null,
"logoUrl" : null,
"scopeLevelsAvailable" : null,
"organizationLevelReference" : null,
"regionLevelReference" : null,
"campusLevelReference" : null,
"facilityLevelReference" : null,
"vitalCare" : false,
"id" : "cce35ff9-2ced-4e9b-9ccb-f005a2f6192a",
"createdTime" : 1621357899547,
"lastUpdatedTime" : 1621357899556,
"createdBy" : "user",
"updatedBy" : "user",
"validCredentials" : false
}
Settings
Settings is a representation of a set of properties that define the device behaviour.
The set of properties that can be set on a device is defined in a schema available on
https://api.breezie.com/devices/schema.json. This json document describes all the properties available and their
restrictions.
|
Settings can be defined at different levels: breezie level, organization level
and user level. Properties defined at Breezie level can be overwritten at organization and user level and properties
set at organization level can be overwritten at user level.
|
The Settings applied to a device is the combination of breezie settings, organizations settings
and user settings. In case the same property is defined at different levels, user level
has the highest priority and Breezie level the lowest.
|
Retrieve settings for an organization
A GET request to /organizations/{id}/settings will return the set of properties settled at organization level.
Example request
$ curl 'https://api.breezie.com/organizations/54947df8-0e9e-4471-a2f9-9af509fb5889/settings' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'version: 1.0'
Example response
HTTP/1.1 200 OK
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 491
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"organizationId" : "54947df8-0e9e-4471-a2f9-9af509fb5889",
"allowBreezieAppRemoval" : false,
"allowDeviceAdminRemoval" : true,
"usbDebugging" : false,
"allowFactoryReset" : false,
"schemaUri" : "/schemas/actual_schema_breezie",
"disableApps" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"region" : "UK",
"version" : "1.0",
"manualTime" : {
"timeZoneId" : "Europe/London",
"timeFormat" : "YYYY-MM-DD"
}
}
Replace settings for an organization
A PUT request to /organizations/{id}/settings will update the set of properties settled at organization level. This
properties will be applied for all users inside the organization identified by id.
Example request
$ curl 'https://api.breezie.com/organizations/54947df8-0e9e-4471-a2f9-9af509fb5889/settings' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'version: 1.0' -H 'Content-Type: application/json' -d '{
"usbDebugging" : false,
"allowFactoryReset" : false,
"allowDeviceAdminRemoval" : true,
"allowBreezieAppRemoval" : false,
"disableApps" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"manualTime" : {
"timeZoneId" : "Europe/London",
"timeFormat" : "YYYY-MM-DD"
},
"region" : "UK"
}'
Example response
HTTP/1.1 201 Created
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 491
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"usbDebugging" : false,
"allowFactoryReset" : false,
"allowDeviceAdminRemoval" : true,
"allowBreezieAppRemoval" : false,
"disableApps" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"manualTime" : {
"timeZoneId" : "Europe/London",
"timeFormat" : "YYYY-MM-DD"
},
"region" : "UK",
"organizationId" : "54947df8-0e9e-4471-a2f9-9af509fb5889",
"version" : "1.0",
"schemaUri" : "/schemas/actual_schema_breezie"
}
Regions
A region is a representation of a part of an institution localized on some area. It is used to allocate other resources of the system like users,
devices, contents… This resource is the under the top of an pyramidal structure (scope) composed by facilities, campuses,
regions and organizations.
Structure
| Path | Type | Description |
|---|---|---|
|
|
The region id |
|
|
The name of the region |
|
|
The country the region belongs to |
|
|
The organization which the region belongs to |
|
|
The one who created the region |
|
|
The time (Unix timestamp) the region was created |
|
|
The time (Unix timestamp) the region was updated |
|
|
The one who updated the region |
Regions API
Listing regions
A GET request to /regions will retrieve all regions accessible by the user who make the request.
Example request
$ curl 'https://api.breezie.com/regions' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 575
[ {
"id" : "2652dc2a-9906-4086-8e09-f2e44e899955",
"name" : "Auckland",
"country" : "New Zealand",
"organizationId" : "1c9c9db6-364b-43ce-9a29-97c9160afc81",
"createdTime" : 1621357954962,
"lastUpdatedTime" : 1621357954962,
"createdBy" : "user",
"updatedBy" : "user"
}, {
"id" : "728ee2bb-1fb2-4c10-9ee9-89ac4b003536",
"name" : "Baden-Wurttenberg",
"country" : "Germany",
"organizationId" : "9dcfde86-9112-4496-b4cd-677e85994b2a",
"createdTime" : 1621357954962,
"lastUpdatedTime" : 1621357954962,
"createdBy" : "user",
"updatedBy" : "user"
} ]
Retrieve a Region
A GET request to /regions/{id} will retrieve all metadata of the specified region.
Example request
$ curl 'https://api.breezie.com/regions/6d97a05e-a5a8-4aaa-a7a5-4d10da10eff7' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 282
{
"id" : "6d97a05e-a5a8-4aaa-a7a5-4d10da10eff7",
"name" : "Auckland",
"country" : "New Zealand",
"organizationId" : "d1cbcd42-fac0-4859-9eac-79878cd90d31",
"createdTime" : 1621357955092,
"lastUpdatedTime" : 1621357955092,
"createdBy" : "user",
"updatedBy" : "user"
}
Create a Region
A POST request to /regions will create a new Region an return the metadata of the resource created.
Request structure
| Path | Type | Description |
|---|---|---|
|
|
The name of the region |
|
|
The country the region is located in |
|
|
The organization which the region belongs to |
Example request
$ curl 'https://api.breezie.com/regions' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Ohio",
"country" : "USA",
"organizationId" : "b73da7be-5bf0-40a1-87bb-24250784eb2d"
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 270
{
"id" : "473451af-ae11-4c51-bb62-dc12f4f87aa4",
"name" : "Ohio",
"country" : "USA",
"organizationId" : "b73da7be-5bf0-40a1-87bb-24250784eb2d",
"createdTime" : 1621357954887,
"lastUpdatedTime" : 1621357954887,
"createdBy" : "user",
"updatedBy" : "user"
}
Replace a Region
A PUT request to /regions/{id} is used to replace completely a Region. organizationId can not be modified.
Example request
$ curl 'https://api.breezie.com/regions/5099f7cd-702a-48b3-bf31-83d6bff88b20' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Maramures",
"country" : "Romania",
"organizationId" : "f2539ac4-105e-462f-8654-cd988efd19bc"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 279
{
"id" : "5099f7cd-702a-48b3-bf31-83d6bff88b20",
"name" : "Maramures",
"country" : "Romania",
"organizationId" : "f2539ac4-105e-462f-8654-cd988efd19bc",
"createdTime" : 1621357955222,
"lastUpdatedTime" : 1621357955229,
"createdBy" : "user",
"updatedBy" : "user"
}
Update a Region
A PATCH request to /regions/{id} will update the specified Region partially. This will only update the fields
you request be changed. `organizationId, can not be modified.
Example request
$ curl 'https://api.breezie.com/regions/ec3146d6-850f-4668-9d11-330a1d3ca905' -i -X PATCH -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Kensington",
"country" : "UK"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 275
{
"id" : "ec3146d6-850f-4668-9d11-330a1d3ca905",
"name" : "Kensington",
"country" : "UK",
"organizationId" : "8278179e-58e9-4894-8cb1-8d1158cada0e",
"createdTime" : 1621357955154,
"lastUpdatedTime" : 1621357955160,
"createdBy" : "user",
"updatedBy" : "user"
}
Delete a Region
A DELETE request to /regions/{id} will delete the specified region.
Example request
$ curl 'https://api.breezie.com/regions/c4df8564-334c-4f8e-8a99-8a0917d35ed4' -i -X DELETE -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Campuses
A campus is a representation of a part of region. It is used to allocate other resources of the system like users,
devices, contents… This resource is over the bottom of a pyramidal structure (scope) composed by facilities, campuses,
regions and organizations.
Structure
| Path | Type | Description |
|---|---|---|
|
|
The campus id |
|
|
The name of the campus |
|
|
The identifier of organization which the campus belongs to |
|
|
The identifier of the region which the campus belongs to |
|
|
The one who created the campus |
|
|
The time (Unix timestamp) the campus was created |
|
|
The time (Unix timestamp) the campus was updated |
|
|
The one who updated the campus |
Campuses API
Listing campuses
A GET request to /campuses will retrieve all campuses accessible by the user who make the request.
Example request
$ curl 'https://api.breezie.com/campuses' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 621
[ {
"id" : "9784ad47-ee1f-4273-8de3-f9652d865b1a",
"name" : "Hawkins",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"createdTime" : 1468934616500,
"lastUpdatedTime" : 1468934616500,
"createdBy" : "user",
"updatedBy" : "user"
}, {
"id" : "a994decc-1609-44af-b438-623c7224f4de",
"name" : "Peterson",
"organizationId" : "78b219fb-0099-4171-b4c5-4fbfa1bd88dd",
"regionId" : "dd6662eb-111b-40b2-8480-aab7fdb1c80f",
"createdTime" : 1468934616500,
"lastUpdatedTime" : 1468934616500,
"createdBy" : "user",
"updatedBy" : "user"
} ]
Retrieve a campus
A GET request to /campuses/{id} will retrieve all metadata about the specified campus.
Example request
$ curl 'https://api.breezie.com/campuses/9784ad47-ee1f-4273-8de3-f9652d865b1a' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 307
{
"id" : "9784ad47-ee1f-4273-8de3-f9652d865b1a",
"name" : "Hawkins",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"createdTime" : 1468934616500,
"lastUpdatedTime" : 1468934616500,
"createdBy" : "user",
"updatedBy" : "user"
}
Create a Campus
A POST request to /campuses will create a new Campus and return the created resource metadata.
Request structure
| Path | Type | Description |
|---|---|---|
|
|
The name of the campus |
|
|
The scope object for this campus |
Example request
$ curl 'https://api.breezie.com/campuses' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Wellington",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b"
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 310
{
"id" : "aa07a563-86c3-478d-aae3-e822c1efd866",
"name" : "Wellington",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"createdTime" : 1621357943278,
"lastUpdatedTime" : 1621357943278,
"createdBy" : "user",
"updatedBy" : "user"
}
Replace a campus
A PUT request to /campuses/{id} will do a complete replace of the Campus. regionId can not be modified.
Example request
$ curl 'https://api.breezie.com/campuses/9784ad47-ee1f-4273-8de3-f9652d865b1a' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "John Kresse Court",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 317
{
"id" : "9784ad47-ee1f-4273-8de3-f9652d865b1a",
"name" : "John Kresse Court",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"createdTime" : 1468934616500,
"lastUpdatedTime" : 1621357943090,
"createdBy" : "user",
"updatedBy" : "user"
}
Update a Campus
A PATCH request to /campuses/{id} will update the Campus partially. This will only update the fields
you requested to be changed.
Example request
$ curl 'https://api.breezie.com/campuses/9784ad47-ee1f-4273-8de3-f9652d865b1a' -i -X PATCH -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Lindton Center"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 314
{
"id" : "9784ad47-ee1f-4273-8de3-f9652d865b1a",
"name" : "Lindton Center",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"createdTime" : 1468934616500,
"lastUpdatedTime" : 1621357943044,
"createdBy" : "user",
"updatedBy" : "user"
}
Delete a campus
A DELETE request to /campuses/{id} will delete the Campus.
Example request
$ curl 'https://api.breezie.com/campuses/a994decc-1609-44af-b438-623c7224f4de' -i -X DELETE -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Facilities
A facility is a representation of a part of a Campus. It is used to allocate other resources of the system like users,
devices, contents… This resource is the base of an pyramidal structure (scope) composed by facilities, campuses,
regions and organizations.
Structure
| Path | Type | Description |
|---|---|---|
|
|
The facility id |
|
|
The name of the facility |
|
|
The first line of the facility address |
|
|
The second line of the facility address |
|
|
The city the facility is located in |
|
|
The country the facility is located in |
|
|
The zip code of the facility |
|
|
The identifier of organization which the facility belongs to |
|
|
The identifier of the region which the facility belongs to |
|
|
The identifier of the campus which the facility belongs to |
|
|
The one who created the facility |
|
|
The time (Unix timestamp) the facility was created |
|
|
The time (Unix timestamp) the facility was updated |
|
|
The one who updated the facility |
Facilities API
Listing Facilities
A GET request to /facilities will retrieve all Facilities accessible by the User who made the request.
Example request
$ curl 'https://api.breezie.com/facilities' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 1030
[ {
"id" : "6uw8i21-b535-49e1-b565-78eec7154e25",
"name" : "Pearson",
"addressLine1" : "Clarance Lane 34",
"addressLine2" : "Apartment 12",
"city" : "Wellington",
"country" : "New Zealand",
"zipCode" : "W1Q YU7",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"campusId" : "9784ad47-ee1f-4273-8de3-f9652d865b1a",
"createdBy" : "user",
"createdTime" : 1468919272789,
"updatedBy" : "user",
"lastUpdatedTime" : 1468920665699
}, {
"id" : "75e9b678-da51-4320-a26f-ab2ae00c85df",
"name" : "Muller",
"addressLine1" : "Katharina Street 19",
"addressLine2" : "Floor nr 5",
"city" : "Stuttgart",
"country" : "Germany",
"zipCode" : "QWE 99O",
"organizationId" : "78b219fb-0099-4171-b4c5-4fbfa1bd88dd",
"regionId" : "dd6662eb-111b-40b2-8480-aab7fdb1c80f",
"campusId" : "a994decc-1609-44af-b438-623c7224f4de",
"createdBy" : "user",
"createdTime" : 1468919272789,
"updatedBy" : "user",
"lastUpdatedTime" : 1468920665699
} ]
Retrieve a Facility
A GET request to /facilities/{id} will retrieve all metadata about the specified Facility.
Example request
$ curl 'https://api.breezie.com/facilities/6uw8i21-b535-49e1-b565-78eec7154e25' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 514
{
"id" : "6uw8i21-b535-49e1-b565-78eec7154e25",
"name" : "Pearson",
"addressLine1" : "Clarance Lane 34",
"addressLine2" : "Apartment 12",
"city" : "Wellington",
"country" : "New Zealand",
"zipCode" : "W1Q YU7",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"campusId" : "9784ad47-ee1f-4273-8de3-f9652d865b1a",
"createdBy" : "user",
"createdTime" : 1468919272789,
"updatedBy" : "user",
"lastUpdatedTime" : 1468920665699
}
Create a Facility
A POST request to /facilities will create a new facility and return the created resource metadata
Request structure
| Path | Type | Description |
|---|---|---|
|
|
The name of the facility |
|
|
The first line of the facility address |
|
|
The second line of the facility address |
|
|
The city the facility is located in |
|
|
The country the facility is located in |
|
|
The facility zip code |
|
|
The identifier of the campus which the facility belongs to |
Example request
$ curl 'https://api.breezie.com/facilities' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Robertson",
"addressLine1" : "Dowson Lake street nr 5",
"addressLine2" : "Floor nr. 4",
"city" : "Detroit",
"country" : "USA",
"zipCode" : "Z16 I9Q",
"campusId" : "9784ad47-ee1f-4273-8de3-f9652d865b1a"
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 512
{
"id" : "34768286-67bf-4657-9b0f-d7ba33ec7bdc",
"name" : "Robertson",
"addressLine1" : "Dowson Lake street nr 5",
"addressLine2" : "Floor nr. 4",
"city" : "Detroit",
"country" : "USA",
"zipCode" : "Z16 I9Q",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"campusId" : "9784ad47-ee1f-4273-8de3-f9652d865b1a",
"createdBy" : "user",
"createdTime" : 1621357940305,
"updatedBy" : "user",
"lastUpdatedTime" : 1621357940305
}
Replace a Facility
A PUT request to /facilities/{id} will do a complete replace of the Facility. campusId can not be modified.
Example request
$ curl 'https://api.breezie.com/facilities/6uw8i21-b535-49e1-b565-78eec7154e25' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Carltons Court",
"addressLine1" : "Park Hill road",
"addressLine2" : "Floor nr. 6",
"city" : "London",
"country" : "UK",
"zipCode" : "SW2 1QW",
"campusId" : "9784ad47-ee1f-4273-8de3-f9652d865b1a"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 505
{
"id" : "6uw8i21-b535-49e1-b565-78eec7154e25",
"name" : "Carltons Court",
"addressLine1" : "Park Hill road",
"addressLine2" : "Floor nr. 6",
"city" : "London",
"country" : "UK",
"zipCode" : "SW2 1QW",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"campusId" : "9784ad47-ee1f-4273-8de3-f9652d865b1a",
"createdBy" : "user",
"createdTime" : 1468919272789,
"updatedBy" : "user",
"lastUpdatedTime" : 1621357940511
}
Update a Facility
A PATCH request to /facilities/{id} will update the Facility partially. This will only update the fields
you requested to be changed.
Example request
$ curl 'https://api.breezie.com/facilities/6uw8i21-b535-49e1-b565-78eec7154e25' -i -X PATCH -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{
"name" : "Brendsen",
"addressLine1" : "Acre Lane",
"addressLine2" : "Building E",
"city" : "Birmingham",
"country" : "UK",
"zipCode" : "BR1 R5Q"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 497
{
"id" : "6uw8i21-b535-49e1-b565-78eec7154e25",
"name" : "Brendsen",
"addressLine1" : "Acre Lane",
"addressLine2" : "Building E",
"city" : "Birmingham",
"country" : "UK",
"zipCode" : "BR1 R5Q",
"organizationId" : "58ioa3fg-703e-49b3-8670-b1c468f47f1f",
"regionId" : "ee99aed2-acb8-4559-a1c3-e605ea3a653b",
"campusId" : "9784ad47-ee1f-4273-8de3-f9652d865b1a",
"createdBy" : "user",
"createdTime" : 1468919272789,
"updatedBy" : "user",
"lastUpdatedTime" : 1621357940459
}
Delete a Facility
A DELETE request to /facilities/{id} will delete the specified Facility.
Example request
$ curl 'https://api.breezie.com/facilities/75e9b678-da51-4320-a26f-ab2ae00c85df' -i -X DELETE -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Groups
The Groups API is used to create and list 'Groups'. A Group is a representation of a collection of items, be it a Bookmark, Application, Feed, Contact etc. One of the aforementioned resources will always belong to a Group, therefore you can receive the content of a Group once you know the Group’s information. It can be helpful to think of the Groups API as a collection of specific resources. The Group itself also holds all of the access control for resources within it.
In the context of a Breezie tablet device, Groups will appear as categories within the Interests application, with their content appearing within each category.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Group identifier |
|
|
Name the group |
|
|
Image url of the group |
|
|
Image to show as background for the image icon |
|
|
Color to show as background for the image icon |
|
|
A descriptive note related to the group |
|
|
Group identifier from where this group will inherit content |
|
|
List of content identifiers that won’t be inherit from the parent |
|
|
Scope object holding the access control for the resource |
|
|
ID of the organization owning the group |
|
|
ID of the region owning the group |
|
|
ID of the facility owning the group |
|
|
ID of the campus owning the group |
|
|
ID of the user owning the group |
Groups API
Listing Groups
A GET request to /groups will list all Groups accessible by the User who make the request that are not personal Groups.
Example request
$ curl 'https://api.breezie.com/groups' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 3689
[ {
"id" : "8272834d-5489-42d4-962a-fc9d57c28785",
"name" : "Games",
"description" : "A group for all the games enthusiasts",
"imageUrl" : "www.games-group.co.uk/logo.jpg",
"backgroundImageUrl" : null,
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : null,
"facilityId" : null,
"userId" : null
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : null,
"parentGroup" : null,
"removedFromParent" : null
}, {
"id" : "b2c34ebc-e770-4559-a486-9a32e1d2d967",
"name" : "Travelling",
"description" : "A group for all the travelling enthusiasts",
"imageUrl" : "www.travelling-group.co.uk/logo.jpg",
"backgroundImageUrl" : null,
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : null,
"userId" : null
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : null,
"parentGroup" : null,
"removedFromParent" : null
}, {
"id" : "00c66c8c-d3b6-4cec-aa10-3d55d1d33526",
"name" : "Gardening",
"description" : "A group for all the gardening enthusiasts",
"imageUrl" : "www.gardening-group.co.uk/logo.jpg",
"backgroundImageUrl" : "www.gardening-group.co.uk/background.png",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"userId" : null
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : "#f1f1f1",
"parentGroup" : "0c4280c3-fa41-4f71-a2d4-64efce62e1ee",
"removedFromParent" : [ "65636032-9aaa-4c46-988f-561c7eee6236", "54390ea7-bbed-4f20-a35f-9d2dc0804afe" ]
}, {
"id" : "0c4280c3-fa41-4f71-a2d4-64efce62e1ee",
"name" : "Gardening",
"description" : "A group for all the gardening enthusiasts",
"imageUrl" : "www.gardening-group.co.uk/logo.jpg",
"backgroundImageUrl" : null,
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"userId" : null
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : null,
"parentGroup" : "bd9b3a25-c0af-40a9-81f9-18df9364e229",
"removedFromParent" : [ "2942d205-02bd-4c4e-9f9e-66726207c2ff", "457bc237-1366-4113-8600-b5e1d5d60458" ]
}, {
"id" : "6260ed2d-fb34-4635-bb57-86c9640f293c",
"name" : "Cinema",
"description" : "A group for all the cinema enthusiasts",
"imageUrl" : "www.cinema-group.co.uk/logo.jpg",
"backgroundImageUrl" : null,
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"userId" : null
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : null,
"parentGroup" : null,
"removedFromParent" : null
} ]
Listing Groups in an Organization
A GET request to /groups/search/findByOrganizationId?id=[organization-id] will list all of the Groups
in the Organization specified.
Example request
$ curl 'https://api.breezie.com/groups/search/findByOrganizationId?id=48865325-ddb0-4dc5-ac55-d7729794b8ec' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Listing Groups in a Region
A GET request to /groups/search/findByRegionId?id=[region-id] will list all of the Groups
in the Region specified.
Example request
$ curl 'https://api.breezie.com/groups/search/findByRegionId?id=9105e5a5-acba-4c00-8f5d-5b8fccd80da0' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Listing Groups in a Campus
A GET request to /groups/search/findByCampusId?id=[campus-id] will list all of the Groups
in the Campus specified.
Example request
$ curl 'https://api.breezie.com/groups/search/findByCampusId?id=e9f7a654-7135-4b10-afa3-c3a97319c823' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Listing Groups in a Facility
A GET request to /groups/search/findByFacilityId?id=[facility-id] will list all of the Groups
in the Facility specified.
Example request
$ curl 'https://api.breezie.com/groups/search/findByFacilityId?id=7ccae739-0817-46ef-b39c-4c695a6ec835' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Listing Groups for a User
A GET request to /groups/search/findByUserId?id=[user-id] will list all of the Groups that
the User specified belongs to.
Example request
$ curl 'https://api.breezie.com/groups/search/findByFacilityId?id=7ccae739-0817-46ef-b39c-4c695a6ec835' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Retrieve a Group
A GET request to /groups/{id} will retrieve the Group identified by id.
Example request
$ curl 'https://api.breezie.com/groups/165f7629-2224-4895-90b9-3c04e0b709e2' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 861
{
"id" : "165f7629-2224-4895-90b9-3c04e0b709e2",
"name" : "Gardening",
"description" : "A group for all the gardening enthusiasts",
"imageUrl" : "www.gardening-group.co.uk/logo.jpg",
"backgroundImageUrl" : "www.gardening-group.co.uk/background.png",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"userId" : null
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : "#f1f1f1",
"parentGroup" : "8c502c59-43a5-4fc8-a969-9ae650f977af",
"removedFromParent" : [ "a86354c8-7817-44ad-912e-532a9986ae2c", "9ac867ef-56f4-44ec-9ba8-9be4512c706b" ]
}
Creating a group
A POST request to /groups will save a new Group and return the created resource.
Example request
$ curl 'https://api.breezie.com/groups' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"name" : "New group",
"description" : "Group for testing purposes",
"imageUrl" : "www.test-group.co.uk/logo.jpg",
"backgroundImageUrl" : "www.gardening-group.co.uk/background.png",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : "#f1f1f1",
"parentGroup" : "14b85bb5-8a94-41f8-bba9-405ed034ff28",
"removedFromParent" : [ "e8af38fe-7336-44e8-9bd6-057970adef19", "ede22a6a-5727-47bf-9e1a-050defda6912" ]
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 763
{
"id" : "953048e2-d8a5-4350-b2a9-800410e40ebd",
"name" : "New group",
"description" : "Group for testing purposes",
"imageUrl" : "www.test-group.co.uk/logo.jpg",
"backgroundImageUrl" : "www.gardening-group.co.uk/background.png",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"userId" : null
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : "#f1f1f1",
"parentGroup" : "14b85bb5-8a94-41f8-bba9-405ed034ff28",
"removedFromParent" : null
}
Replace a Group
A PUT request to /groups/{id} is used to update a Group completely.
Example request
$ curl 'https://api.breezie.com/groups/5e27d153-af64-45a2-8dad-01743ed355f2' -i -X PUT \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"name" : "Garden",
"description" : "A group for all the gardening enthusiasts",
"imageUrl" : "www.gardening-group.co.uk/logo.jpg",
"backgroundImageUrl" : "www.gardening-group.co.uk/background.png",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : "#f1f1f1",
"parentGroup" : "31aac4dd-fe7c-4a68-a0cc-1ad35269c2dd",
"removedFromParent" : [ "4c36c668-6bfd-490a-9821-ee5771f3e81f", "00026973-e065-48c7-b821-b88ab11f8cc4" ]
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 858
{
"id" : "5e27d153-af64-45a2-8dad-01743ed355f2",
"name" : "Garden",
"description" : "A group for all the gardening enthusiasts",
"imageUrl" : "www.gardening-group.co.uk/logo.jpg",
"backgroundImageUrl" : "www.gardening-group.co.uk/background.png",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"userId" : null
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : "#f1f1f1",
"parentGroup" : "31aac4dd-fe7c-4a68-a0cc-1ad35269c2dd",
"removedFromParent" : [ "4c36c668-6bfd-490a-9821-ee5771f3e81f", "00026973-e065-48c7-b821-b88ab11f8cc4" ]
}
Update a Group
A PATCH request to /groups/{id} is used to update a Group partially.
Example request
$ curl 'https://api.breezie.com/groups/44920258-d5a4-47b4-8681-c1e5f7882c20' -i -X PATCH \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"name" : "Summer Gardening",
"description" : "A group for those intersted in summer gardening"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 874
{
"id" : "44920258-d5a4-47b4-8681-c1e5f7882c20",
"name" : "Summer Gardening",
"description" : "A group for those intersted in summer gardening",
"imageUrl" : "www.gardening-group.co.uk/logo.jpg",
"backgroundImageUrl" : "www.gardening-group.co.uk/background.png",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"userId" : null
},
"isDefault" : true,
"promote" : false,
"forced" : false,
"hidden" : true,
"personal" : false,
"hideOnHub" : false,
"backgroundColor" : "#f1f1f1",
"parentGroup" : "ee0332a9-323e-4c55-ab36-8ecbb45c7fe8",
"removedFromParent" : [ "6c99c7cc-fe4b-4c5f-bdae-2a89c39f2c17", "c470f3f9-38c2-42f0-a4ac-70f930d4e673" ]
}
Delete a Group
A DELETE request to /groups/{id} is used to delete a Group.
Example request
$ curl 'https://api.breezie.com/groups/6a671b7a-5804-41eb-81e5-dd7a6a79759f' -i -X DELETE \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Get Users from Group
A GET request to /groups/{id}/users will retrieve the list of Users subscribed to the Group.
User Structure
| Path | Type | Description |
|---|---|---|
|
|
User identifier |
|
|
Username of the user |
|
|
First name of the user |
|
|
Last name of the user |
|
|
Ids of the groups which the user is subscribed |
|
|
Ids of the default groups which the user is un-subscribed |
|
|
Scope object holding the access control for the resource |
|
|
ID of the organization that the user belongs to |
|
|
ID of the region that the user belongs to |
|
|
ID of the facility that the user belongs to |
|
|
ID of the campus that the user belongs to |
|
|
ID of the user |
Example request
$ curl 'https://api.breezie.com/groups/8ea9e17d-f163-4fa3-b192-9ed7ede5fb1c/users' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 1104
[ {
"id" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"username" : "nicole.snow@breezie.com",
"firstName" : "Nicole",
"lastName" : "Snow",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a"
},
"groupIds" : [ "8ea9e17d-f163-4fa3-b192-9ed7ede5fb1c" ],
"unsubscribedDefaultGroupIds" : [ ]
}, {
"id" : "6v9105e5-acfccd80ba-8f5d-5b8da0-4c00",
"username" : "david.jones@breezie.com",
"firstName" : "David",
"lastName" : "Jones",
"scope" : {
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"campusId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"facilityId" : "7ccae739-0817-46ef-b39c-4c695a6ec835",
"userId" : "6v9105e5-acfccd80ba-8f5d-5b8da0-4c00"
},
"groupIds" : [ "8ea9e17d-f163-4fa3-b192-9ed7ede5fb1c" ],
"unsubscribedDefaultGroupIds" : [ ]
} ]
Add Users to a Group
A PUT request to /groups/{id}/users will add a set of users Users to the specified group. The body has
to contain the list of User ID (line separator).
Example request
$ curl 'https://api.breezie.com/groups/909a5fc4-08b5-42af-afaf-415903fe2338/users' -i -X PUT \
-H 'Content-Type: text/uri-list' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '4809459f-3d27-46fd-8a59-b6b8204d2838
dft54er4-8709-9iyt-ht5r67ytg4df'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Remove a User from a Group
A DELETE request to /groups/{id}/users/{userId} will remove the specified user from the specified Group.
Example request
$ curl 'https://api.breezie.com/groups/aae19c64-4446-41f4-8fb4-3993f1d23a4c/users/6v9105e5-acfccd80ba-8f5d-5b8da0-4c00' -i -X DELETE \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Templates
A Template is a representation of a collection of groups. Templates could be used by admin users to organize groups and facilitate subscriptions to a set of groups.
Templates don’t have representation in the context of a Breezie tablet device.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Group Template identifier |
|
|
Name of the template |
|
|
Description of the template |
|
|
List of group IDs that belong to the template |
|
|
ID of the organization that the template belongs to |
|
|
ID of the region that the template belongs to |
|
|
ID of the campus that the template belongs to |
|
|
ID of the facility that the template belongs to |
|
|
Not used on this resource. Templates can’t belong to a user |
Templates API
Listing Templates
A GET request to /group-templates will list all Templates accessible by the User who make the request.
Example request
$ curl 'https://api.breezie.com/group-templates' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 921
[ {
"id" : "ccdc9854-0fc5-4419-b0da-6070fd8ca58f",
"name" : "Initial Breezie Content",
"description" : "Basic initial content for a standard device configuration",
"groups" : [ "c307a326-6c63-43d0-a422-11f02beef27a", "54557abb-f72e-45e7-9733-2e6ed336d1d3", "0c3cd993-7eb2-4fb5-92fa-05ca87d068ec" ],
"scope" : {
"organizationId" : null,
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
}
}, {
"id" : "67be72af-131d-4e06-b04d-643d6df6cc8d",
"name" : "Engagement module groups",
"description" : "Groups for all standard users in 'organization A'",
"groups" : [ "f385adce-6a56-4c0f-a7c6-ec984b7c325d", "777dd533-3b5a-4613-bd98-77634738f559", "905aac80-06b8-47ea-a6f8-83af2d473fa1" ],
"scope" : {
"organizationId" : "9f45ebba-546d-49c7-bcbc-aa19b68a3d3f",
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
}
} ]
Creating a template
A POST request to /group-templates will save a new Template and return the created resource.
Example request
$ curl 'https://api.breezie.com/group-templates/' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"id" : null,
"name" : "Entertainment",
"description" : "All groups that contains entertainment contents: books, audio, video, games...",
"groups" : [ "2613739c-9a12-413d-861f-50a4849c54fd", "e8b9b76a-0a18-4096-984e-294e4bf2c70f", "c6461464-e4c9-4ec9-a7b6-1aeaf7e323ff", "f38bb950-1c6a-4d3a-a9ae-409325e7b066" ],
"scope" : {
"organizationId" : "18c70b9e-2012-4279-a7ba-fff523d95a12",
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
}
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 529
{
"id" : "d5f2d56d-14c0-4cd9-8bc5-77d484ae484d",
"name" : "Entertainment",
"description" : "All groups that contains entertainment contents: books, audio, video, games...",
"groups" : [ "2613739c-9a12-413d-861f-50a4849c54fd", "e8b9b76a-0a18-4096-984e-294e4bf2c70f", "c6461464-e4c9-4ec9-a7b6-1aeaf7e323ff", "f38bb950-1c6a-4d3a-a9ae-409325e7b066" ],
"scope" : {
"organizationId" : "18c70b9e-2012-4279-a7ba-fff523d95a12",
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
}
}
Retrieve a Template
A GET request to /group-templates/{id} will retrieve the Template identified by id.
Example request
$ curl 'https://api.breezie.com/group-templates/de30a586-d89b-4baf-84d6-1503356b51cd' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 444
{
"id" : "de30a586-d89b-4baf-84d6-1503356b51cd",
"name" : "Initial Breezie Content",
"description" : "Basic initial content for a standard device configuration",
"groups" : [ "3ced4849-47c0-400e-9d91-d2c2d6a04cb9", "211b442e-de7a-4a2e-a87a-8ce79a1ac8df", "65272efa-d9d0-40b3-94bd-617462da60ec" ],
"scope" : {
"organizationId" : null,
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
}
}
Replace a Template
A PUT request to /group-templates/{id} is used to update a Template completely.
Example request
$ curl 'https://api.breezie.com/group-templates/893dfe91-6c55-4407-9770-e9963bb5d008' -i -X PUT \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"id" : null,
"name" : "Engagenment Template",
"description" : "Groups for all standard users in 'organization 1'",
"groups" : [ "a2cd6309-4240-4819-8c65-f819c189d566", "89f88c9a-c834-440e-a794-95d8654035e5", "9cc5f314-aa5f-4115-be1f-cc5aeb268bb8", "41005325-04d1-4df3-9291-2619e3d2ac69" ],
"scope" : {
"organizationId" : "9f45ebba-546d-49c7-bcbc-aa19b68a3d3f",
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
}
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 507
{
"id" : "893dfe91-6c55-4407-9770-e9963bb5d008",
"name" : "Engagenment Template",
"description" : "Groups for all standard users in 'organization 1'",
"groups" : [ "a2cd6309-4240-4819-8c65-f819c189d566", "89f88c9a-c834-440e-a794-95d8654035e5", "9cc5f314-aa5f-4115-be1f-cc5aeb268bb8", "41005325-04d1-4df3-9291-2619e3d2ac69" ],
"scope" : {
"organizationId" : "9f45ebba-546d-49c7-bcbc-aa19b68a3d3f",
"regionId" : null,
"campusId" : null,
"facilityId" : null,
"userId" : null
}
}
Delete a Template
A DELETE request to /group-templates/{id} is used to delete a Template.
Example request
$ curl 'https://api.breezie.com/group-templates/e98febaa-b901-41de-a8dd-f1fa3ba80b26' -i -X DELETE \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Applications
The Applications API is used to create and list 'Applications'. An Application an Android Play Store application which is represented with a title, description, image and a package name. An Application is always assigned to a Group.
In the context of the Breezie tablet device, Applications appear on the StartScreen and within the Interests application.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Application identifier |
|
|
Title of the application |
|
|
Description of the application |
|
|
Image for the icon of the application |
|
|
Small image for the icon of the application (128 * 128) |
|
|
Color to show as background for the icon |
|
|
Package Name of the application |
|
|
ID of the group in which this application belongs |
|
|
ID of the group in which this application will be shown |
|
|
ID of the group this application belongs to |
|
|
Whether this application should be forced on StartScreen |
|
|
Whether this application should be promoted on StartScreen |
|
|
Whether this application should be hidden in Interests |
|
|
Whether to block this application being uninstalled |
|
|
Whether to block this application from showing notifications |
|
|
Semantic tags associated to the application |
Applications API
Listing Applications by Group
A GET request to /applications/search/findByGroupId?id=[group-id] will list all of the Applications
in the Group specified.
Example request
$ curl 'https://api.breezie.com/applications/search/findByGroupId?id=373c312f-3d8d-4ce2-b5bf-7768f304a78d' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 1197
[ {
"id" : "20f506ed-8d31-4fcd-bc10-59456c437577",
"title" : "Winter Gardening",
"description" : "Helpful app, informing you when best to water those flowers when it gets cold",
"productId" : "co.uk.demo.gardening",
"iconUrl" : "https://www.gardening.com/image",
"smallIconUrl" : "https://www.gardening.com/image/small",
"groupId" : "373c312f-3d8d-4ce2-b5bf-7768f304a78d",
"forced" : false,
"promote" : false,
"hidden" : false,
"blockUninstall" : false,
"blockNotification" : false,
"tags" : [ "garden" ],
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}, {
"id" : "f10b5bd6-1504-4399-9d71-3b37655d4bbb",
"title" : "Gardening",
"description" : "Helpful app, informing you when best to water those flowers",
"productId" : "co.uk.demo.gardening",
"iconUrl" : "https://www.gardening.com/image",
"smallIconUrl" : "https://www.gardening.com/image/small",
"groupId" : "373c312f-3d8d-4ce2-b5bf-7768f304a78d",
"forced" : false,
"promote" : false,
"hidden" : false,
"blockUninstall" : false,
"blockNotification" : false,
"tags" : [ "garden" ],
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
} ]
Listing Applications by User
A GET request to /applications/search/findByUserId?id=[user-id] will list all of the Applications that a
particular User has.
Example request
$ curl 'https://api.breezie.com/applications/search/findByGroupId?id=373c312f-3d8d-4ce2-b5bf-7768f304a78d' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Retrieve an Application
A GET request to /applications/{id} will retrieve the Application identified by id.
Example request
$ curl 'https://api.breezie.com/applications/9bc9808e-62ac-4f83-95d2-b2f69239d581' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 583
{
"id" : "9bc9808e-62ac-4f83-95d2-b2f69239d581",
"title" : "Gardening",
"description" : "Helpful app, informing you when best to water those flowers",
"productId" : "co.uk.demo.gardening",
"iconUrl" : "https://www.gardening.com/image",
"smallIconUrl" : "https://www.gardening.com/image/small",
"groupId" : "5e5376c0-9634-4317-a702-284167109aae",
"forced" : false,
"promote" : false,
"hidden" : false,
"blockUninstall" : false,
"blockNotification" : false,
"tags" : [ "garden" ],
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}
Creating an Application
A POST request to /applications/{id} will save a new Application and return the created resource.
Example request
$ curl 'https://api.breezie.com/applications' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"title" : "Gardening",
"description" : "Helpful app, informing you when best to water those flowers",
"productId" : "co.uk.demo.gardening",
"iconUrl" : "https://www.gardening.com/image",
"smallIconUrl" : "https://www.gardening.com/image/small",
"groupId" : "82d81b33-8ae9-4ed2-a50b-3ec4c715fdf8",
"forced" : false,
"promote" : false,
"hidden" : false,
"blockUninstall" : false,
"blockNotification" : false,
"tags" : [ "garden" ]
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 583
{
"id" : "7948965c-e706-4ee7-a9f5-26043d136852",
"title" : "Gardening",
"description" : "Helpful app, informing you when best to water those flowers",
"productId" : "co.uk.demo.gardening",
"iconUrl" : "https://www.gardening.com/image",
"smallIconUrl" : "https://www.gardening.com/image/small",
"groupId" : "82d81b33-8ae9-4ed2-a50b-3ec4c715fdf8",
"forced" : false,
"promote" : false,
"hidden" : false,
"blockUninstall" : false,
"blockNotification" : false,
"tags" : [ "garden" ],
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}
Replace an Application
A PUT request to /applications/{id} is used to update an Application completely.
Example request
$ curl 'https://api.breezie.com/applications/9016b8b4-b2e3-4f6d-86dc-776c051466d5' -i -X PUT \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"title" : "Gardening",
"description" : "Helpful app, informing you when best to water those flowers",
"productId" : "co.uk.demo.gardening",
"iconUrl" : "https://www.gardening.com/image",
"smallIconUrl" : "https://www.gardening.com/image/small",
"groupId" : "5019dfa6-5a70-4190-ad9d-ae8165442c48",
"forced" : false,
"promote" : false,
"hidden" : false,
"blockUninstall" : false,
"blockNotification" : false,
"tags" : [ "garden" ]
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 583
{
"id" : "9016b8b4-b2e3-4f6d-86dc-776c051466d5",
"title" : "Gardening",
"description" : "Helpful app, informing you when best to water those flowers",
"productId" : "co.uk.demo.gardening",
"iconUrl" : "https://www.gardening.com/image",
"smallIconUrl" : "https://www.gardening.com/image/small",
"groupId" : "5019dfa6-5a70-4190-ad9d-ae8165442c48",
"forced" : false,
"promote" : false,
"hidden" : false,
"blockUninstall" : false,
"blockNotification" : false,
"tags" : [ "garden" ],
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}
Update an Application
A PATCH request to /applications/{id} is used to update an Application partially.
Example request
$ curl 'https://api.breezie.com/applications/0ca650d9-d738-478c-a0ec-5220b084561c' -i -X PATCH \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"title" : "Summer Gardening",
"description" : "Helpful app, informing you when best to water those flowers"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 590
{
"id" : "0ca650d9-d738-478c-a0ec-5220b084561c",
"title" : "Summer Gardening",
"description" : "Helpful app, informing you when best to water those flowers",
"productId" : "co.uk.demo.gardening",
"iconUrl" : "https://www.gardening.com/image",
"smallIconUrl" : "https://www.gardening.com/image/small",
"groupId" : "75f32bf8-a594-47a0-bbfa-b3d28902a5aa",
"forced" : false,
"promote" : false,
"hidden" : false,
"blockUninstall" : false,
"blockNotification" : false,
"tags" : [ "garden" ],
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}
Delete an Application
A DELETE request to /applications/{id} is used to update an Application.
Example request
$ curl 'https://api.breezie.com/applications/beaf6840-c030-4af2-84fe-f9d47ca6dac3' -i -X DELETE \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Bookmarks
The Bookmarks API is used to create and list 'Bookmarks'. A Bookmark is a hyperlink to a resource or a web page and is represented with a name, URL, image and a description. A Bookmark is always assigned to a Group.
In the context of the Breezie tablet device, Bookmarks appear on the StartScreen and within the Interests application. They act as shortcuts to links on the web and are grouped within Categories in the interests by their category.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Bookmark identifier |
|
|
Bookmark url |
|
|
Name of the bookmark |
|
|
Image url of the bookmark |
|
|
Color to show as background for the image icon |
|
|
A descriptive note related to the bookmark |
|
|
ID of the group in which this bookmark belongs to. It will be overwritten if 'showInGroup' is present§ |
|
|
ID of the group in which this bookmark will be shown |
|
|
ID of the group in which this bookmark belongs to |
|
|
Whether this bookmark should be forced on StartScreen |
|
|
Whether this bookmark should be promoted on StartScreen |
|
|
Whether this bookmark should be hidden in Interests |
|
|
Whether this bookmark should first authenticate with the Breezie system before loading |
|
|
Semantic tags associated to the bookmarks. Several usages can be applied |
Bookmarks API
Listing Bookmarks by Group
A GET request to /bookmarks/search/findByGroupId?id=[group-id] will list all of the bookmarks in the Group specified.
Example request
$ curl 'https://api.breezie.com/bookmarks/search/findByGroupId?id=8cf0cbaf-9fd6-47b0-ac36-63d049b8e817' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 943
[ {
"id" : "20f506ed-8d31-4fcd-bc10-59456c437577",
"url" : "www.wintergardening.com",
"name" : "Winter Gardening",
"imageUrl" : "www.gardening.com/image.jpg",
"note" : "This is a bookmark about gardening",
"groupId" : "8cf0cbaf-9fd6-47b0-ac36-63d049b8e817",
"tags" : [ "garden" ],
"forced" : false,
"promote" : false,
"hidden" : false,
"breezieAuthenticationRequired" : false,
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}, {
"id" : "50ca96e0-fae0-476c-a5aa-3aa2a3676d8d",
"url" : "www.gardening.com",
"name" : "Gardening",
"imageUrl" : "www.gardening.com/image.jpg",
"note" : "This is a bookmark about gardening",
"groupId" : "8cf0cbaf-9fd6-47b0-ac36-63d049b8e817",
"tags" : [ "garden" ],
"forced" : false,
"promote" : false,
"hidden" : false,
"breezieAuthenticationRequired" : false,
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
} ]
Listing Bookmarks by User
A GET request to /bookmarks/search/findByUserId?id=[user-id] will list all of the Bookmarks for the User specified.
Example request
$ curl 'https://api.breezie.com/bookmarks/search/findByUserId?id=17d19fc4-31d6-43ef-8d4c-04405540656e' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Retrieve a Bookmark
A GET request to /bookmarks/{id} will retrieve the Bookmark identified by id.
Example request
$ curl 'https://api.breezie.com/bookmarks/d1c8abb1-b2fc-49a3-b697-c9a673e81f22' -i -X GET \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 462
{
"id" : "d1c8abb1-b2fc-49a3-b697-c9a673e81f22",
"url" : "www.gardening.com",
"name" : "Gardening",
"imageUrl" : "www.gardening.com/image.jpg",
"note" : "This is a bookmark about gardening",
"groupId" : "dfd31f0f-8cf6-4509-a5a3-578ebb32dd6b",
"tags" : [ "garden" ],
"forced" : false,
"promote" : false,
"hidden" : false,
"breezieAuthenticationRequired" : false,
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}
Creating a Bookmark
A POST request to /bookmarks will save a new Bookmark and return the created resource.
Example request
$ curl 'https://api.breezie.com/bookmarks' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"url" : "www.gardening.com",
"name" : "Gardening",
"imageUrl" : "www.gardening.com/image.jpg",
"note" : "This is a bookmark about gardening",
"groupId" : "1f08bcac-b6fe-4112-9ed3-9cc48b20bb79",
"forced" : false,
"promote" : false,
"hidden" : false,
"breezieAuthenticationRequired" : false,
"tags" : [ "garden" ]
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 462
{
"id" : "79df5cb1-2f81-46cb-a1aa-8649fb817bba",
"url" : "www.gardening.com",
"name" : "Gardening",
"imageUrl" : "www.gardening.com/image.jpg",
"note" : "This is a bookmark about gardening",
"groupId" : "1f08bcac-b6fe-4112-9ed3-9cc48b20bb79",
"tags" : [ "garden" ],
"forced" : false,
"promote" : false,
"hidden" : false,
"breezieAuthenticationRequired" : false,
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}
Replace a bookmark
A PUT request to /bookmarks/{id} is used to update a Bookmark completely.
Example request
$ curl 'https://api.breezie.com/bookmarks/6b6918b5-be2d-44d5-96c6-67682e737ae2' -i -X PUT \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"url" : "www.gardening.com",
"name" : "Summer Gardering",
"imageUrl" : "www.gardening.com/image.jpg",
"note" : "This is a bookmark about gardening",
"groupId" : "2145943a-b563-4e61-93b4-5840e6da95af",
"forced" : false,
"promote" : false,
"hidden" : false,
"breezieAuthenticationRequired" : false,
"tags" : [ "garden" ]
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 469
{
"id" : "6b6918b5-be2d-44d5-96c6-67682e737ae2",
"url" : "www.gardening.com",
"name" : "Summer Gardering",
"imageUrl" : "www.gardening.com/image.jpg",
"note" : "This is a bookmark about gardening",
"groupId" : "2145943a-b563-4e61-93b4-5840e6da95af",
"tags" : [ "garden" ],
"forced" : false,
"promote" : false,
"hidden" : false,
"breezieAuthenticationRequired" : false,
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}
Update a Bookmark
A PATCH request to /bookmarks/{id} is used to update a Bookmark partially.
Example request
$ curl 'https://api.breezie.com/bookmarks/cb6b9fbe-c29d-4fc2-a1a2-854517cce288' -i -X PATCH \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' \
-d '{
"url" : "www.gardening.com/summer",
"name" : "Summer Gardening"
}'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 476
{
"id" : "cb6b9fbe-c29d-4fc2-a1a2-854517cce288",
"url" : "www.gardening.com/summer",
"name" : "Summer Gardening",
"imageUrl" : "www.gardening.com/image.jpg",
"note" : "This is a bookmark about gardening",
"groupId" : "30a6d39f-248c-4e79-aad5-727e7852a77d",
"tags" : [ "garden" ],
"forced" : false,
"promote" : false,
"hidden" : false,
"breezieAuthenticationRequired" : false,
"showInGroup" : null,
"originalGroup" : null,
"backgroundColor" : null
}
Delete a Bookmark
A DELETE request to /bookmarks/{id} is used to delete a Bookmark.
Example request
$ curl 'https://api.breezie.com/bookmarks/c816de93-8226-4fbc-b970-869570e645bf' -i -X DELETE \
-H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Device
A device represents a Breezie tablet. A device belongs to a User, so the accessibility is defined
by the User who owns the Device. The resources have a set of configurations (settings) that can alter how they
behave.
StartScreen is a sub-resource of device that represents the configuration of the initial screen on the
Device. This resource is used to manage the apps, bookmarks, categories… that the Device will show on its screen.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Device identifier |
|
|
Device serial number |
|
|
Device brand |
|
|
Device model |
|
|
Firebase Cloud Messaging token. Used to communicate with the device |
|
|
Android identifier of the device |
|
|
ID of the user owning the device |
|
|
Flag indicating if the device is enabled or not |
|
|
Scope object holding the access control for the resource |
|
|
ID of the user’s organization owning the device |
|
|
ID of the user’s region owning the device |
|
|
ID of the user’s facility owning the device |
|
|
ID of the user’s campus owning the device |
|
|
ID of the user owning the device |
Devices API
Listing devices
A GET request to /devices will list all Devices accessible by the User who made the request.
Example request
$ curl 'https://api.breezie.com/devices' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 1248
[ {
"id" : "0f5881c5-4b45-437c-8ddd-47a147af1dfd",
"serialNumber" : "R52G5ABX16XV",
"androidId" : "3e4d311d6223dge4",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"model" : "SM-T550",
"manufacturer" : "samsung",
"fcmToken" : "asdfgh-234r5-afsdg-argq-t6-adst-5srgsdfh-hhye",
"enabled" : true,
"scope" : {
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
}
}, {
"id" : "7af18528-086e-44e5-be81-f1ada1caeefb",
"serialNumber" : "R52K706QYTPZ",
"androidId" : "35121d98a70f4140",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"model" : "SM-T813",
"manufacturer" : "samsung",
"fcmToken" : "asdfgh-234r5-afsdg-argq-t6-adst-5srgsdfh-hhye",
"enabled" : true,
"scope" : {
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
}
} ]
Listing Devices by Organization
A GET request to /devices/search/findByOrganizationId?id=[organization-id] will list all the Devices belonging
to the Organization chosen in the request.
Example request
$ curl 'https://api.breezie.com/devices/search/findByOrganizationId?id=48865325-ddb0-4dc5-ac55-d7729794b8ec' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Listing Devices by Region
A GET request to /devices/search/findByRegionId?id=[region-id] will list all the Devices belonging
to the Region chosen in the request.
Example request
$ curl 'https://api.breezie.com/devices/search/findByRegionId?id=e9f7a654-7135-4b10-afa3-c3a97319c823' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Listing devices by Campus
A GET request to /devices/search/findByCampusId?id=[campus-id] will list all the Devices belonging
to the Campus chosen in the request.
Example request
$ curl 'https://api.breezie.com/devices/search/findByCampusId?id=7ccae739-0817-46ef-b39c-4c695a6ec835' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Listing Devices by Facility
A GET request to /devices/search/findByFacilityId?id=[facility-id] will list all the Devices belonging
to the Facility chosen in the request.
Example request
$ curl 'https://api.breezie.com/devices/search/findByFacilityId?id=9105e5a5-acba-4c00-8f5d-5b8fccd80da0' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Retrieve a Device
A GET request to /devices/{id} will retrieve the Device identified by id.
Example request
$ curl 'https://api.breezie.com/devices/e304893e-228e-4b50-9957-798765f047f0' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 621
{
"id" : "e304893e-228e-4b50-9957-798765f047f0",
"serialNumber" : "R52K706QYTPZ",
"androidId" : "35121d98a70f4140",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"model" : "SM-T813",
"manufacturer" : "samsung",
"fcmToken" : "asdfgh-234r5-afsdg-argq-t6-adst-5srgsdfh-hhye",
"enabled" : true,
"scope" : {
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
}
}
Retrieve Device by Serial Number
A GET request to /devices/search/findBySerialNumber?id=[serial-number] will show the Device with the Serial Number chosen in the request.
Example request
$ curl 'https://api.breezie.com/devices/search/findBySerialNumber?id=R52K706QYTPZ' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Retrieve device by Android ID
A GET request to /devices/search/findByAndroidId?id=[android-id] will show the Device with the Android ID chosen in the request.
Example request
$ curl 'https://api.breezie.com/devices/search/findByAndroidId?id=35121d98a70f4140' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Create a Device
A POST request to /devices will save a new Device and return the created representation.
Example request
$ curl 'https://api.breezie.com/devices' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json' -d '{
"serialNumber" : "R52G5ABX32BB",
"androidId" : "3e4dhgf5s223hggt",
"userId" : "dft54er4-8709-9iyt-ht5r67ytg4df",
"model" : "SM-T550",
"manufacturer" : "samsung",
"fcmToken" : "asdfgh-234r5-afsdg-argq-t6-adst-5srgsdfh-hhye",
"enabled" : true,
"scope" : {
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "dft54er4-8709-9iyt-ht5r67ytg4df",
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
}
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 611
{
"id" : "91ffd237-b1d2-4cce-98b8-3adfab7a32c6",
"serialNumber" : "R52G5ABX32BB",
"androidId" : "3e4dhgf5s223hggt",
"userId" : "dft54er4-8709-9iyt-ht5r67ytg4df",
"model" : "SM-T550",
"manufacturer" : "samsung",
"fcmToken" : "asdfgh-234r5-afsdg-argq-t6-adst-5srgsdfh-hhye",
"enabled" : true,
"scope" : {
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "dft54er4-8709-9iyt-ht5r67ytg4df",
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
}
}
Replace a Device
A PUT request to /devices/{id} will update the Device identified by id completely.
Example request
$ curl 'https://api.breezie.com/devices/fc9baa8d-d1c6-41e7-ba80-142448e87ee8' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json' -d '{
"serialNumber" : "R52K706QYTPZ",
"androidId" : "35121d98a70f4140",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"model" : "SM-T813",
"manufacturer" : "samsung",
"fcmToken" : "asdfgh-234r5-afsdg-argq-t6-adst-5srgsdfh-hhye",
"enabled" : false,
"scope" : {
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
}
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 622
{
"id" : "fc9baa8d-d1c6-41e7-ba80-142448e87ee8",
"serialNumber" : "R52K706QYTPZ",
"androidId" : "35121d98a70f4140",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"model" : "SM-T813",
"manufacturer" : "samsung",
"fcmToken" : "asdfgh-234r5-afsdg-argq-t6-adst-5srgsdfh-hhye",
"enabled" : false,
"scope" : {
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
}
}
Update a Device
A PATCH request to /devices/{id} will update the Device identified by id partially.
Example request
$ curl 'https://api.breezie.com/devices/6d07b2a5-53f8-4970-bc63-448540c69314' -i -X PATCH -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json' -d '{
"serialNumber" : null,
"androidId" : null,
"userId" : null,
"model" : null,
"manufacturer" : null,
"fcmToken" : null,
"enabled" : false,
"scope" : null
}'
Example response
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 622
{
"id" : "6d07b2a5-53f8-4970-bc63-448540c69314",
"serialNumber" : "R52K706QYTPZ",
"androidId" : "35121d98a70f4140",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"model" : "SM-T813",
"manufacturer" : "samsung",
"fcmToken" : "asdfgh-234r5-afsdg-argq-t6-adst-5srgsdfh-hhye",
"enabled" : false,
"scope" : {
"facilityId" : "9105e5a5-acba-4c00-8f5d-5b8fccd80da0",
"userId" : "18310721-2da3-4bdf-83df-1e49d308c38a",
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : "e9f7a654-7135-4b10-afa3-c3a97319c823",
"campusId" : "7ccae739-0817-46ef-b39c-4c695a6ec835"
}
}
Delete a Device
A DELETE request to /devices/{id} will delete the Device identified by id.
Example request
$ curl 'https://api.breezie.com/devices/db9618b9-03a8-4653-a739-02f352fa5bfa' -i -X DELETE -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Settings
Settings represents a set of properties that define the Device behaviour.
The set of properties that can be set on a device is defined in a schema that can be found on
https://api.breezie.com/devices/schema.json. This json document describes all the properties available and their restrictions.
|
Settings can be defined at different levels: breezie level, organization level
and user level. Properties defined at Breezie level can be overwritten at Organization and User level and properties
set at Organization level can be overwritten at User level.
|
The Settings applied to a Device is the combination of Breezie Settings, Organizations Settings
and User Settings. In case the same property is defined at different levels, User level
has the highest priority and Breezie level the lowest.
|
Retrieve Settings for a Device
A GET request to /devices/{id}/settings will list all of the the Settings applied to a particular Device. These Settings are a combination of
Breezie Settings, Organization Settings and User Settings. In case the same property is defined at different levels, User level
has the highest priority and Breezie level the lowest.
Example request
$ curl 'https://api.breezie.com/devices/9a67fb73-f44c-4ac7-a7e2-186bf6569711/settings' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'version: 1.0'
Example response
HTTP/1.1 200 OK
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 679
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"allowBreezieAppRemoval" : false,
"allowDeviceAdminRemoval" : true,
"usbDebugging" : false,
"allowFactoryReset" : false,
"disableApps" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"manualTime" : {
"timeZoneId" : "Europe/London",
"timeFormat" : "YYYY-MM-DD"
},
"region" : "UK",
"volume" : 50,
"allowAppsUninstall" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"screenBrightness" : 7,
"allowMicrophone" : true,
"enableCamera" : true,
"screenTimeout" : 60,
"deviceId" : "9a67fb73-f44c-4ac7-a7e2-186bf6569711",
"version" : "1.0"
}
Replace Device Settings
A PUT request to /devices/{id}/settings is used to save the Device Settings. This information cannot be requested from
the API and it is stored to have the knowledge of the status of the Device.
====== Example request
$ curl 'https://api.breezie.com/devices/9a67fb73-f44c-4ac7-a7e2-186bf6569711/settings' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'version: 1.0' -H 'Content-Type: application/json' -d '{
"allowMicrophone" : true,
"enableCamera" : true,
"screenTimeout" : 60,
"volume" : 50,
"screenBrightness" : 7,
"usbDebugging" : false,
"allowFactoryReset" : false,
"allowDeviceAdminRemoval" : true,
"allowBreezieAppRemoval" : false,
"allowAppsUninstall" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"disableApps" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"manualTime" : {
"timeZoneId" : "Europe/London",
"timeFormat" : "YYYY-MM-DD"
}
}'
Example response
HTTP/1.1 201 Created
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 660
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"allowMicrophone" : true,
"enableCamera" : true,
"screenTimeout" : 60,
"volume" : 50,
"screenBrightness" : 7,
"usbDebugging" : false,
"allowFactoryReset" : false,
"allowDeviceAdminRemoval" : true,
"allowBreezieAppRemoval" : false,
"allowAppsUninstall" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"disableApps" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"manualTime" : {
"timeZoneId" : "Europe/London",
"timeFormat" : "YYYY-MM-DD"
},
"deviceId" : "9a67fb73-f44c-4ac7-a7e2-186bf6569711",
"version" : "1.0"
}
Start Screen
The Start Screen resource is composed of two attributes: the maximum number of items that can be displayed
on the Device’s screen and a sorted list of items which are candidates to show on the screen. This list of items is
composed of the items forced by an admin to be on the Start Screen, the items manually settled on the
screen, the items promoted by admins and finally the rest of items candidates to be on the screen.
It is a Device job to calculate the items to show in the screen from the information provided in this endpoint.
Retrieve StartScreen
A GET request to /devices/{id}/startscreen will return the Start Screen configuration of the
Device identified by id.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Maximum number of items to be shown on the device’s screen |
|
|
Sorted list of items candidates to be shown on the device’s screen |
|
|
Item title |
|
|
Item image url |
|
|
Type of the item: APP, BOOKARK, GROUP or EXCEPTIONAL |
|
|
Item action to realize when item is clicked on the device |
|
|
Flag that indicates if the item is forced or not |
|
|
Flag that indicates if the item has been manually settled or not |
|
|
Flag that indicates if the item has been promoted or not |
|
|
Flag that indicates if the item has been manually ignored or not |
|
|
Flag that indicates if the item is hidden on the device or not |
|
|
Item scope |
|
|
Organization id which item belogs to |
|
|
Region id which item belogs to |
|
|
Campus id which item belogs to |
|
|
Facility id which item belogs to |
|
|
User id which item belogs to |
Example request
$ curl 'https://api.breezie.com/devices/b6429b93-0f3e-4079-9db2-385560fa61dd/startscreen' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42'
Example response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 2773
{
"numberOfItems" : 4,
"items" : [ {
"title" : "Interests",
"imageUrl" : "https://lh3.googleusercontent.com/LJYTR7O6FhgmgKz8DWjdwOrjSwotEjj1cRzRXiwe-ku-iD-jvvYKAkFpoRXz40VthHg=w300",
"type" : "EXCEPTIONAL",
"action" : "interests",
"forced" : true,
"settled" : false,
"promoted" : true,
"ignored" : false,
"hidden" : false,
"scope" : null
}, {
"title" : "Address Book",
"imageUrl" : "https://lh3.googleusercontent.com/ymxsToS_hwIz4I8erEK1L6EYB3weXve9mai5ozqOEKI_1TB01COmv3NGwUwP_DihXwk-",
"type" : "APP",
"action" : "app:com.breezie.apps.addressbook",
"forced" : true,
"settled" : false,
"promoted" : true,
"ignored" : false,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : null,
"regionId" : null,
"campusId" : null
}
}, {
"title" : "Angry Birds",
"imageUrl" : "https://lh3.googleusercontent.com/iOi6YJxQwMenT5UQWGPWTrFMQFm68IC4uKlFtARveZzVD5lTZ7fC47_rnnF7Tk48DpY",
"type" : "APP",
"action" : "app:com.rovio.candyCrush",
"forced" : false,
"settled" : true,
"promoted" : true,
"ignored" : false,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : null,
"regionId" : null,
"campusId" : null
}
}, {
"title" : "My Choices",
"imageUrl" : null,
"type" : "GROUP",
"action" : "4f4a99e1-c0d8-4510-ac7f-d30322749534",
"forced" : false,
"settled" : true,
"promoted" : false,
"ignored" : false,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : null,
"regionId" : null,
"campusId" : null
}
}, {
"title" : "Candy Crash Saga",
"imageUrl" : "https://lh5.ggpht.com/81M05pEyFiOqKt8CashUoz66iJAhL-3PHHbAil108QkU9sKeVZBuZaNJiV7b0gZ2GFU",
"type" : "APP",
"action" : "app:com.king.candycrushsaga",
"forced" : false,
"settled" : false,
"promoted" : true,
"ignored" : false,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : null,
"campusId" : null
}
}, {
"title" : "Google Photos",
"imageUrl" : "https://lh5.ggpht.com/tq3WqEUxtRyBn-d_0t3j6WKNHuJDrmLq-FE3GAYrsAMQFIaS7FIgRLfzzql2SvfvLqto",
"type" : "APP",
"action" : "app:com.google.android.apps.photos",
"forced" : false,
"settled" : false,
"promoted" : false,
"ignored" : false,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : null,
"regionId" : null,
"campusId" : null
}
} ]
}
Replace StartScreen
A PUT request to /devices/{id}/startscreen will update the Start Screen configuration of the
Device identified by id.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Maximum number of items to be shown on the device’s screen |
|
|
List of items manually selected to be on the start screen |
|
|
Item title |
|
|
Item image url |
|
|
Type of the item: APP, BOOKARK, GROUP or EXCEPTIONAL |
|
|
Item action to realize when item is clicked on the device |
|
|
List of items manually selected to not be shown on the start screen |
|
|
Item title |
|
|
Item image url |
|
|
Type of the item: APP, BOOKARK, GROUP or EXCEPTIONAL |
|
|
Item action to realize when item is clicked on the device |
Example request
$ curl 'https://api.breezie.com/devices/b6429b93-0f3e-4079-9db2-385560fa61dd/startscreen' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json' -d '{
"numberOfItems" : 4,
"settledItems" : [ {
"title" : "Angry Birds",
"imageUrl" : "https://lh3.googleusercontent.com/iOi6YJxQwMenT5UQWGPWTrFMQFm68IC4uKlFtARveZzVD5lTZ7fC47_rnnF7Tk48DpY",
"type" : "APP",
"action" : "app:com.rovio.candyCrush"
}, {
"title" : "My Choices",
"imageUrl" : null,
"type" : "GROUP",
"action" : "4f4a99e1-c0d8-4510-ac7f-d30322749534"
} ],
"ignoredItems" : [ {
"title" : "Candy Crash Saga",
"imageUrl" : "https://lh5.ggpht.com/81M05pEyFiOqKt8CashUoz66iJAhL-3PHHbAil108QkU9sKeVZBuZaNJiV7b0gZ2GFU",
"type" : "APP",
"action" : "app:com.king.candycrushsaga"
} ]
}'
Example response
HTTP/1.1 204 No Content
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 2772
{
"numberOfItems" : 4,
"items" : [ {
"title" : "Interests",
"imageUrl" : "https://lh3.googleusercontent.com/LJYTR7O6FhgmgKz8DWjdwOrjSwotEjj1cRzRXiwe-ku-iD-jvvYKAkFpoRXz40VthHg=w300",
"type" : "EXCEPTIONAL",
"action" : "interests",
"forced" : true,
"settled" : false,
"promoted" : true,
"ignored" : false,
"hidden" : false,
"scope" : null
}, {
"title" : "Address Book",
"imageUrl" : "https://lh3.googleusercontent.com/ymxsToS_hwIz4I8erEK1L6EYB3weXve9mai5ozqOEKI_1TB01COmv3NGwUwP_DihXwk-",
"type" : "APP",
"action" : "app:com.breezie.apps.addressbook",
"forced" : true,
"settled" : false,
"promoted" : true,
"ignored" : false,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : null,
"regionId" : null,
"campusId" : null
}
}, {
"title" : "Angry Birds",
"imageUrl" : "https://lh3.googleusercontent.com/iOi6YJxQwMenT5UQWGPWTrFMQFm68IC4uKlFtARveZzVD5lTZ7fC47_rnnF7Tk48DpY",
"type" : "APP",
"action" : "app:com.rovio.candyCrush",
"forced" : false,
"settled" : true,
"promoted" : true,
"ignored" : false,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : null,
"regionId" : null,
"campusId" : null
}
}, {
"title" : "My Choices",
"imageUrl" : null,
"type" : "GROUP",
"action" : "4f4a99e1-c0d8-4510-ac7f-d30322749534",
"forced" : false,
"settled" : true,
"promoted" : false,
"ignored" : false,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : null,
"regionId" : null,
"campusId" : null
}
}, {
"title" : "Candy Crash Saga",
"imageUrl" : "https://lh5.ggpht.com/81M05pEyFiOqKt8CashUoz66iJAhL-3PHHbAil108QkU9sKeVZBuZaNJiV7b0gZ2GFU",
"type" : "APP",
"action" : "app:com.king.candycrushsaga",
"forced" : false,
"settled" : false,
"promoted" : true,
"ignored" : true,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : "48865325-ddb0-4dc5-ac55-d7729794b8ec",
"regionId" : null,
"campusId" : null
}
}, {
"title" : "Google Photos",
"imageUrl" : "https://lh5.ggpht.com/tq3WqEUxtRyBn-d_0t3j6WKNHuJDrmLq-FE3GAYrsAMQFIaS7FIgRLfzzql2SvfvLqto",
"type" : "APP",
"action" : "app:com.google.android.apps.photos",
"forced" : false,
"settled" : false,
"promoted" : false,
"ignored" : false,
"hidden" : false,
"scope" : {
"facilityId" : null,
"userId" : null,
"organizationId" : null,
"regionId" : null,
"campusId" : null
}
} ]
}
Update StartScreen
A PATCH request to /devices/{id}/startscreen will add an item to the existed startscreen configuration of the
device identified by id.
Structure
| Path | Type | Description |
|---|---|---|
|
|
Title of the item to be added |
|
|
Image url of the item to be added |
|
|
Type of the item: APP, BOOKARK, GROUP or EXCEPTIONAL |
|
|
Item action to realize when item is clicked on the device |
Example request
$ curl 'https://api.breezie.com/devices/b6429b93-0f3e-4079-9db2-385560fa61dd/startscreen' -i -X PATCH -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json' -d '{
"title" : "Candy Crash Saga",
"imageUrl" : "https://lh5.ggpht.com/81M05pEyFiOqKt8CashUoz66iJAhL-3PHHbAil108QkU9sKeVZBuZaNJiV7b0gZ2GFU",
"type" : "APP",
"action" : "app:com.king.candycrushsaga"
}'
Example response
HTTP/1.1 204 No Content
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 29
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Resource updated successfully
Settings
Settings represents a set of properties that define the Device behaviour.
The set of properties that can be settled to a device are defined in a schema that can be found on
https://api.breezie.com/devices/schema.json. This json document describes all the properties available and its
restrictions.
|
Settings can be defined at different levels: breezie level, organization level
and user level. Properties defined at Breezie level can be overwritten at Organization and User level and properties set at Organization level can be overwritten at User level.
|
The Settings applied to a Device is the combination of Breezie Settings, Organizations Settings
and User Settings. In case the same property is defined at different levels, User level
has the highest priority and Breezie level the lowest.
|
Settings API
Retrieve settings for all devices
A GET request to /breezie-settings will update the set of properties settled at Breezie level.
Example request
$ curl 'https://api.breezie.com/breezie-settings' -i -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'version: 1.0'
Example response
HTTP/1.1 200 OK
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 412
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"allowBreezieAppRemoval" : false,
"allowDeviceAdminRemoval" : false,
"usbDebugging" : false,
"allowFactoryReset" : false,
"schemaUri" : "/schemas/actual_schema_breezie",
"disableApps" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"version" : "1.0",
"manualTime" : {
"timeZoneId" : "Europe/London",
"timeFormat" : "YYYY-MM-DD"
}
}
Replace Settings for all Devices
A PUT request to /breezie-settings will update the set of properties settled at Breezie level. This
properties will be applied for all users.
Example request
$ curl 'https://api.breezie.com/breezie-settings' -i -X PUT -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'version: 1.0' -H 'Content-Type: application/json' -d '{
"usbDebugging" : false,
"allowFactoryReset" : false,
"allowDeviceAdminRemoval" : false,
"allowBreezieAppRemoval" : false,
"disableApps" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"manualTime" : {
"timeZoneId" : "Europe/London",
"timeFormat" : "YYYY-MM-DD"
}
}'
Example response
HTTP/1.1 201 Created
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 412
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
{
"usbDebugging" : false,
"allowFactoryReset" : false,
"allowDeviceAdminRemoval" : false,
"allowBreezieAppRemoval" : false,
"disableApps" : [ "com.breezie.com.apps.startscreen", "com.breezie.apps.bookmarks", "com.breezie.apps.settings" ],
"manualTime" : {
"timeZoneId" : "Europe/London",
"timeFormat" : "YYYY-MM-DD"
},
"version" : "1.0",
"schemaUri" : "/schemas/actual_schema_breezie"
}
Messages
Messages are data structure that can be sent to a device. The device will act in different ways depends on the nature of the message
Message Types
| Message | Description |
|---|---|
launch |
Opens the app specified in the |
wipe |
Starts the |
lock |
It will |
all |
Synchronizes all the data in the device: |
settings |
Synchronizes the device settings. |
groups |
Synchronizes the |
apps |
Synchronizes the |
bookmarks |
Synchronizes the |
start_screen |
Synchronizes the home screen of the device. |
broadcast |
It will send a 'broadcast' message that will be managed in the device by the app specified in the 'payload'. |
Notifications are broadcast messages managed by our notification app on the device
|
Send message
A POST request to /devices/{id}/messages will send an asynchronous message to the Device identified by id. The action
the device will trigger depends on the type of message and the data associated.
Structure
| Path | Type | Description |
|---|---|---|
|
|
type of message to send |
|
|
json object with data required depending on the type of message sent |
Example request (notification message)
$ curl 'https://api.breezie.com/devices/6e22c738-d452-4298-9522-3c2da4ec9962/messages' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"messageType" : "broadcast",
"data" : {
"intentAction" : "notification",
"payload" : "{\"body\":\"This is a test notification\",\"subject\":\"Test Notification\",\"id\":\"c72099ef-aca3-5966-ba90-b3ba6d6bbdc5\",\"ts\":1574176240291,\"actionName\":\"triggerNotification\",\"imageUrl\":\"http://static.breezie.com/assets/breezie/Breezie_B_120x120.png\",\"volume\":50}",
"className" : "com.breezie.client.notifier.FutureEvent",
"packageName" : "app:com.breezie.apps.notifier"
}
}'
Example response (notification message)
HTTP/1.1 202 Accepted
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 54
{
"response" : "FCM Message accepted successfully"
}
Example request (launch app message)
$ curl 'https://api.breezie.com/devices/a6abcf79-77eb-4936-a9c3-df7e01d34c4c/messages' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"messageType" : "launch",
"data" : {
"packageName" : "app:com.breezie.apps.video.VideoCall"
}
}'
Send message to multiple devices
A POST request to /devices/messages will send an asynchronous message to a set of device specified in the body. The action
the device will trigger depends on the type of message and the data associated.
Structure
| Path | Type | Description |
|---|---|---|
|
|
List of devices where the message will be sent |
|
|
type of message to send |
|
|
json object with data required depending on the type of message sent |
Example request (sync message)
$ curl 'https://api.breezie.com/devices/messages' -i -X POST -H 'Authorization: Bearer: 0b79bab50daca910b000d4f1a2b675d604257e42' -H 'Content-Type: application/json;charset=UTF-8' -d '{
"devices" : [ "afe2c896-5600-4f20-ab04-47ec0eab331e", "ff28d3a2-4be6-4e4e-98f5-cee4afa02497" ],
"messageType" : "all",
"data" : { }
}'
Example response (sync message)
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 238
{
"results" : [ {
"deviceId" : "ff28d3a2-4be6-4e4e-98f5-cee4afa02497",
"success" : true,
"errorCode" : null
}, {
"deviceId" : "afe2c896-5600-4f20-ab04-47ec0eab331e",
"success" : true,
"errorCode" : null
} ]
}