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 ID and a Secret to 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 the User

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:

  • The User wants to use the Client for an action that requires accessing User data in the Breezie Platform.

  • The User agrees to authorize access to his/her data by the Client.

  • The User knows their username and password and is responsible for keeping this information confidential.

  • The communication between User, Client and the Breezie Authorization Service takes place through an internet browser.

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 Server when the client was registered. This field is required.

redirect_uri

URI which the authorization server will send the User browser 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.

Client authorization request example
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.

Login form
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.

Login form
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 Client in the first step if the "state" parameter was present. Otherwise, this parameter is omitted.

Response of the client authorization request example in the first step
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:

  1. Constructs a string by concatenating the Client Id, a single colon : character, and the Client Secret.

  2. Encodes the resulting string into an octet sequence using UTF-8.

  3. The resulting string is encoded using Base64.

  4. 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
Token request Example
$ 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
Token response Example
{
    "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.

Obtaining information of the authenticated User
$ 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.

Refreshing the token
$ 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 Partner on Breezie. A Partner is someone that supports and sponsors one or more Breezie Users. This person has read and write permissions on most of the resources than the sponsored User owns.

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

GET

Used to retrieve a resource

POST

Used to create a new resource

PUT

Used to update an existing resource, replacing the resource for the one sent

PATCH

Used to update an existing resource, including partial updates

DELETE

Used to delete an existing resource

Response Status

Status code Usage

200 OK

The request completed successfully

201 Created

A new resource has been created successfully. The resource’s URI is available from the response’s Location header

204 No Content

An update to an existing resource has been applied successfully

400 Bad Request

The request was malformed. The response body will include an error providing further information

401 Unauthorised

The request was unauthorised

403 Forbidden

The request was authorised but forbidden to access that resource

404 Not Found

The requested resource did not exist

422 Unprocessable Entity

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

timestamp

Number

Unix timestamp the error occurred

code

Number

Unique code of the error that occurred

status

Number

HTTP status code of error

message

String

Short message describing the error

description

String

More detailed description of the error

path

String

The path where the error occurred

exception

String

Java class of the exception that occurred

fieldErrors

Array

Array of field errors explained why the validation failed

fieldErrors[].resource

String

The resource of the failed validation

fieldErrors[].field

String

The field of the resource that failed

fieldErrors[].code

String

The type of validation that failed

fieldErrors[].message

String

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

timestamp

Number

Unix timestamp the error occurred

code

Number

Unique code of the error that occurred

status

Number

HTTP status code of error

message

String

Short message describing the error

description

String

More detailed description of the error

path

String

The path where the error occurred

exception

String

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

id

String

User identifier

username

String

Username assositated with the user

firstName

String

First name of the user

lastName

String

Last name of the user

welcomeNote

String

Welcome message to show during user setup process

familiarity

Number

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'.

profileImageUri

String

Url of the profile image

scope.organizationId

String

ID of the organization that the user belongs to

scope.regionId

String

ID of the region that the user belongs to

scope.campusId

String

ID of the campus that the user belongs to

scope.facilityId

String

ID of the facility that the user belongs to

scope.userId

String

ID of the user (only for breezie users, other roles won’t have value on this field)

sponsors

Array

ID list of users sponsoring this user

roles

Array

Role of the user

sponsees

Array

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

String

Username associated with the user (cannot be changed)

password

String

Password used for login purposes

firstName

String

First name of the user

lastName

String

Last name of the user

welcomeNote

String

Welcome message to show during user setup process

familiarity

Number

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'.

scope.organizationId

String

ID of the organization that the user belongs to

scope.regionId

String

ID of the region that the user belongs to

scope.campusId

String

ID of the campus that the user belongs to

scope.facilityId

String

ID of the facility that the user belongs to

roles

Array

Role of the user

sponsors

Array

ID list of users sponsoring this user

sponsees

Array

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

phoneNumber

String

Telephone number of the user

socialSecurity

String

Social security number of the user

dob

Number

Date of birth of the user

gender

String

Gender of the user

religion

String

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

A sponsorRequest represents an invitation to someone to become the sponsor of a User.

Path Type Description

id

String

Sponsor request identifier

userId

String

Id of the user who wants to be sponsorized

email

String

Email of the person who receives the request

firstName

String

First name of the person who receives the request

lastName

String

Last name of the person who receives the request

message

String

Message that will be received by the person who received the request

redirectUri

String

Url where the person who receives the request will be redirect to complete the process

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"
} ]

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"
}

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

id

String

The organization id

name

String

The name of the organization

country

String

The country the organization is located in

addressLine1

String

The first line of the organization address

addressLine2

String

The second line of the organization address

zipCode

String

The organization zip code

demo

String

Flag indicating if the organization is a demo one or not

createdBy

String

The one who created the organization

createdTime

Long

The time (Unix timestamp) the organization was created

lastUpdatedTime

Long

The time (Unix timestamp) the organization was updated

updatedBy

String

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

id

String

The region id

name

String

The name of the region

country

String

The country the region belongs to

organizationId

String

The organization which the region belongs to

createdBy

String

The one who created the region

createdTime

Long

The time (Unix timestamp) the region was created

lastUpdatedTime

Long

The time (Unix timestamp) the region was updated

updatedBy

String

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

name

String

The name of the region

country

String

The country the region is located in

organizationId

String

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

id

String

The campus id

name

String

The name of the campus

organizationId

String

The identifier of organization which the campus belongs to

regionId

String

The identifier of the region which the campus belongs to

createdBy

String

The one who created the campus

createdTime

Long

The time (Unix timestamp) the campus was created

lastUpdatedTime

Long

The time (Unix timestamp) the campus was updated

updatedBy

String

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

name

String

The name of the campus

regionId

Object

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

id

String

The facility id

name

String

The name of the facility

addressLine1

String

The first line of the facility address

addressLine2

String

The second line of the facility address

city

String

The city the facility is located in

country

String

The country the facility is located in

zipCode

String

The zip code of the facility

organizationId

String

The identifier of organization which the facility belongs to

regionId

String

The identifier of the region which the facility belongs to

campusId

String

The identifier of the campus which the facility belongs to

createdBy

String

The one who created the facility

createdTime

Long

The time (Unix timestamp) the facility was created

lastUpdatedTime

Long

The time (Unix timestamp) the facility was updated

updatedBy

String

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

name

String

The name of the facility

addressLine1

String

The first line of the facility address

addressLine2

String

The second line of the facility address

city

String

The city the facility is located in

country

String

The country the facility is located in

zipCode

String

The facility zip code

campusId

String

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

id

String

Group identifier

name

String

Name the group

imageUrl

String

Image url of the group

backgroundImageUrl

String

Image to show as background for the image icon

backgroundColor

String

Color to show as background for the image icon

description

String

A descriptive note related to the group

parentGroup

String

Group identifier from where this group will inherit content

removedFromParent

Array

List of content identifiers that won’t be inherit from the parent

scope

Object

Scope object holding the access control for the resource

scope.organizationId

String

ID of the organization owning the group

scope.regionId

String

ID of the region owning the group

scope.facilityId

String

ID of the facility owning the group

scope.campusId

String

ID of the campus owning the group

scope.userId

String

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

[].id

String

User identifier

[].username

String

Username of the user

[].firstName

String

First name of the user

[].lastName

String

Last name of the user

[].groupIds

Array

Ids of the groups which the user is subscribed

[].unsubscribedDefaultGroupIds

Array

Ids of the default groups which the user is un-subscribed

[].scope

Object

Scope object holding the access control for the resource

[].scope.organizationId

String

ID of the organization that the user belongs to

[].scope.regionId

String

ID of the region that the user belongs to

[].scope.facilityId

String

ID of the facility that the user belongs to

[].scope.campusId

String

ID of the campus that the user belongs to

[].scope.userId

String

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

id

String

Group Template identifier

name

String

Name of the template

description

String

Description of the template

groups

Array

List of group IDs that belong to the template

scope.organizationId

Null

ID of the organization that the template belongs to

scope.regionId

Null

ID of the region that the template belongs to

scope.campusId

Null

ID of the campus that the template belongs to

scope.facilityId

Null

ID of the facility that the template belongs to

scope.userId

Null

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

id

String

Application identifier

title

String

Title of the application

description

String

Description of the application

iconUrl

String

Image for the icon of the application

smallIconUrl

String

Small image for the icon of the application (128 * 128)

backgroundColor

Null

Color to show as background for the icon

productId

String

Package Name of the application

groupId

String

ID of the group in which this application belongs

showInGroup

Null

ID of the group in which this application will be shown

originalGroup

Null

ID of the group this application belongs to

forced

Boolean

Whether this application should be forced on StartScreen

promote

Boolean

Whether this application should be promoted on StartScreen

hidden

Boolean

Whether this application should be hidden in Interests

blockUninstall

Boolean

Whether to block this application being uninstalled

blockNotification

Boolean

Whether to block this application from showing notifications

tags

Array

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

id

String

Bookmark identifier

url

String

Bookmark url

name

String

Name of the bookmark

imageUrl

String

Image url of the bookmark

backgroundColor

Null

Color to show as background for the image icon

note

String

A descriptive note related to the bookmark

groupId

String

ID of the group in which this bookmark belongs to. It will be overwritten if 'showInGroup' is present§

showInGroup

Null

ID of the group in which this bookmark will be shown

originalGroup

Null

ID of the group in which this bookmark belongs to

forced

Boolean

Whether this bookmark should be forced on StartScreen

promote

Boolean

Whether this bookmark should be promoted on StartScreen

hidden

Boolean

Whether this bookmark should be hidden in Interests

breezieAuthenticationRequired

Boolean

Whether this bookmark should first authenticate with the Breezie system before loading

tags

Array

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

id

String

Device identifier

serialNumber

String

Device serial number

manufacturer

String

Device brand

model

String

Device model

fcmToken

String

Firebase Cloud Messaging token. Used to communicate with the device

androidId

String

Android identifier of the device

userId

String

ID of the user owning the device

enabled

Boolean

Flag indicating if the device is enabled or not

scope

Object

Scope object holding the access control for the resource

scope.organizationId

String

ID of the user’s organization owning the device

scope.regionId

String

ID of the user’s region owning the device

scope.facilityId

String

ID of the user’s facility owning the device

scope.campusId

String

ID of the user’s campus owning the device

scope.userId

String

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

numberOfItems

Number

Maximum number of items to be shown on the device’s screen

items

Array

Sorted list of items candidates to be shown on the device’s screen

items[].title

String

Item title

items[].imageUrl

Varies

Item image url

items[].type

String

Type of the item: APP, BOOKARK, GROUP or EXCEPTIONAL

items[].action

String

Item action to realize when item is clicked on the device

items[].forced

Boolean

Flag that indicates if the item is forced or not

items[].settled

Boolean

Flag that indicates if the item has been manually settled or not

items[].promoted

Boolean

Flag that indicates if the item has been promoted or not

items[].ignored

Boolean

Flag that indicates if the item has been manually ignored or not

items[].hidden

Boolean

Flag that indicates if the item is hidden on the device or not

items[].scope

Varies

Item scope

items[].scope.organizationId

String

Organization id which item belogs to

items[].scope.regionId

String

Region id which item belogs to

items[].scope.campusId

String

Campus id which item belogs to

items[].scope.facilityId

String

Facility id which item belogs to

items[].scope.userId

String

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

numberOfItems

Number

Maximum number of items to be shown on the device’s screen

settledItems

Array

List of items manually selected to be on the start screen

settledItems[].title

String

Item title

settledItems[].imageUrl

Varies

Item image url

settledItems[].type

String

Type of the item: APP, BOOKARK, GROUP or EXCEPTIONAL

settledItems[].action

String

Item action to realize when item is clicked on the device

ignoredItems

Array

List of items manually selected to not be shown on the start screen

ignoredItems[].title

String

Item title

ignoredItems[].imageUrl

String

Item image url

ignoredItems[].type

String

Type of the item: APP, BOOKARK, GROUP or EXCEPTIONAL

ignoredItems[].action

String

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

String

Title of the item to be added

imageUrl

String

Image url of the item to be added

type

String

Type of the item: APP, BOOKARK, GROUP or EXCEPTIONAL

action

String

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 payload on the device.

wipe

Starts the factory reset process on the device.

lock

It will shut down the device screen.

all

Synchronizes all the data in the device: Settings, Groups, Apps, Bookmarks and Start Screen

settings

Synchronizes the device settings.

groups

Synchronizes the groups the user belongs to.

apps

Synchronizes the apps installed on the device.

bookmarks

Synchronizes the bookmarks pushed to the device.

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

messageType

String

type of message to send

data

Object

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

devices

Array

List of devices where the message will be sent

messageType

String

type of message to send

data

Object

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
  } ]
}