Bluedrop Learning Networks API v1 (beta)
The BLN API is organized around REST. Our API is designed to have predictable, resource-oriented URLs and to use HTTP response codes to indicate API errors. We use built-in HTTP features, like HTTP authentication and HTTP verbs, which can be understood by off-the-shelf HTTP clients, and we support cross-origin resource sharing to allow you to interact securely with our API from a client-side web application (though you should remember that you should never expose your secret API key in any public website’s client-side code). JSON will be returned in all responses from the API, including errors.
NOTE: This API is a work in progress and is subject to change without notice.
Authentication ¶
Make sure to only ever do API calls over https
to keep the access token secure. Non-https requests will be rejected.
Access tokens ¶
Return an access tokenPOST/auth/login
Generate and return an access token if the user credentials
(i.e. any confirmed identifier and user password) and
organization id
provided are valid. The token’s duration may but need not be provided, in which case a suitable serves
selected default will be used. Server may also cap any too large duration values.
Once you have an access token you just pass it with every subsequent API call using an Authorization
header and the
Bearer authentication scheme. For example:
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjEwNywib3JnYW5pemF0aW9uSWQiOjEwMCwicmV0dXJuVXJsIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAwLyIsImxvZ2luIjp0cnVlLCJuYmYiOjE0MzMyNzEwNzM1NDgsImV4cCI6MTQzMzg3NjE3MzU0OH0.Lm5ebbMggmO-UYXCFXLo6GqHVGGkgL-G1dvbzbHsHFg
After successful authentication, API /auth/login
will return a JWT encoded login access token
signed using a secret key
. Login access token will contain the following payload structure as a base64 encoded string:
{
login: true,
userId: 100,
organizationId: 200,
returnUrl: null,
exp: 1451016000000
}
where exp
represents the token’s expiration time in milliseconds since the Unix epoch.
A payload
can be extracted from an access token
on the client side (Web Browser) as shown below. You need a base64
decoder library in web browser, e.g. CryptoJs:
var parts = accessToken.split('.');
if (accessToken && parts.length === 3) {
var base64Payload = parts[1];
var words = CryptoJs.enc.Base64.parse(base64Payload);
var payloadAsString = CryptoJs.enc.Utf8.stringify(words);
var payload = JSON.parse(payloadAsString);
}
Example URI
Headers
Content-Type: application/json
Body
{
"username": "Chesley",
"password": "topsecret123",
"organizationId": 1
}
Schema
{
"title": "get access token",
"type": "object",
"properties": {
"username": {
"type": "string",
"maxLength": 255
},
"password": {
"type": "string",
"maxLength": 255,
"minLength": 8
},
"organizationId": {
"type": "integer"
},
"duration": {
"type": "integer"
}
},
"required": [
"username",
"password",
"organizationId"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"accessToken": "b6492cc0188368d08cba353bb6973cf90b736e74f453324b960c3bccfbd220a2"
}
401
Schema
{
"id": "/error.read",
"title": "The standard error object for whenever an error occurs during an API request.",
"type": "object",
"properties": {
"code": {
"description": "The API specific error code.",
"enum": [
"general",
"forbidden",
"internal",
"invalid",
"notFound",
"unauthorized",
"unknown"
]
},
"message": {
"description": "The human readable error message. It will always be in English.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
403
Schema
{
"id": "/error.read",
"title": "The standard error object for whenever an error occurs during an API request.",
"type": "object",
"properties": {
"code": {
"description": "The API specific error code.",
"enum": [
"general",
"forbidden",
"internal",
"invalid",
"notFound",
"unauthorized",
"unknown"
]
},
"message": {
"description": "The human readable error message. It will always be in English.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
SSO Access Token ¶
Return an access tokenPOST/auth/sso-login
Make sure to only ever do API call over HTTPS to keep the access tokens secure and make API request from origin
*.bluedrop.io
. Non-HTTPS requests and requests with unrecognized request origins will be rejected.
Generate SSO JWT token
Each organization is assigned a secret SSO key
used to sign their JWT SSO tokens. And the secret SSO key
must be
known by the bln-API
server.
A valid JWT SSO token must contain the following properties:
-
iat
: Issued At. Time at which token has been generated, encoded as the number of milliseconds since the UNIX epoch. -
exp
: Expire At. Time at which the token will expire and become invalid, encoded as the number of milliseconds since the UNIX epoch. The longest allowed token lifetime is 1 minute. -
identifier
: User Identifier. -
externalId
: Must be unique for each user within a specific organization. -
organizationIdOrKey
: Organization Id or Key, e.g. (10004|blue-yonder-inc). -
role
: User role; allowed values: (admin|member|instructor). -
firstname
: User firstname. -
lastname
: User lastname. -
returnUrl
: When user logs out, they will be redirected to this URL. -
meta
: user meta data and will be stored in database.
An example of valid SSO JWT token:
{
iat: 1432915178000,
exp: 1432915238000,
identifier: "tom@blue-yonder-inc.com",
externalId: "ccdf82c7ef91e928d86893c52b88920e",
organizationIdOrKey: "blue-yonder-inc",
role: "member",
firstname: "Tamkin",
lastname: "Khan",
returnUrl: "https://www.blue-yonder-inc.com",
meta: {
dob: "12 Jan 1990",
paid: true
}
}
No extra properties are allowed.
After successful authentication, API /auth/sso-login
will return a JWT encoded login access token
signed by organization
secret SSO key
. Login access token will contain the following payload structure:
{
login: true,
userId: 100,
organizationId: 200,
returnUrl: "https://www.blue-yonder-inc.com",
exp: 1451016000000
}
where exp
represents the token’s expiration time in milliseconds since the Unix epoch.
Example URI
Headers
Content-Type: application/json
Body
{
"token": "Generated token for SSO login"
}
Schema
{
"type": "object",
"properties": {
"token": {
"type": "string"
}
},
"required": [
"token"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"accessToken": "A login access token.",
"returnUrl": "https://www.organization.com"
}
Permissions ¶
Your permissions within resources will determine what actions you can perform on those resources. The following are all the possible roles and their permissions for all available resources.
Assignment
-
owner
: Owner of assignment.- includes
admin
permission in assignment
- includes
-
admin
: Admin of assignment.- update assignment
- delete assignment
Board
-
owner
: Owner of board.- includes
admin
permission in board
- includes
-
admin
: Admin of board.- update board
- delete board
Post
-
owner
: Owner of post.- includes
admin
permission in post
- includes
-
admin
: Admin of post.- delete post
Class
-
admin
: Admin in class.- delete class
- update class
- add reservation to class
- update reservation in class
- remove reservation from class
- includes
instructor
permission in class - includes
admin
permission for workspaces in class
-
instructor
: Instructor in class.- view reservations in class
- includes
member
permission in class - includes
instructor
permission for workspaces in class
-
member
: Member in class.- view members in class
- includes
member
permission for workspaces in class
Event
-
owner
: Owner of event.- includes
admin
permission in event
- includes
-
admin
: Admin in event.- update event
- delete event
- includes
instructor
permission in event
-
instructor
: Instructor in event.- view events attendance
- update event attendance
Journal Entry
owner
: Owner of journalEntry.- update journalEntry
- delete journalEntry
Message
-
owner
: Owner of message.- view message
-
recipient
: Recipient of message.- view message
- mark the message as read
- delete message
Network
-
admin
: Administrator in network.- delete network
- update network
- add product to network
- remove product from network
- includes
provider
permission in network - includes
admin
permission for child networks - includes
distributor
permission for products distributed to the network - includes
admin
permission for products owned by the network
-
provider
: Provider in network.- update user in network
- remove user from network
- view users in network
- view reports in network
- includes
member
permission in network - includes
provider
permission for the network’s organization - includes
admin
permission for classes owned by the network - includes
provider
permission for products distributed to the network
-
member
: Member in network.- view products in network
-
invitee
: Invitee in network.- reject network invitation
Notification
owner
: Owner of notification.- view notification
- update notification
- delete notification
Organization
-
admin
: Administrator in organization.- delete organization
- update organization
- add category to organization
- update category in organization
- remove category from organization
- add network to organization
- add product to organization
- remove network from organization
- update network in organization
- manage user roles for organization
- update user in organization
- update employer in organization
- remove employer from organization
- remove user from organization
- add competency to organization
- update competency in organization
- remove competency from organization
- remove skill from organization
- view network users in organization
- view learning records in organization
- view networks in organization
- view certificates for all users in organization
- includes
auditor
permission in organization - includes
member
permission in organization - includes
provider
permission in organization - includes
distributor
permission for products published to the organization - includes
admin
permission for organization’s networks - includes
admin
permission for products owned by the organization
-
auditor
: Auditor in organization.- view employers in organization
- view users in organization
- view users’ employers in organization
- view reports in organization
- view product proficiencies in organization
-
provider
: Provider in organization.- add new user to organization
- includes
friend
permission for users in organization
-
member
: Member in organization.- view organization
- view categories in organization
- view employers in organization
- add employer to organization
- view users in organization
- view products in organization
- view employer networks in organization
- view custom links in organization
- view district list in organization
- view product proficiencies in organization
Product
-
admin
: Admin in product.- delete product
- update product
- update sub products
- includes
distributor
permissions in product - includes
admin
permissions on workspace connected to the product and no class
-
distributor
: Distributor for a product published from a different company.- view private users
- includes
provider
permissions in product - includes
instructor
permissions in product
-
provider
: Provider in product.- add class to product
- unregister user from product
- includes
member
permissions in product
-
instructor
: Instructor in product.- includes
member
permissions in product - includes
instructor
permissions on workspace connected to the product and no class
- includes
-
member
: Member in product.- launch product
- view members in product
- includes
member
permissions on subproducts - includes
member
permissions on workspace connected to the product and no class
User
-
owner
: You have ownership over the user account.- update user
- delete user
- update user’s preferences
- view user’s preferences
- view activity feed for user
- view user’s employers
- add new employer for user
- update user’s employer
- delete user’s employer
- view user’s journal entries
- view user’s messages
- view user’s networks
- view user’s notifications
- view user’s organizations
- view user’s products
- view user’s classes
- view user’s workspace events
- register public product
- unregister public product
- join public class
- leave public class
- join public workspace
- leave public workspace
- view user’s certificates
- includes
friend
permission for user
-
friend
: User’s friend.- view user’s private data
Workspace
-
admin
: Admin in workspace.- delete workspace
- update workspace
- add workspace event
- includes
instructor
permission in workspace - includes
admin
permission for events in workspace
-
instructor
: Instructor in workspace.- add resource to workspace
- update resource in workspace
- delete resource in workspace
- add assignment to workspace
- add participation to workspace
- view participation in workspace
- delete participation in workspace
- list attendances in workspace
- add grade-component to workspace
- update grade-component in workspace
- delete grade-component in workspace
- update user assignment grade in workspace
- delete user assignment grade in workspace
- view user assignment grades in workspace
- update user grade in workspace
- delete user grade in workspace
- view user grades in workspace
- includes
member
permission in workspace - includes
admin
permission for assignments in workspace - includes
admin
permission for boards in workspace - includes
instructor
permission for events in workspace - includes
admin
permission for posts in workspace
-
member
: Member in workspace.- add board to workspace
- add post to board in workspace
- view members in workspace
- view assignments in workspace
- view resources in workspace
- view boards in workspace
- view posts on board in workspace
- view grade-components in workspace
Permission API ¶
Current user ACL privileges ¶
Get current user's ACL privilegesGET/user/acl?resource=_
Get a list of current user’s ACL privileges on the requested ACL resources.
Example URI
- resource
array/string
(optional) Default: ``ACL resource(s) for which to return the user’s privileges. Accepts multiple resources as array or comma-separated string.
200
Headers
Content-Type: application/json
Body
{
"resource-1": [
"privilege-A",
"privilege-B",
"privilege-C"
],
"resource-2": [],
"resource-3": [
"privilege-A"
],
"resource-4": [
"privilege-X",
"privilege-Y"
]
}
Errors ¶
We use conventional HTTP response codes to indicate success or failure of an API request. In general, codes
in the 2xx
range indicate success, codes in the 4xx
range indicate an error that resulted from the
provided information (e.g. a required parameter was missing, invalid data, etc.), and codes in the 5xx
range
indicate an error with our servers.
Error Schema
Whenever the API responds with an error, it will have a JSON response that matches the following schema.
{
"id": "/error.read",
"title": "The standard error object for whenever an error occurs during an API request.",
"type": "object",
"properties": {
"code": {
"description": "The API specific error code.",
"enum": ["general", "forbidden", "internal", "invalid", "notFound", "unauthorized", "unknown"]
},
"message": {
"description": "The human readable error message. It will always be in English.",
"type": "string"
}
},
"required": ["code", "message"],
"additionalProperties": false
}
Error Codes
-
general
- Returned when it’s an expected error, but it’s not an invalid schema error. -
forbidden
- Returned when you are authorized, but have insufficient privileges. -
internal
- Returned when the API encounters an unexpected internal error. -
invalid
- Returned when the request failed because the data given did not match the required schema. -
notFound
- Returned when the requested resource was not found. -
unauthorized
- Returned when you are not authorized (not logged in). -
unknown
- Returned when an expected error occurred, but we have no message to return about it.
HTTP Status Code Summary
-
200 OK
- Everything worked as expected. -
400 Bad Request
- Often missing a required parameter. -
401 Unauthorized
- No valid API key provided. -
403 Forbidden
- Access denied. -
404 Not Found
- The requested item doesn’t exist. -
500
,502
,503
,504 Server errors
- something went wrong on our end.
Accounts ¶
User Accounts ¶
Merge user accountsPATCH/user-accounts/:keepUserIdOrIdentifier
By providing a keepUserIdOrIdentifier and a removeUserIdOrIdentifier, the endpoint will merge enrollment records, employment records and network records to the user with the given keepUserIdOrIdentifier. User with the given removeUserIdOrIdentifier will be deleted from the system.
Currently, this endpoint only accepts user IDs or email identifiers (i.e. account.type = ‘email’).
This endpoint can be accessed by:
admin
of the given keepUserIdOrIdentifier and removeUserIdOrIdentifier’s organization
Example URI
- removeUserIdOrIdentifier
string
(required)User ID or user account identifier.
Body
{
"removeUserIdOrIdentifier": "to-be-remove@example.com"
}
Schema
{
"id": "/user-account.patch",
"title": "merge user accounts",
"type": "object",
"properties": {
"removeUserIdOrIdentifier": {
"type": "string",
"maxLength": 255
}
},
"required": [
"removeUserIdOrIdentifier"
],
"additionalProperties": false
}
204
Categories ¶
Add Category ¶
Create a categoryPOST/organizations/{organizationIdOrKey}/categories
Create a new category within a given organization. Must have admin
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
Body
{
"name": "Bluedrop Learning Network",
"description": "Bluedrop Learning Network Courses"
}
Schema
{
"id": "/category.create",
"title": "create a new category",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": [
"string",
"null"
]
}
},
"required": [
"name"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"name": "Bluedrop Learning Network",
"description": "Bluedrop Learning Network Courses",
}
Organization Category ¶
Get a categoryGET/organizations/{organizationIdOrKey}/categories/{categoryId}
Retrieve a category’ details. Must have member
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- categoryId
int
(required)Category ID.
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"name": "Bluedrop Learning Network",
"description": "Bluedrop Learning Network Courses",
}
Update a categoryPUT/organizations/{organizationIdOrKey}/categories/{categoryId}
Update a category. Must have admin
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- categoryId
int
(required)Category ID.
Body
{
"name": "Bluedrop Learning Network",
"description": "Bluedrop Learning Network Courses"
}
Schema
{
"id": "/category.update",
"title": "update a category",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
204
Delete a categoryDELETE/organizations/{organizationIdOrKey}/categories/{categoryId}
Delete a category from a given organization. Must have admin
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- categoryId
int
(required)Category ID.
204
Organization's Category Collection ¶
List Organization's CategoriesGET/organizations/{organizationIdOrKey}/categories?query=_&sort=_&order=_
Get a list of categories within the given organization. Must have member
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- query
string
(optional) Default: nullSearch by category
name
ordescription
.- sort
string
(optional) Default: createdSort the results by
name
,created
, andmodified
.- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"name": "Bluedrop Learning Network",
"description": "Bluedrop Learning Network Courses"
}
{
"id": 200,
"name": "Business Strategy",
"description": null
}
]
Certificates ¶
Generate certificate for a user by learning record registration ID.
Get Certificate ¶
Return certificateGET/certificates/{learningRecordRegistrationId}
Generate a certificate in pdf
format, if user
has completed
the course and
passed
in given learning record
. Will return certificate as chunked bytes stream
.
Get a certificate by learning record registration ID. Must have one of the following permissions:
-
organization
admin
andauditor
permission of the given learningRecordRegistrationId’s user organization -
network
admin
of the given public learningRecordRegistrationId’s user network -
parent network
admin
of the given public learningRecordRegistrationId’s user network -
network
provider
of the given learningRecordRegistrationId’s training provider network -
class
instructor
of the given learningRecordRegistrationId’s class -
owner
of the given learningRecordRegistrationId
Example URI
- learningRecordRegistrationId
Guid
(required)learning record registration ID.
200
Headers
Transfer-Encoding: chunked
400
Schema
{
"id": "/error.read",
"title": "The standard error object for whenever an error occurs during an API request.",
"type": "object",
"properties": {
"code": {
"description": "The API specific error code.",
"enum": [
"general",
"forbidden",
"internal",
"invalid",
"notFound",
"unauthorized",
"unknown"
]
},
"message": {
"description": "The human readable error message. It will always be in English.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
Certificates Collection ¶
List certificatesGET/certificates?classId=_
Generate a list of certificates in pdf
format for a given class. Will return the certificates as chunked bytes stream
.
This endpoint can be accessed by:
member
in an organization:- organization
admin
andauditor
can get all the certificates within the organization - network
admin
can get all public certificates within the network and sub-networks - network
provider
can get all certificates within learningRecords’ training provider networks - class
instructor
can get all the certificates within the class - organization
member
can only get own certificate
- organization
Example URI
- classId
int
(required)class Id.
200
Headers
Transfer-Encoding: chunked
400
Schema
{
"id": "/error.read",
"title": "The standard error object for whenever an error occurs during an API request.",
"type": "object",
"properties": {
"code": {
"description": "The API specific error code.",
"enum": [
"general",
"forbidden",
"internal",
"invalid",
"notFound",
"unauthorized",
"unknown"
]
},
"message": {
"description": "The human readable error message. It will always be in English.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
Organization's Certificate Collection ¶
List Organization's certificatesGET/organizations/{organizationIdOrKey}/certificates?query=_&sort=_&order=_
Get a list of available certificates within the given organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- query
string
(optional) Default: nullSearch by certificate
name
.- sort
string
(optional) Default: certificate.nameSort the results by
certificate.id
, andcertificate.name
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"name": "Bluedrop Learning Network Certificate"
},
{
"id": 200,
"name": "Bluedrop Training & Simulation Certificate"
}
]
Organization Product Certificate ¶
Add certificate to productPOST/organizations/{organizationIdOrKey}/products/{productId}/certificates/{certificateId}
Add a certificate to a product in the organization.
This endpoint can be accessed by:
-
admin
in the organization that owns the given product -
admin
in the product enrollment
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- productId
int
(required)Product ID.
- certificateId
int
(required)Certificate ID.
200
Headers
Content-Type: application/json
Body
{
"product": {
"id": 101,
"name": "Math Program",
"description": "Math Program",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"certificate": {
"id": 100,
"name": "Bluedrop Learning Network Certificate"
}
}
Remove certificate from productDELETE/organizations/{organizationIdOrKey}/products/{productId}/certificates/{certificateId}
Remove a certificate from a product in the organization.
This endpoint can be accessed by:
-
admin
in the organization that owns the given product -
admin
in the product enrollment
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- productId
int
(required)Product ID.
- certificateId
int
(required)Certificate ID.
204
Organization Product Certificates ¶
Get product's certificatesGET/organizations/{organizationIdOrKey}/products/{productId}/certificates
Get a list of certificates for a product in the given organization.
This endpoint can be accessed by:
-
admin
in the organization that owns the given product -
admin
in the product enrollment
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- productId
int
(required)Product ID.
200
Headers
Content-Type: application/json
Body
[
{
"product": {
"id": 101,
"name": "Math Program",
"description": "Math Program",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"certificate": {
"id": 100,
"name": "Bluedrop Learning Network Certificate"
}
},
{
"product": {
"id": 101,
"name": "Math Program",
"description": "Math Program",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"certificate": {
"id": 101,
"name": "Bluedrop Learning Network Certificate - wallet"
}
}
]
Update product certificatesPUT/organizations/{organizationIdOrKey}/products/{productId}/certificates
Update the list of certificates for a product in the organization.
This endpoint can be accessed by:
-
admin
in the organization that owns the given product -
admin
in the product enrollment
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- productId
int
(required)Product ID.
Headers
Content-Type: application/json
Body
{
"certificateIds": [
100,
201
]
}
Schema
{
"id": "/product-certificate.update",
"title": "set a list of certificate ids for a product",
"type": "object",
"properties": {
"certificateIds": {
"type": [
"array",
"null"
],
"items": {
"description": "certificate id",
"type": "integer"
},
"uniqueItems": true
}
},
"required": [
"certificateIds"
],
"additionalProperties": false
}
204
Channels ¶
Channel Collection ¶
List ChannelsGET/channels?organizationId=_&id=_&sort=_&order=_
Get a list of channels within an organization.
Must have admin
permission in given organization.
Example URI
- organizationId
int
(required)Organization ID.
- id
int
(optional)Channel ID.
- sort
string
(optional) Default: nameSort the results by channel
name
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 101,
"organizationId": 100,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
{
"id": 102,
"organizationId": 100,
"name": "Channel B",
"logo": null
}
]
Schema
{
"id": "/channel-array.read",
"title": "channel information array",
"type": "array",
"items": {
"$ref": "/channel.read"
}
}
{
"id": "/channel.read",
"title": "channel information",
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"organizationId": {
"type": "integer"
},
"name": {
"type": "string"
},
"logo": {
"description": "The channel logo",
"oneOf": [
{
"type": "null"
},
{
"$ref": "/file.read"
}
]
}
},
"required": ["id", "organizationId", "name", "logo"],
"additionalProperties": false
}
Classes ¶
Add Class ¶
Add classPOST/products/{productId}/classes
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Add a class to a product, requires one of the following permissions:
This endpoint can be accessed by:
-
admin
in the product’s organization -
admin
orprovider
in the given network that the given product is distributed to
Example URI
- productId
int
(required)Product ID.
Headers
Content-Type: application/json
Body
{
"seats": 15
}
Schema
{
"id": "/class.create",
"title": "add a class",
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 2
},
"description": {
"type": "string"
},
"networkId": {
"type": "integer"
},
"seats": {
"type": "integer",
"minimum": 1
},
"price": {
"type": "number",
"minimum": 0
},
"contact": {
"$ref": "/contact"
},
"address": {
"$ref": "/address"
},
"publishPrice": {
"type": "boolean"
},
"published": {
"type": "boolean"
}
},
"required": [
"networkId",
"seats"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"name": null,
"description": null,
"logo": null,
"price": null,
"seats": {
"total": 15,
"remaining": 3
},
"contact": {},
"address": {
"id": 200,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
},
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
"events": null,
"workspace": {
"id": 100
},
"product": {
"id": 101,
"name": "Math Program",
"minDays": 2,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"xapiActivityId": "tag:bluedrop.io,2016:product:100"
},
"publishPrice": false,
"published": true,
"xapiActivityId": "tag:bluedrop.io,2016:class:100"
}
Class ¶
Get a classGET/classes/{classId}
Retrieve class details.
Example URI
- classId
int
(required)Class ID.
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"name": "My Math Class",
"description": "Class 1 description",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
},
"price": 89.99,
"seats": {
"total": 15,
"remaining": 3
},
"contact": {
"email": {
"type": "work",
"value": "whinstructor@example.com"
}
},
"address": {
"id": 200,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
},
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
"events": {
"start": "2014-08-15T12:00:00.000Z",
"end": "2014-08-16T20:30:00.000Z"
},
"workspace": {
"id": 100
},
"product": {
"id": 101,
"name": "Math Program",
"minDays": 2,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"xapiActivityId": "tag:bluedrop.io,2016:product:100"
},
"publishPrice": true,
"published": true,
"xapiActivityId": "tag:bluedrop.io,2016:class:100"
}
Update classPUT/classes/{classId}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Update class’s details.
This endpoint can be accessed by:
-
admin
in the class organization -
admin
orprovider
in the class’s network -
admin
orinstructor
in the class enrollment: Class instructor is only allowed to updateactive
column.
Example URI
- classId
int
(required)Class ID.
Headers
Content-Type: application/json
Body
{
"seats": 20
}
Schema
{
"title": "Update a class detail",
"type": "object",
"properties": {
"name": {
"type": [
"string",
"null"
],
"maxLength": 255,
"minLength": 2
},
"description": {
"type": [
"string",
"null"
]
},
"seat": {
"type": "integer",
"minimum": 1
},
"price": {
"type": [
"number",
"null"
],
"minimum": 0
},
"contact": {
"$ref": "/contact"
},
"address": {
"$ref": "/address"
},
"logo": {
"type": [
"object",
"null"
],
"properties": {
"url": {
"description": "The url given must be a path on our CDN.",
"type": "string",
"startsWith": "https://bln-content.s3.amazonaws.com/"
}
},
"required": [
"url"
]
},
"publishPrice": {
"type": "boolean"
},
"published": {
"type": "boolean"
},
"active": {
"type": "boolean"
}
},
"required": [],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"name": "My Math Class",
"description": "Class 1 description",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
},
"price": 89.99,
"seats": {
"total": 15,
"remaining": 3
},
"contact": {
"email": {
"type": "work",
"value": "whinstructor@example.com"
}
},
"address": {
"id": 200,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
},
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
"events": {
"start": "2014-08-15T12:00:00.000Z",
"end": "2014-08-16T20:30:00.000Z"
},
"workspace": {
"id": 100
},
"product": {
"id": 101,
"name": "Math Program",
"minDays": 2,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"xapiActivityId": "tag:bluedrop.io,2016:product:100"
},
"publishPrice": true,
"published": true,
"xapiActivityId": "tag:bluedrop.io,2016:class:100"
}
Delete a classDELETE/classes/{classId}
Delete a given class and its resources. A class with any enrollment records cannot be deleted.
This endpoint can be accessed by:
-
admin
in the class’s organization -
admin
orprovider
in the class’s network -
admin
in the class enrollment
Example URI
- classId
int
(required)Class ID.
204
409
Product Class Collection ¶
List all classes for productGET/products/{productId}/classes?networks=_&district=_&beginDateRange=_&endDateRange=_&query=_&published=_&networks=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
Get a list of classes for the given product.
Example URI
- productId
int
(required)Product ID.
- published
boolean
(optional)Filtered by class
published
status.- networks
array/string
(optional) Default: nullFilter by network
id
orkey
. Accepts multipleid
s orkey
s by array or comma-separated string.- district
string
(optional) Default: nullSearch by district of the class address.
- beginDateRange
date
(optional) Default: nullSearch for classes with first event start date from this one. Accept format ‘yyyy-mm-dd’.
- endDateRange
date
(optional) Default: nullSearch for classes with first event start date before this one. Accept format ‘yyyy-mm-dd’.
- query
string
(optional) Default: nullSearch by class
name
.- after
string
(optional) Default: nullRetrieve records with their identifiers after the given identifier.
- before
string
(optional) Default: nullRetrieve records with their identifiers before the given identifier.
- cursorId
int
(optional) Default: nullA primary id to be used in conjunction with
before
orafter
.- limit
int
(optional) Default: 10The maximum number of results returned. Max=100.
- sort
string
(optional) Default: startSort the results by class
id
,name
, orstart
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"name": "class 1",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
},
"description": "Class 1 description",
"price": 89.99,
"seats": {
"total": 15,
"remaining": 3
},
"contact": {
"email": {
"type": "work",
"value": "whinstructor@example.com"
}
},
"address": {
"id": 200,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
},
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
"events": {
"start": "2014-08-15T12:00:00.000Z",
"end": "2014-08-16T20:30:00.000Z"
},
"instructors": [
{
"firstname": "Chesley",
"id": 1,
"lastname": "Brown"
},
{
"firstname": "A$AP",
"id": 2,
"lastname": "Rocky"
}
],
"workspace": {
"id": 102
},
"product": {
"id": 101,
"name": "Math Program",
"minDays": 2,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"xapiActivityId": "tag:bluedrop.io,2016:product:100"
},
"publishPrice": true,
"published": true,
"xapiActivityId": "tag:bluedrop.io,2016:class:100"
},
{
"id": 101,
"name": "class 2",
"logo": null,
"description": null,
"price": null,
"seats": null,
"contact": {},
"address": {},
"events": null,
"instructors": [],
"workspace": {
"id": 101
},
"product": {
"id": 101,
"name": "Math Program",
"minDays": 2,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"publishPrice": false,
"publish": true,
"xapiActivityId": "tag:bluedrop.io,2016:class:101"
}
]
Your Class Registration ¶
Register into class or update class registrationPUT/user/classes/{classId}
Register into a class or update your class registration record. You can only register into the class as a member when there are free seats remaining. If a new employer is specified, the employment information will be automatically registered in the system with the current date as the employment’s start date.
Only organization admins are allowed to update existing enrollment’s employer information.
A user notification will be generated for a new member registration, but no notifications will be generated for classes that have already started.
Example URI
- classId
int
(required)Class ID.
Headers
Content-Type: application/json
Body
{
"role": "member"
}
Schema
{
"id": "/class-user.update",
"title": "add or update class user role",
"type": "object",
"properties": {
"role": {
"type": "string"
},
"reservationId": {
"type": [
"integer",
"null"
]
},
"employerManaged": {
"type": "boolean"
},
"employerId": {
"description": "only organization admin is allowed to update employerId for existing enrollment records",
"type": [
"integer",
"null"
]
},
"paid": {
"type": [
"boolean",
"null"
]
}
},
"required": [],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"class": {
"id": 100,
"name": "My Math Class",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
}
},
"role": "member",
"paid": true,
"reservationId": null,
"employerManaged": true,
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"created": "2014-10-01 10:23:54+02",
"modified": null
},
"enrollmentId": 10001,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
409
Remove from classDELETE/user/classes/{classId}
Remove yourself from a class.
Example URI
- classId
int
(required)Class ID.
204
Your Class Collection ¶
List your class registrationsGET/user/classes?classId=_&productId=_&role=_&sort=_&order=_
Return a list of your class registrations.
Example URI
- classId
int
(optional) Default: nullClass ID.
- productId
int
(optional) Default: nullProduct ID.
- role
array/string
(optional) Default: nullFilter by the class user roles. Accepts multiple roles by array or comma-separated string.
- sort
string
(optional) Default: createdSort the results by enrollment
created
,productId
, productname
,classId
,className
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": true
},
"class": {
"id": 100,
"name": "My Math Class",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
}
},
"role": "member",
"paid": true,
"reservationId": 100,
"enrollmentId": 10001,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
},
{
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"class": {
"id": 200,
"name": "Another Math Class",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
}
},
"role": "member",
"paid": true,
"reservationId": 200,
"enrollmentId": 10002,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
]
Class Registration ¶
Register user to class or update user's class registrationPUT/users/{userId}/classes/{classId}
Register given user to a class or update user’s class registration details. A new member may only be registered into a class when there are free seats remaining. If a new employer is specified, the employment information will be automatically registered in the system with the current date as the employment’s start date.
Must have provider
or admin
permission within the class’s network or admin
permission within the class’s organization. Only organization admins are allowed
to update existing enrollment’s employer information.
A user notification will be sent to the new member for the class that has not started.
Example URI
- userId
int
(required)User ID.
- classId
int
(required)Class ID.
Headers
Content-Type: application/json
Body
{
"role": "member",
"paid": true
}
Schema
{
"id": "/class-user.update",
"title": "add or update class user role",
"type": "object",
"properties": {
"role": {
"type": "string"
},
"reservationId": {
"type": [
"integer",
"null"
]
},
"employerManaged": {
"type": "boolean"
},
"employerId": {
"description": "only organization admin is allowed to update employerId for existing enrollment records",
"type": [
"integer",
"null"
]
},
"paid": {
"type": [
"boolean",
"null"
]
}
},
"required": [],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"class": {
"id": 100,
"name": "My Math Class",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
}
},
"role": "member",
"paid": true,
"reservationId": 100,
"employerManaged": false,
"employer": null,
"enrollmentId": 10001,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
409
Un-register User ¶
Remove user from classDELETE/users/{userId}/classes/{classId}?triggeredByNetworkId=_
Remove a class for a program from a user.
This endpoint can be accessed by either:
-
admin
of employer network within class’s organization -
admin
orprovider
permission within class’s network -
owner
permission of the user
Example URI
- userId
int
(required)User ID.
- classId
int
(required)Class ID.
- triggeredByNetworkId
int
(optional)Network ID that this transaction is triggered from.
204
Class Members Collection ¶
Get member listGET/classes/{classId}/users?networkId=_&role=_&query=_&sort=_&order=_
Get a list of users in the given class.
This endpoint can be accessed by either:
-
admin
in the class’s organization -
admin
orprovider
in the class’s network -
admin
of employer network within class’s organization -
admin
,instructor
ormember
in the class enrollment: UserexternalId
is not included in user object for class enrollment permissions.
Example URI
- classId
int
(required)Class ID.
- networkId
int
(optional) Default: nullFilter members within the given network.
- role
string
(optional) Default: nullFilter by the given roles
member
,instructor
andadmin
. Accepts multiple roles by comma-separated string.- query
string
(optional) Default: nullSearch by user
firstname
orlastname
.- sort
string
(optional) Default: createdSort the results by enrollment
created
or userfirstname
,lastname
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": true
},
"role": "instructor",
"paid": false,
"reservationId": 100,
"employer": null,
"created": "2014-07-26T07:54:41-07:00",
"modified": "2014-08-25T07:54:41-07:00"
},
{
"user": {
"id": 200,
"firstname": "Tim",
"lastname": "Cook",
"avatar": {
"url": null,
"gravatar": "f180e051cef6d1ebd59fc81b2bc7bf5e"
},
"locale": "en-US",
"confirmed": false,
"private": false
},
"role": "member",
"paid": true,
"reservationId": null,
"employerManaged": false,
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"created": "2014-10-01 10:23:54+02",
"modified": null
},
"created": "2013-07-26T07:54:41-07:00",
"modified": "2013-08-25T07:54:41-07:00"
}
]
Class Workspace Collection ¶
List all workspaces in classGET/classes/{classId}/workspaces
Get a list of all workspaces within the given class.
Example URI
- classId
int
(required)Class ID.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"name": "workspace 1",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/workspace-logo.jpg",
"fileName": "workspace-logo.jpg"
},
"product": {
"id": 200,
"name": "Math 101",
"description": "product description",
"logo": null,
"banner": null
},
"class": {
"id": 300,
"name": "Parent Product - Class of 2012",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
}
},
"created": "2014-07-25T07:54:41-07:00",
"modified": "2014-08-25T07:54:41-07:00"
},
{
"id": 110,
"name": "workspace 2",
"logo": null,
"product": {
"id": 201,
"name": "Physics 101",
"description": "product description",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"class": null,
"created": "2014-07-26T07:54:41-07:00",
"modified": "2014-08-25T07:54:41-07:00"
}
]
Distributed Products ¶
Distribute Product ¶
Distribute product to networkPOST/networks/{networkId}/products/{productId}/distributed-products
Distribute a product to a network.
Must have admin
permission with organization or admin
permission with parent network.
Example URI
- networkId
int
(required)Network ID.
- productId
int
(required)Product ID.
Body
{
"openDistribution": true
}
Schema
{
"id": "/distributed-product.create",
"title": "create distributed product",
"type": "object",
"properties": {
"openDistribution": {
"type": "boolean"
}
},
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
"product": {
"id": 101,
"name": "Math Program",
"description": "Math Program",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"openDistribution": false,
"autoAssign": true,
"created": "2015-03-26T12:11:45Z",
"modified": null
}
Schema
{
"id": "/distributed-product.read",
"title": "distributed product information",
"type": "object",
"properties": {
"network": {
"$ref": "/network-basic.read"
},
"product": {
"$ref": "/product-basic.read"
},
"openDistribution": {
"type": "boolean"
},
"autoAssign": {
"type": "boolean"
},
"created": {
"type": "string",
"format": "date-time"
},
"modified": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"required": [
"network",
"product",
"openDistribution",
"autoAssign",
"created",
"modified"
],
"additionalProperties": false
}
409
Update product of networkPUT/networks/{networkId}/products/{productId}/distributed-products
Update a product distribution in a network.
Must have admin
permission with organization or admin
permission with parent network.
Example URI
- networkId
int
(required)Network ID.
- productId
int
(required)Product ID.
Body
{
"openDistribution": true
}
Schema
{
"id": "/distributed-product.update",
"title": "update distributed product",
"type": "object",
"properties": {
"openDistribution": {
"type": "boolean"
}
},
"additionalProperties": false
}
204
Remove product from networkDELETE/networks/{networkId}/products/{productId}/distributed-products
Remove a product from a network.
Must have admin
permission with organization or admin
permission with parent network.
Example URI
- networkId
int
(required)Network ID.
- productId
int
(required)Product ID.
204
Distributed Product Collection ¶
List Distributed ProductsGET/networks/products/distributed-products?networkId=_&productId=_&organizationId=_&networkType=_&productType=_&sort=_&order=_
Get a list of distributed products.
Must have admin
permission with organization, admin
permission with parent network, or member
permission in network.
Example URI
- networkId
int
(optional)Filter by network
id
.- productId
int
(optional)Filter by product
id
.- organizationId
int
(optional)Filter by organization
id
.- networkType
array/string
(optional) Default: nullFiltered by network types. Accepts multiple types by array or comma-separated string. Includes
network
,trainingProvider
,employer
andcohort
.- productType
array/string
(optional) Default: nullFiltered by product types. Accepts multiple types by array or comma-separated string.
- sort
string
(optional) Default: createdSort the results by
created
,modified
,product.name
ornetwork.name
.- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
"product": {
"id": 101,
"name": "Math Program",
"description": "Math Program",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"openDistribution": true,
"autoAssign": true,
"created": "2015-03-26T12:11:45Z",
"modified": null
},
{
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
"product": {
"id": 102,
"name": "Math Program 102",
"description": "Math Program 102",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"openDistribution": false,
"autoAssign": false,
"created": "2015-03-27T12:11:45Z",
"modified": null
}
]
Schema
{
"id": "/distributed-product-array.read",
"title": "distributed product information array",
"type": "array",
"items": {
"$ref": "/distributed-product.read"
}
}
{
"id": "/distributed-product.read",
"title": "distributed product information",
"type": "object",
"properties": {
"network": {
"$ref": "/network-basic.read"
},
"product": {
"$ref": "/product-basic.read"
},
"openDistribution": {
"type": "boolean"
},
"autoAssign": {
"type": "boolean"
},
"created": {
"type": "string",
"format": "date-time"
},
"modified": {
"type": ["string", "null"],
"format": "date-time"
}
},
"required": ["network", "product", "openDistribution", "autoAssign", "created", "modified"],
"additionalProperties": false
}
Employers ¶
Employers ¶
Add an employerPOST/employers
Create a new employer within a given organization.
This endpoint can be accessed by:
admin
ormember
in the given organization.
Example URI
Body
{
"organizationId": 100,
"name": "Bluedrop Learning Network",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "2 Example St.",
"workPhone": "1-709-555-0102"
}
}
Schema
{
"id": "/employer.create",
"title": "create employer",
"type": "object",
"properties": {
"organizationId": {
"type": "integer"
},
"name": {
"type": "string"
},
"externalId": {
"type": "string",
"minLength": 1
},
"address": {
"$ref": "/address"
},
"contact": {
"type": "object",
"properties": {
"workPhone": {
"type": "string"
},
"workEmail": {
"type": "string"
}
},
"additionalProperties": false
}
},
"required": ["organizationId", "name"],
"additionalProperties": false
}
{
"id": "/address",
"title": "address details",
"description": "An Address following the convention of http://microformats.org/wiki/hcard",
"type": "object",
"properties": {
"id": {
"type": ["integer", "null"]
},
"name": {
"type": ["string", "null"]
},
"post-office-box": {
"type": ["string", "null"]
},
"street-address": {
"type": ["string", "null"]
},
"extended-address": {
"type": ["string", "null"]
},
"locality": {
"type": ["string", "null"]
},
"region": {
"type": ["string", "null"]
},
"postal-code": {
"type": ["string", "null"]
},
"country-name": {
"type": ["string", "null"]
},
"district": {
"type": ["string", "null"]
}
},
"required": [],
"additionalProperties": false,
"dependencies": {
"post-office-box": ["street-address"],
"extended-address": ["street-address"]
}
}
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"networkId": null,
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "2 Example St.",
"workPhone": "1-709-555-0102"
},
"canonicalEmployer": null,
"created": "2012-10-01 10:23:54+02",
"modified": null
}
Employers ¶
Update an employerPUT/employers/{employerId}
Update an employer.
Must have admin
permission within the employer organization.
Example URI
- employerId
int
(required)Employer ID.
Body
{
"name": "Bluedrop Employer Network",
"externalId": "aa-bb-cc",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
}
}
Schema
{
"id": "/employer.update",
"title": "update employer",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"externalId": {
"type": "string",
"minLength": 1
},
"address": {
"$ref": "/address"
},
"contact": {
"type": "object",
"properties": {
"workPhone": {
"type": "string"
},
"workEmail": {
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
{
"id": "/address",
"title": "address details",
"description": "An Address following the convention of http://microformats.org/wiki/hcard",
"type": "object",
"properties": {
"id": {
"type": ["integer", "null"]
},
"name": {
"type": ["string", "null"]
},
"post-office-box": {
"type": ["string", "null"]
},
"street-address": {
"type": ["string", "null"]
},
"extended-address": {
"type": ["string", "null"]
},
"locality": {
"type": ["string", "null"]
},
"region": {
"type": ["string", "null"]
},
"postal-code": {
"type": ["string", "null"]
},
"country-name": {
"type": ["string", "null"]
},
"district": {
"type": ["string", "null"]
}
},
"required": [],
"additionalProperties": false,
"dependencies": {
"post-office-box": ["street-address"],
"extended-address": ["street-address"]
}
}
204
Delete an employerDELETE/employers/{employerId}
Delete an employer. The network associated to the employer will be deleted.
Must have admin
permission within the employer organization.
Example URI
- employerId
int
(required)Employer ID.
204
Employer Collection ¶
List employersGET/employers?employerId=_&organizationId=_&externalId=_&name=_&query=_&hasNetwork=_&hasCanonicalEmployer=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get a list of the employers within the given organization.
This endpoint can be accessed by:
admin
,auditor
ormember
in the given organization.
Example URI
- organizationId
int
(required)Organization ID.
- employerId
int
(optional) Default: nullEmployer ID.
- externalId
string
(optional) Default: nullEmployer External ID.
- name
string
(optional) Default: nullFuzzy search on employer
name
.- query
string
(optional) Default: nullSearch partial matches on
name
or exact matches onexternalId
.- hasNetwork
boolean
(optional) Default: nullFiltered by employers having a employer network or not.
- hasCanonicalEmployer
boolean
(optional) Default: nullFiltered by employers having a canonical employer or not.
- after
string
(optional) Default: nullRetrieve records with their identifiers after the given identifier.
- before
string
(optional) Default: nullRetrieve records with their identifiers before the given identifier.
- cursorId
int
(optional) Default: nullA primary id to be used in conjunction with
before
orafter
.- limit
int
(optional) Default: 10The maximum number of results returned. Max=100.
- sort
string
(optional) Default: nameSort the results by
id
,name
orverified
.- when sorting by
verified
, the secondary sorts arename
andid
.
- when sorting by
- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"networkId": 1000,
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "2 Example St.",
"workPhone": "1-709-555-0102"
},
"canonicalEmployer": {
"id": 200,
"name": "employer 200",
"externalId": "100-200",
},
"created": "2012-10-01 10:23:54+02",
"modified": null
},
{
"id": 200,
"name": "employer 200",
"externalId": null,
"networkId": null,
"address": {},
"contact": {},
"canonicalEmployer": null,
"created": "2013-10-01 10:23:54+02",
"modified": null
}
]
Employments ¶
Your Employer ¶
Add a new employment record for yourselfPOST/user/employers/{employerId}/user-employers
Add a new employment record for yourself or accepts an employer invitation. Must have owner
permission for user.
The sharingPreference will be set to TRUE, regardless the previous setting. You will be added as network member if the employer has a network. You will be added as canonical employer network member if the employer has a canonical employer.
Example URI
- employerId
int
(required)Employer ID.
Body
{
"startDate": "2014-07-25"
}
Schema
{
"id": "/user-employer.create",
"title": "add an employer to user",
"type": "object",
"properties": {
"startDate": {
"type": "string",
"format": "date"
}
},
"required": [
"startDate"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"canonicalEmployer": null,
"created": "2012-10-01 10:23:54+02",
"modified": null
},
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": null,
"terminatedBy": null,
"sharingPreference": true,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
Update your employmentPUT/user/employers/{employerId}/user-employers
Update your employment information. Must have owner
permission for user.
You will be removed from the employer network when the employment is terminated or when sharingPreference
is set to
false
. You will be added to the employer’s network when sharingPreference
is set to true
for a current employment.
Example URI
- employerId
int
(required)Employer ID.
Body
{
"endDate": "2015-07-25",
"terminatedBy": "employer"
}
Schema
{
"id": "/user-employer.update",
"title": "update an employer to user",
"type": "object",
"properties": {
"endDate": {
"type": "string",
"format": "date"
},
"terminatedBy": {
"enum": [
"employer",
"employee",
"tp"
]
},
"networkId": {
"description": "networkId is required when it's terminiated by tp",
"type": "integer"
},
"sharingPreference": {
"description": "To share certificates with employers. Only org admin or self can update this flag.",
"type": "boolean"
}
},
"oneOf": [
{
"required": [
"endDate",
"terminatedBy"
]
},
{
"required": [
"sharingPreference"
]
}
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"canonicalEmployer": null,
"created": "2012-10-01 10:23:54+02",
"modified": null
},
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": null,
"terminatedBy": null,
"sharingPreference": true,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
Delete your employment ¶
Delete your employmentDELETE/user/employers/{employerId}/user-employers?startDate=_
Delete your employment record. You will be removed from the employer network.
Example URI
- employerId
int
(required)Employer ID.
- startDate
date
(required)Your employment start date. Accept format ‘yyyy-mm-dd’ only.
204
User's Employer ¶
Add an employer to userPOST/users/{userId}/employers/{employerId}/user-employers
Add an employer to the given user or accepts an employer invitation.
This endpoint can be accessed by either:
-
admin
in the given user’s organization -
self
of the given user
The sharingPreference will be set to TRUE, regardless the previous setting. The user will be added as network member if the employer has a network. The user will be added as canonical employer network member if the employer has a canonical employer.
Example URI
- userId
int
(required)User ID.
- employerId
int
(required)Employer ID.
Body
{
"startDate": "2012-07-25"
}
Schema
{
"id": "/user-employer.create",
"title": "add an employer to user",
"type": "object",
"properties": {
"startDate": {
"type": "string",
"format": "date"
}
},
"required": [
"startDate"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"canonicalEmployer": null,
"created": "2012-10-01 10:23:54+02",
"modified": null
},
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": null,
"terminatedBy": null,
"sharingPreference": true,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
Update user's employerPUT/users/{userId}/employers/{employerId}/user-employers
Update an employer of the given user.
The user will be removed from the employer’s network when the employment is terminated or when sharingPreference
is
set to false
. The user will be added to the employer’s network when sharingPreference
is set to true
for a current
employment. Only organization admin and self are allowed to update sharingPreference
flag.
Must have one of the following permissions:
-
organization
admin
of given user -
network
admin
orprovider
of given user;networkId
is required -
parent network
admin
orprovider
of given user -
self
Example URI
- userId
int
(required)User ID.
- employerId
int
(required)Employer ID.
Body
{
"endDate": "2015-07-25",
"terminatedBy": "employer",
"networkId": 10001
}
Schema
{
"id": "/user-employer.update",
"title": "update an employer to user",
"type": "object",
"properties": {
"endDate": {
"type": "string",
"format": "date"
},
"terminatedBy": {
"enum": [
"employer",
"employee",
"tp"
]
},
"networkId": {
"description": "networkId is required when it's terminiated by tp",
"type": "integer"
},
"sharingPreference": {
"description": "To share certificates with employers. Only org admin or self can update this flag.",
"type": "boolean"
}
},
"oneOf": [
{
"required": [
"endDate",
"terminatedBy"
]
},
{
"required": [
"sharingPreference"
]
}
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"canonicalEmployer": null,
"created": "2012-10-01 10:23:54+02",
"modified": null
},
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": null,
"terminatedBy": null,
"sharingPreference": true,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
Delete user's employment ¶
Delete user's employmentDELETE/users/{userId}/employers/{employerId}/user-employers?startDate=_
Delete employment record of the given user. Must have owner
permission for user.
The user will be removed from the employer network.
Example URI
- userId
int
(required)User ID.
- employerId
int
(required)Employer ID.
- startDate
date
(required)User employment start date. Accept format ‘yyyy-mm-dd’ only.
204
Your Employer Collection ¶
List your employersGET/user/user-employers?employerId=_&sort=_&order=_
Get a list of your employers.
Example URI
- employerId
int
(optional) Default: nullEmployer ID.
- sort
string
(optional) Default: startDateSort the results by employer_user
startDate
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"canonicalEmployer": {
"id": 200,
"name": "employer 200"
},
"created": "2012-10-01 10:23:54+02",
"modified": null
},
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": true
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": null,
"terminatedBy": null,
"sharingPreference": true,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
},
{
"employer": {
"id": 200,
"name": "employer 200",
"externalId": "200-200",
"address": {
"street-address": "2230 Main Street",
"locality": "St. John's",
"postal-code": "A1B 5N2",
"region": "NL",
"country-name": "CA"
},
"canonicalEmployer": null,
"created": "2013-10-01 10:23:54+02",
"modified": null
},
"user": {
"id": 200,
"firstname": "Johns",
"lastname": "Brown",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": "2015-07-25T00:00:00.000Z",
"terminatedBy": "employer",
"sharingPreference": true,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
]
User's Employer Collection ¶
List user's employersGET/users/{userId}/user-employers?employerId=_&organizationId=_&sort=_&order=_
Get a list of the given user’s employers within the given organization.
This endpoint can be accessed by:
-
admin
orauditor
in the given organization -
self
Example URI
- userId
int
(required)User ID.
- employerId
int
(optional) Default: nullEmployer ID.
- organizationId
int
(optional)Organization ID.
- sort
string
(optional) Default: startDateSort the results by employer_user
startDate
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"canonicalEmployer": {
"id": 200,
"name": "employer 200"
},
"created": "2012-10-01 10:23:54+02",
"modified": null
},
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": true
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": null,
"terminatedBy": null,
"sharingPreference": true,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
},
{
"employer": {
"id": 200,
"name": "employer 200",
"externalId": "200-200",
"address": {
"street-address": "2230 Main Street",
"locality": "St. John's",
"postal-code": "A1B 5N2",
"region": "NL",
"country-name": "CA"
},
"contact": {},
"canonicalEmployer": null,
"created": "2013-10-01 10:23:54+02",
"modified": null
},
"user": {
"id": 200,
"firstname": "Johns",
"lastname": "Brown",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": "2015-07-25T00:00:00.000Z",
"terminatedBy": "employer",
"sharingPreference": false,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
]
Employer User Collection ¶
List Employer UsersGET/employer-users?organizationId=_&networkId=_&includeSubNetworks=_&query=_&after=_&before=_&cursorId=_&limit= _&sort=_&order=_
Get a list of employer users.
This endpoint can be accessed by:
-
admin
in the organization withorganizationId
parameter -
admin
in the organization of the network withnetworkId
parameter -
admin
in the network withnetworkId
parameter
Example URI
- organizationId
int
(optional)Organization ID.
- networkId
int
(optional)Network ID.
- includeSubNetworks
boolean
(optional) Default: falseInclude users from child networks. Only applicable when
networkId
is provided.- query
string
(optional) Default: nullSearch by user
username
,firstname
orlastname
.- after
string
(optional) Default: nullRetrieve records with their identifiers after the given identifier.
- before
string
(optional) Default: nullRetrieve records with their identifiers before the given identifier.
- cursorId
int
(optional) Default: nullA primary id to be used in conjunction with
before
orafter
.- limit
int
(optional) Default: 10The maximum number of results returned. Max=100.
- sort
string
(optional) Default: firstnameSort the results by
startDate
,firstname
orlastname
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 1000,
"employer": {
"id": 10001,
"name": "Private Bluedrop Employee Network",
"externalId": "100-100",
"networkId": 100,
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"created": "2014-07-25T07:54:41-07:00",
"modified": null
},
"user": {
"id": 501,
"firstname": "John",
"lastname": "Smith",
"avatar": {
"url": null,
"gravatar": "aa99b351245441b8ca95d54a52d2998c"
},
"locale": "en-US",
"externalId": "aa-bb-cc",
"confirmed": true,
"private": false
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": "2015-07-25T00:00:00.000Z",
"terminatedBy": "employer",
"sharingPreference": true,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
},
{
"id": 2000,
"employer": {
"id": 10001,
"name": "Private Bluedrop Employee Network",
"externalId": "100-100",
"networkId": 100,
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"created": "2014-07-25T07:54:41-07:00",
"modified": null
},
"user": {
"id": 502,
"firstname": "Mary",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "aa99b351245441b8ca95d54a52d2998c"
},
"locale": "en-US",
"externalId": "aa-bb-cc",
"confirmed": true,
"private": true
},
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": null,
"terminatedBy": null,
"sharingPreference": true,
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
]
Events ¶
Add event ¶
Add eventPOST/workspaces/{workspaceId}/events
Add a new event for a given workspace.
This endpoint can be accessed by:
-
admin
in the workspace’s organization. -
admin
orprovider
in the workspace’s class network. -
admin
in the workspace’s class enrollment.
Example URI
- workspaceId
int
(required)Workspace ID.
Headers
Content-Type: application/json
Body
{
"summary": "new summary",
"description": "new description",
"url": "http://www.google.com",
"start": "2014-08-25T07:00:00-07:00",
"end": "2014-08-25T10:00:00-07:00"
}
Schema
{
"title": "Add an event detail",
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"description": {
"type": "string"
},
"url": {
"type": "string"
},
"start": {
"type": "datetime"
},
"end": {
"type": "datetime"
}
},
"required": [
"start"
],
"additionalProperties": false
}
200
Body
{
"id": 100,
"summary": "summary 100",
"description": "description 100",
"url": "http://www.google.com",
"start": "2014-07-25T07:00:00-07:00",
"end": "2014-07-25T10:00:00-08:00"
}
Event ¶
Update eventPUT/events/{eventId}
Update an event.
This endpoint can be accessed by:
-
admin
in the class organization. -
admin
orprovider
in the class network. -
admin
in the class enrollment.
Example URI
- eventId
int
(required)Event ID.
Headers
Content-Type: application/json
Body
{
"summary": "updated summary",
"description": "updated description",
"url": "http://www.google.com",
"start": "2014-08-25T07:00:00-07:00",
"end": "2014-08-25T10:00:00-07:00"
}
Schema
{
"title": "Update an event detail",
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"description": {
"type": "string"
},
"url": {
"type": "string"
},
"start": {
"type": "datetime"
},
"end": {
"type": "datetime"
}
},
"required": [],
"additionalProperties": false
}
200
Body
{
"id": 100,
"summary": "updated summary",
"description": "updated description",
"url": "http://www.google.com",
"start": "2014-07-25T07:00:00-07:00",
"end": "2014-07-25T10:00:00-08:00"
}
Delete eventDELETE/events/{eventId}
Delete an event.
This endpoint can be accessed by:
-
admin
in the class organization. -
admin
orprovider
in the class network. -
admin
in the class enrollment.
Example URI
- eventId
int
(required)Event ID.
204
Workspace Event Collection ¶
Get workspace eventsGET/workspaces/{workspaceId}/events?from=_&to_&query=_&sort=_&order=_
Retrieve all the events for a given workspace.
Example URI
- workspaceId
int
(required)Workspace ID.
- from
date
(optional) Default: nullFiltered by Start date.
- to
date
(optional) Default: nullFiltered by End date.
- query
string
(optional) Default: nullSearch by
summary
.- sort
string
(optional) Default: idSort the results by
id
,start
,end
,summary
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"summary": "summary 100",
"description": "description 100",
"url": "http://www.google.com",
"start": "2014-07-25T07:00:00-07:00",
"end": "2014-07-25T10:00:00-08:00"
},
{
"id": 101,
"summary": "summary 101",
"description": "description 101",
"url": "http://www.google.com",
"start": "2014-07-25T07:00:00-08:00",
"end": "2014-07-25T10:00:00-09:00"
}
]
Class Event Collection ¶
Get class eventsGET/classes/{classId}/events?from=_&to=_&query=_&sort=_&order=_
Retrieve all the events for a given class.
Example URI
- classId
int
(required)Class ID.
- from
date
(optional) Default: nullFiltered by Start date.
- to
date
(optional) Default: nullFiltered by End date.
- query
string
(optional) Default: nullSearch by workspace
name
orsummary
.- sort
string
(optional) Default: idSort the results by
id
,start
,end
,summary
,workspaceName
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"summary": "summary 100",
"description": "description 100",
"url": "http://www.google.com",
"start": "2014-07-25T07:00:00-07:00",
"end": "2014-07-25T10:00:00-08:00",
"workspace": {
"id": 1001,
"name": "Math 100 Workspace",
"logo": null,
"product": {
"id": "1000",
"name": "Nursing 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
}
}
},
{
"id": 101,
"summary": "summary 101",
"description": "description 101",
"url": "http://www.google.com",
"start": "2014-08-25T07:00:00-07:00",
"end": "2014-08-25T10:00:00-08:00",
"workspace": {
"id": 101,
"name": "Math 100 Workspace",
"logo": null,
"product": {
"id": "1000",
"name": "Nursing 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
}
}
},
{
"id": 201,
"summary": "summary 201",
"description": "description 201",
"url": "http://www.google.com",
"start": "2014-09-25T07:00:00-08:00",
"end": "2014-09-25T10:00:00-09:00",
"workspace": {
"id": 200,
"name": "Science 200 Workspace",
"logo": null,
"product": {
"id": "1000",
"name": "Nursing 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
}
}
}
]
Your Event Collection ¶
List your eventsGET/user/events?from=_&to=_&query=_&sort=_&order=_
Get a list of your events.
Example URI
- from
date
(optional) Default: nullFiltered by Start date.
- to
date
(optional) Default: nullFiltered by End date.
- query
string
(optional) Default: nullSearch by event
summary
, workspacename
.- sort
string
(optional) Default: idSort the results by event
id
,start
,end
, workspaceid
,name
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"summary": "summary 100",
"description": "description 100",
"url": "http://www.google.com",
"start": "2014-07-25T07:00:00-07:00",
"end": "2014-07-25T10:00:00-08:00",
"workspace": {
"id": "1001",
"name": "Math 101",
"logo": null,
"product": {
"id": "1000",
"name": "Nursing 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
}
}
},
{
"id": 101,
"summary": "summary 101",
"description": "description 101",
"url": "http://www.google.com",
"start": "2014-07-25T07:00:00-08:00",
"end": "2014-07-25T10:00:00-09:00",
"workspace": {
"id": "1002",
"name": "Physics 101",
"logo": null,
"product": {
"id": "1000",
"name": "Nursing 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
}
}
}
]
User's Event Collection ¶
List user's eventsGET/users/{userId}/events?from=_&to=_&query=_&sort=_&order=_
Get a list of the given user’s events. Must have owner
permissions for user.
Example URI
- userId
int
(required)User ID.
- from
date
(optional) Default: nullFiltered by Start date.
- to
date
(optional) Default: nullFiltered by End date.
- query
string
(optional) Default: nullSearch by event
summary
, workspacename
.- sort
string
(optional) Default: idSort the results by event
id
,start
,end
, workspaceid
,name
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"summary": "summary 100",
"description": "description 100",
"url": "http://www.google.com",
"start": "2014-07-25T07:00:00-07:00",
"end": "2014-07-25T10:00:00-08:00",
"workspace": {
"id": "1001",
"name": "Math 101",
"logo": null,
"product": {
"id": "1000",
"name": "Nursing 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
}
}
},
{
"id": 101,
"summary": "summary 101",
"description": "description 101",
"url": "http://www.google.com",
"start": "2014-07-25T07:00:00-08:00",
"end": "2014-07-25T10:00:00-09:00",
"workspace": {
"id": "1002",
"name": "Physics 101",
"logo": null,
"product": {
"id": "1000",
"name": "Nursing 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
}
}
}
]
Imports ¶
User Imports ¶
Import a user or person recordPOST/user-imports
With the combination of TP network key and uniqueId
as an externalId, this endpoint first checks if the externalId has
already been imported. If it has, skip the process. If not, it searches BLN DB to find a matched user. When a matched
user is found, it links the externalId to the matched user. If not found, it creates a user/account record for the data
with email
provided or create a person record for the data with no email
provided.
This endpoint can be accessed by either:
-
admin
of the given network’s organization -
admin
orprovider
of given provider network
Example URI
Body
{
"networkId": 101,
"userId": "25405",
"uniqueId": "CONT-369120",
"email": "test@example.com",
"firstName": "Petter",
"lastName": "Smith",
"confirmed": true,
"birthYear": 1985,
"homePhone": "1 7781111111",
"mobilePhone": "1 7781112222",
"streetAddress": "1230 Main Street",
"extendedAddress": "P.O. Bo 331",
"city": "Vancouver",
"province": "BC",
"postalCode": "V6T 0S1",
"country": "CA"
}
Schema
{
"id": "/user-import.create",
"title": "import a user/person",
"type": "object",
"properties": {
"networkId": {
"type": "integer"
},
"userId": {
"type": [
"integer",
"null"
]
},
"uniqueId": {
"type": "string"
},
"email": {
"type": [
"string",
"null"
],
"pattern": "^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$",
"maxLength": 255
},
"firstName": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"lastName": {
"type": "string",
"maxLength": 255,
"minLength": 2
},
"confirmed": {
"type": [
"boolean",
"null"
]
},
"birthYear": {
"type": [
"integer",
"null"
],
"minimum": 1920,
"maximum": 2020
},
"homePhone": {
"type": [
"string",
"null"
]
},
"mobilePhone": {
"type": [
"string",
"null"
]
},
"streetAddress": {
"type": [
"string",
"null"
]
},
"extendedAddress": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"province": {
"type": [
"string",
"null"
]
},
"postalCode": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
}
},
"required": [
"networkId",
"uniqueId",
"firstName",
"lastName"
]
}
204
Learning Record Imports ¶
Import a learning recordPOST/learning-record-imports
When learningRecordUniqueId
is not provided, this endpoint imports the learning record and links the record with the
user using externalId (the combination of TP network key and uniqueId
). If learningRecordUniqueId
is provided and
all data are the same as the previous import, skip the process. Otherwise, update the learning record.
This endpoint can be accessed by either:
-
admin
of the given network’s organization -
admin
orprovider
of given provider network
Example URI
Body
{
"networkId": 101,
"uniqueId": "CONT-369120",
"productId": 4001,
"completionStatus": true,
"successStatus": true,
"completionDate": "2016-05-16",
"learningRecordUniqueId": "1234567",
"externalClassId": "COUR-0210-NL-090217-6348",
"instructorUniqueId": "CONT-269745"
}
Schema
{
"id": "/learning-record-import.create",
"title": "import a learning record",
"type": "object",
"properties": {
"networkId": {
"type": "integer"
},
"uniqueId": {
"type": "string"
},
"productId": {
"type": "integer"
},
"completionStatus": {
"type": "boolean"
},
"successStatus": {
"type": "boolean"
},
"completionDate": {
"description": "accept format 'YYYY-MM-DD' only",
"format": "date"
},
"score": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"learningRecordUniqueId": {
"type": [
"integer",
"string",
"null"
]
},
"externalClassId": {
"type": [
"string",
"null"
]
},
"instructorUniqueId": {
"type": [
"string",
"null"
]
}
},
"required": [
"networkId",
"uniqueId",
"productId",
"completionStatus",
"successStatus",
"completionDate"
]
}
204
Networks ¶
Add Network ¶
Create a networkPOST/organizations/{organizationIdOrKey}/networks
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Create a new network within a given organization.
This endpoint can be accessed by either:
-
admin
in the organization -
admin
in the given parent network.
For non-employer networks or adding a network from employerId
, user creating
the network is automatically marked as an admin
for that network.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
Body
{
"name": "Bluedrop Learning Network",
"key": "bluedrop-learning-network",
"description": "Bluedrop Learning Network description",
"anonymousAccess": true,
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "programmer"
},
"otherInfo": {
"grouping": "BLN"
}
}
Schema
{
"id": "/network.create",
"title": "create network",
"type": "object",
"oneOf": [
{
"properties": {
"name": {
"type": "string"
},
"key": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]+[a-z0-9]$",
"maxLength": 50,
"minLength": 2
},
"description": {
"type": "string"
},
"anonymousAccess": {
"type": "boolean"
},
"meta": {
"description": "meta data for determining if a user will autojoin the network when comparing to user.meta. When null, it will be defaulted to {area: [network.key]}.",
"type": "object"
},
"otherInfo": {
"description": "other information about the network",
"type": "object",
"properties": {
"grouping": {
"description": "network grouping",
"type": "string"
},
"cohortAllowed": {
"description": "an indicator that the network has the ability to create child cohort network",
"type": "boolean"
}
}
},
"parentId": {
"description": "networkId that is defined as a parent network of this network. Only administrative users can set this property.",
"type": "integer"
},
"trainingProvider": {
"$ref": "/training-provider.create"
},
"employer": {
"$ref": "/network-employer.create"
},
"cohort": {
"description": "a cohort network. Must have parentId set",
"$ref": "/cohort.create"
}
},
"not": {
"anyOf" : [
{"required": ["trainingProvider", "cohort"]},
{"required": ["employer", "cohort"]},
{"required": ["trainingProvider", "employer"]}
]
},
"dependencies": {
"cohort": ["parentId"]
},
"required": ["name", "key"],
"additionalProperties": false
},
{
"properties": {
"employerId": {
"description": "create an employer network from the given employerId",
"type": "integer"
}
},
"required": ["employerId"],
"additionalProperties": false
}
]
}
{
"id": "/training-provider.create",
"title": "create training provider",
"type": "object",
"properties": {
"address": {
"$ref": "/address"
},
"contact": {
"type": "object",
"properties": {
"workPhone": {
"type": "string"
},
"workEmail": {
"type": "string"
}
},
"required": ["workPhone", "workEmail"],
"additionalProperties": false
},
"company": {
"type": "string"
},
"url": {
"type": "string"
},
"profile": {
"type": "string"
},
"timezone": {
"type": "string"
}
},
"required": ["contact", "timezone"],
"additionalProperties": false
}
{
"id": "/network-employer.create",
"title": "create network-employer",
"type": "object",
"properties": {
"externalId": {
"type": ["string", "null"],
"minLength": 1
},
"address": {
"$ref": "/address"
},
"contact": {
"type": "object",
"properties": {
"workPhone": {
"type": "string"
},
"workEmail": {
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
{
"id": "/cohort.create",
"title": "create a cohort",
"type": "object",
"properties": {
"startDate": {
"description": "Cohort start date. Accept format 'yyyy-mm-dd'",
"type": "string",
"format": "date",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$"
},
"endDate": {
"description": "Cohort end date. Accept format 'yyyy-mm-dd'",
"type": "string",
"format": "date",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$"
}
},
"required": ["startDate"],
"additionalProperties": false
}
{
"id": "/address",
"title": "address details",
"description": "An Address following the convention of http://microformats.org/wiki/hcard",
"type": "object",
"properties": {
"id": {
"type": ["integer", "null"]
},
"name": {
"type": ["string", "null"]
},
"post-office-box": {
"type": ["string", "null"]
},
"street-address": {
"type": ["string", "null"]
},
"extended-address": {
"type": ["string", "null"]
},
"locality": {
"type": ["string", "null"]
},
"region": {
"type": ["string", "null"]
},
"postal-code": {
"type": ["string", "null"]
},
"country-name": {
"type": ["string", "null"]
},
"district": {
"type": ["string", "null"]
}
},
"required": [],
"additionalProperties": false,
"dependencies": {
"post-office-box": ["street-address"],
"extended-address": ["street-address"]
}
}
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"key": "bluedrop-employee-network",
"name": "Bluedrop Learning Network",
"description": "Bluedrop Learning Network description",
"anonymousAccess": true,
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "programmer"
},
"otherInfo": {
"grouping": "BLN"
},
"parentId": null,
"trainingProvider": {
"networkId": 100,
"company": "Bluedrop Performance Learning",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"url": "www.bluedrop.com",
"profile": "Bluedrop Learning Networks provides unique SaaS-based technology that optimize Workforce Training.",
"timezone": "America/Vancouver"
}
}
Organization Network ¶
Get a networkGET/organizations/{organizationIdOrKey}/networks/{networkId}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get a Network within the given Organization and NetworkId that is visible to the
current user based on his networks. Must have member
permission within
organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- networkId
int
(required)Network ID.
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"organization": {
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"name": "Bluedrop Learning Network",
"key": "bluedrop-employee-network",
"description": "Bluedrop Learning Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "programmer"
},
"otherInfo": {
"grouping": "BLN"
},
"trainingProvider": {
"networkId": 100,
"company": "Bluedrop Performance Learning",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"url": "www.bluedrop.com",
"profile": "Bluedrop Learning Networks provides unique SaaS-based technology that optimize Workforce Training.",
"timezone": "America/Vancouver"
},
"role": "member"
}
Update a networkPUT/organizations/{organizationIdOrKey}/networks/{networkId}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Update a network.
This endpoint can be accessed by:
-
admin
in the network organization -
admin
in the network or its parent network
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- networkId
int
(required)Network ID.
Body
{
"name": "Bluedrop Learning Network",
"description": "Bluedrop Learning Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "programmer"
},
"otherInfo": {},
"trainingProvider": {
"company": "Bluedrop Performance Learning",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"url": "www.bluedrop.com",
"profile": "Bluedrop Learning Networks provides unique SaaS-based technology that optimize Workforce Training.",
"timezone": "America/Vancouver"
}
}
Schema
{
"id": "/network.update",
"title": "update network",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"key": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]+[a-z0-9]$",
"maxLength": 50,
"minLength": 2
},
"description": {
"type": "string"
},
"meta": {
"type": "object"
},
"otherInfo": {
"type": "object"
},
"parentId": {
"description": "networkId that is defined as a parent network of this network.",
"type": "integer"
},
"trainingProvider": {
"$ref": "/training-provider.create"
},
"employer": {
"$ref": "/network-employer.create"
},
"cohort": {
"$ref": "/cohort.create"
}
},
"not": {
"anyOf" : [
{"required": ["trainingProvider", "cohort"]},
{"required": ["employer", "cohort"]},
{"required": ["trainingProvider", "employer"]}
]
},
"additionalProperties": false
}
{
"id": "/training-provider.create",
"title": "create training provider",
"type": "object",
"properties": {
"address": {
"$ref": "/address"
},
"contact": {
"type": "object",
"properties": {
"workPhone": {
"type": "string"
},
"workEmail": {
"type": "string"
}
},
"required": ["workPhone", "workEmail"],
"additionalProperties": false
},
"company": {
"type": "string"
},
"url": {
"type": "string"
},
"profile": {
"type": "string"
},
"timezone": {
"type": "string"
}
},
"required": ["contact", "timezone"],
"additionalProperties": false
}
{
"id": "/network-employer.create",
"title": "create network-employer",
"type": "object",
"properties": {
"externalId": {
"type": ["string", "null"],
"minLength": 1
},
"address": {
"$ref": "/address"
},
"contact": {
"type": "object",
"properties": {
"workPhone": {
"type": "string"
},
"workEmail": {
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
{
"id": "/cohort.create",
"title": "create a cohort",
"type": "object",
"properties": {
"startDate": {
"description": "Cohort start date. Accept format 'yyyy-mm-dd'",
"type": "string",
"format": "date",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$"
},
"endDate": {
"description": "Cohort end date. Accept format 'yyyy-mm-dd'",
"type": "string",
"format": "date",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$"
}
},
"required": ["startDate"],
"additionalProperties": false
}
204
Delete a NetworkDELETE/organizations/{organizationIdOrKey}/networks/{networkId}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Delete a network from a given organization. Network with subnetworks can not be deleted.
Classes and enrollments within the network will also be deleted, and enrolled users will receive a notification that the class has been cancelled. These notifications will NOT be sent if the class has already started.
This endpoint can be accessed by:
-
admin
in the network organization -
admin
in the network or its parent network
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- networkId
int
(required)Network ID or Key.
204
Network Collection ¶
List networksGET/networks?organizationId=_&networkId=_&parentId=_&employerId=_&cohortId=_&type=_&externalId=_&query=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get a list of Networks.
This endpoint can be accessed by either:
-
admin
permission within organization -
admin
of employer network within organization -
admin
,provider
orinstructor
of networks to retrieve networks that the user has a role in and their subnetworks and withtype
filter not includingemployer
-
member
permission within organization to retrieve employer networks
Example URI
- organizationId
int
(required)Organization
id
.- networkId
int
(optional)Filter by network
id
.- parentId
int
(optional)Filter by parent network
id
.- employerId
int
(optional)Filter by employer
id
.- cohortId
int
(optional)Filter by cohort
id
.- type
array/string
(optional) Default: nullFiltered by network types. Accepts multiple types by array or comma-separated string. Includes
network
,trainingProvider
,employer
andcohort
.- externalId
string
(optional) Default: nullFilter by
externalId
.- query
string
(optional) Default: nullSearch by network
key
orname
.- after
string
(optional) Default: nullRetrieve records with their identifiers after the given identifier.
- before
string
(optional) Default: nullRetrieve records with their identifiers before the given identifier.
- cursorId
int
(optional) Default: nullA primary id to be used in conjunction with
before
orafter
.- limit
int
(optional) Default: 10The maximum number of results returned. Max=100.
- sort
string
(optional) Default: nameSort the results by
id
orname
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"name": "Bluedrop Learning Network",
"key": "bluedrop-employee-network",
"description": "Bluedrop Learning Network description",
"anonymousAccess": true,
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "programmer"
},
"otherInfo": {
"grouping": "BLN"
},
"parentNetwork": null,
"trainingProvider": {
"networkId": 100,
"company": "Bluedrop Performance Learning",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"url": "www.bluedrop.com",
"profile": "Bluedrop Learning Networks provides unique SaaS-based technology that optimize Workforce Training.",
"timezone": "America/Vancouver"
}
},
{
"id": 101,
"name": "Private Bluedrop Employee Network",
"key": "private-bluedrop-employee-network",
"description": "Private Bluedrop Learning Network description",
"anonymousAccess": false,
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "management"
},
"otherInfo": {},
"parentNetwork": {
"id": 100,
"name": "Parent Network",
"key": "parent-network",
"meta": {}
},
"employer": {
"id": 10001,
"name": "Private Bluedrop Employee Network",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
}
}
},
{
"id": 102,
"name": "Cohort Bluedrop Employee Network",
"key": "Cohort-bluedrop-employee-network",
"description": "Cohort Bluedrop Learning Network description",
"anonymousAccess": false,
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "management"
},
"otherInfo": {},
"parentNetwork": {
"id": 100,
"name": "Parent Network",
"key": "parent-network",
"meta": {}
},
"cohort": {
"id": 10001,
"networkId": "102",
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": "2014-08-25T00:00:00.000Z",
"xapiActivityId": "tag:bluedrop.io,2016:cohort:10001"
}
}
]
Organization's Network Collection ¶
List Organization's networksGET/organizations/{organizationIdOrKey}/networks?role=_&query=_&sort=_&order=_
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get a list of Networks within the given Organization that are visible to the current user based on their networks. Must have member
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- role
array/string
(optional) Default: nullFilter by network user role. Accepts multiple roles by array or comma-separated string.
- query
string
(optional) Default: nullSearch by network
key
orname
.- sort
string
(optional) Default: network.createdSort the results by
network.id
,network.name
,network.created
, androle.created
.- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"organization": {
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"name": "Bluedrop Learning Network",
"key": "bluedrop-employee-network",
"description": "Bluedrop Learning Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "programmer"
},
"otherInfo": {},
"trainingProvider": {
"networkId": 100,
"company": "Bluedrop Performance Learning",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"url": "www.bluedrop.com",
"profile": "Bluedrop Learning Networks provides unique SaaS-based technology that optimize Workforce Training.",
"timezone": "America/Vancouver"
},
"role": "member"
},
{
"id": 101,
"organization": {
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"name": "Private Bluedrop Employee Network",
"key": "private-bluedrop-employee-network",
"description": "Private Bluedrop Employee Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "management"
},
"otherInfo": {},
"trainingProvider": {
"networkId": 100,
"company": "Bluedrop Performance Learning",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"url": "www.bluedrop.com",
"profile": "Bluedrop Learning Networks provides unique SaaS-based technology that optimize Workforce Training.",
"timezone": "America/Vancouver"
},
"role": "provider"
}
]
Organization Network User ¶
Add or update user network rolePUT/organizations/{organizationIdOrKey}/networks/{networkId}/users/{userId}
Add or update a user’s role within a network.
This endpoint can be accessed by:
-
admin
in the network organization -
admin
in the network or its parent network -
admin
,provider
orinstructor
in the network -
Users have to be in parent network in order to be added to a cohort network.
-
Users with
provider
permission are limited to adding, updating or replacingmember
andprovider
user roles within network. -
Users with
instructor
permission are limited to adding, updating or replacingmember
user roles within network. -
When adding a user to an employer network, except for “invitee” role, an employment record will be added.
-
When adding an invitee, an email with an invitation link will be sent to the invitee.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- networkId
int
(required)Network ID.
- userId
int
(required)User ID.
Headers
Content-Type: application/json
Body
{
"role": "provider"
}
Schema
{
"id": "/network-user.update",
"title": "add or update user network role",
"type": "object",
"properties": {
"role": {
"description": "Invited user (user.invited=true) can only be added to network as an invitee",
"enum": [
"admin",
"provider",
"instructor",
"member",
"invitee"
]
},
"autoJoin": {
"type": "boolean"
}
},
"required": [
"role"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"description": "Private Bluedrop Employee Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
},
"otherInfo": {},
"parentNetwork": {
"id": 100,
"name": "Parent Network",
"key": "parent-network",
"meta": {}
},
"trainingProvider": {
"networkId": 100,
"company": "Bluedrop Performance Learning",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"url": "www.bluedrop.com",
"profile": "Bluedrop Learning Networks provides unique SaaS-based technology that optimize Workforce Training.",
"timezone": "America/Vancouver"
}
},
"user": {
"id": 501,
"firstname": "John",
"lastname": "Smith",
"avatar": {
"url": null,
"gravatar": "aa99b351245441b8ca95d54a52d2998c"
},
"locale": "en-US",
"confirmed": true,
"private": false
},
"role": "provider",
"autoJoin": false,
"created": "2015-03-26T12:11:45Z",
"modified": null
}
409
Remove user from networkDELETE/organizations/{organizationIdOrKey}/networks/{networkId}/users/{userId}
Remove a user from a network.
This endpoint can be accessed by:
-
admin
in the network organization -
admin
in the network or its parent network -
admin
,provider
,instructor
orinvitee
in the network -
Users with
provider
orinstructor
permission are not allowed to removeadmin
within network. -
Users with
invitee
permission are limited to remove self from the network. -
User will also be removed from all cohort subnetworks of the given network.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- networkId
int
(required)Network ID.
- userId
int
(required)User ID.
204
Organization's Network User Collection ¶
List Organization's Network UsersGET/organizations/{organizationIdOrKey}/networks/{networkId}/users?role=_&autoJoin=_&query=_&sort=_&order=_
Get a list of users within the given network in the organization. Must have
member
or auditor
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- networkId
int
(required)Network ID.
- role
array/string
(optional) Default: nullFilter by network user role. Accepts multiple roles by array or comma-separated string.
- autoJoin
boolean
(optional) Default: nullFiltered by
autoJoin
status.- query
string
(optional) Default: nullSearch by user
firstname
,lastname
, andusername
.- sort
string
(optional) Default: role.createdSort the results by
role.created
,user.firstname
oruser.lastname
.- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"description": "Public Bluedrop Employee Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
},
"otherInfo": {},
"parentNetwork": null,
"trainingProvider": {
"networkId": 100,
"company": "Bluedrop Performance Learning",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"url": "www.bluedrop.com",
"profile": "Bluedrop Learning Networks provides unique SaaS-based technology that optimize Workforce Training.",
"timezone": "America/Vancouver"
}
},
"user": {
"id": 501,
"firstname": "John",
"lastname": "Smith",
"avatar": {
"url": null,
"gravatar": "aa99b351245441b8ca95d54a52d2998c"
},
"locale": "en-US",
"confirmed": true,
"private": true
},
"role": "provider",
"autoJoin": false,
"created": "2015-03-26T12:11:45Z",
"modified": null
},
{
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"description": "Private Bluedrop Employee Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
},
"otherInfo": {},
"parentNetwork": null,
"employer": {
"id": 10001,
"name": "Private Bluedrop Employee Network",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {}
}
},
"user": {
"id": 601,
"firstname": "Mary",
"lastname": "Smith",
"avatar": {
"url": null,
"gravatar": "da89b3512df341b8caedd54d92d2998c"
},
"locale": "en-US",
"confirmed": true,
"private": false
},
"role": "member",
"autoJoin": true,
"created": "2015-01-26T12:11:45Z",
"modified": null
}
]
Network User Collection ¶
List Network UsersGET/network-users?organizationId=_&networkId=_&userId=_&excludeClassId=_&includeSubNetworks=_&role=_&networkType=_&query=_&after=_&before=_&cursorId=_&limit= _&sort=_&order=_
Get a list of network users within the given organization.
This endpoint can be accessed by either:
-
admin
permission within organization -
member
of network withnetworkId
parameter -
self
of user withuserId
parameter
Network admin
, provider
or instructor
can retrieve member list of given network. Network member
can only
retrieve the member list of given network if he is an instructor in one of given network’s subnetworks.
Example URI
- organizationId
int
(optional)Organization ID.
- networkId
int
(optional)Network ID.
- userId
array/string
(optional)A list of user IDs.
- excludeClassId
int
(optional)Class ID. Filter out users who are enrolled in the given class/offering.
- includeSubNetworks
boolean
(optional) Default: falseInclude users from child networks. Only applicable when
networkId
is provided.- role
array/string
(optional) Default: nullFilter by network user role. Accepts multiple roles by array or comma-separated string.
- networkType
array/string
(optional) Default: nullFiltered by network types. Accepts multiple types by array or comma-separated string. Includes
network
,trainingProvider
,employer
andcohort
.- query
string
(optional) Default: nullSearch by user
username
,firstname
orlastname
.- after
string
(optional) Default: nullRetrieve records with their identifiers after the given identifier.
- before
string
(optional) Default: nullRetrieve records with their identifiers before the given identifier.
- cursorId
int
(optional) Default: nullA primary id to be used in conjunction with
before
orafter
.- limit
int
(optional) Default: 10The maximum number of results returned. Max=100.
- sort
string
(optional) Default: role.createdSort the results by
role.created
,role
,network.id
,network.created
,network.name
,user.firstname
oruser.lastname
.- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"description": "Public Bluedrop Employee Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
},
"otherInfo": {},
"parentNetwork": {
"id": 100,
"name": "Parent Network",
"key": "parent-network",
"meta": {}
},
"trainingProvider": {
"networkId": 100,
"company": "Bluedrop Performance Learning",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {
"workEmail": "work100@gmail.com",
"workPhone": "15005550320"
},
"url": "www.bluedrop.com",
"profile": "Bluedrop Learning Networks provides unique SaaS-based technology that optimize Workforce Training.",
"timezone": "America/Vancouver"
}
},
"user": {
"id": 501,
"firstname": "John",
"lastname": "Smith",
"username": "user1@example.com",
"avatar": {
"url": null,
"gravatar": "aa99b351245441b8ca95d54a52d2998c"
},
"locale": "en-US",
"externalId": "aa-bb-cc",
"confirmed": true,
"private": false
},
"role": "provider",
"autoJoin": false,
"created": "2015-03-26T12:11:45Z",
"modified": null
},
{
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"description": "Private Bluedrop Employee Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
},
"otherInfo": {},
"parentNetwork": {
"id": 100,
"name": "Parent Network",
"key": "parent-network",
"meta": {}
},
"employer": {
"id": 10001,
"name": "Private Bluedrop Employee Network",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {}
}
},
"user": {
"id": 601,
"firstname": "Mary",
"lastname": "Smith",
"username": "user1@example.com",
"avatar": {
"url": null,
"gravatar": "da89b3512df341b8caedd54d92d2998c"
},
"locale": "en-US",
"externalId": null,
"confirmed": true,
"private": true
},
"role": "member",
"autoJoin": true,
"created": "2015-01-26T12:11:45Z",
"modified": null
},
{
"network": {
"id": 102,
"name": "Cohort Bluedrop Employee Network",
"key": "Cohort-bluedrop-employee-network",
"description": "Cohort Bluedrop Learning Network description",
"meta": {
"location": {
"country": "CA",
"province": "NL"
},
"company": "bluedrop",
"job": "management"
},
"otherInfo": {},
"parentNetwork": {
"id": 100,
"name": "Parent Network",
"key": "parent-network",
"meta": {}
},
"cohort": {
"id": 10001,
"networkId": "102",
"startDate": "2014-07-25T00:00:00.000Z",
"endDate": "2014-08-25T00:00:00.000Z",
"xapiActivityId": "tag:bluedrop.io,2016:cohort:10001"
}
},
"user": {
"id": 601,
"firstname": "Mary",
"lastname": "Smith",
"username": "user1@example.com",
"avatar": {
"url": null,
"gravatar": "da89b3512df341b8caedd54d92d2998c"
},
"locale": "en-US",
"externalId": null,
"confirmed": true,
"private": true
},
"role": "instructor",
"autoJoin": false,
"created": "2015-01-26T12:11:45Z",
"modified": null
}
]
Network Subnetworks Collection ¶
List Network SubnetworksGET/network-subnetworks?ids=_&subnetworkType=_&sort=_&order=_
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Provides a list of networks with an array of subnetworks for each given network.
Example URI
- ids
array/string
(required)A list of parent network IDs.
- subnetworkType
array/string
(optional) Default: nullFiltered by network types in
subnetworks
object. Accepts multiple types by array or comma-separated string. Includesnetwork
,trainingProvider
,employer
andcohort
.- sort
string
(optional) Default: nameSort the results by network
name
,created
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 10000,
"key": "bluedrop",
"name": "Parent Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
},
"subnetworks": [
{
"id": 10001,
"key": "bluedrop1",
"name": "Child Bluedrop Learning Network 1",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
{
"id": 10002,
"key": "bluedrop2",
"name": "Child Bluedrop Learning Network 2",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
}
]
},
{
"id": 20000,
"key": "bluedrop2",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
},
"subnetworks": []
}
]
Notifications ¶
Notification ¶
Mark a notification as readPUT/user-notifications/{userNotificationId}
Mark a given notification as read. Must have owner
permission of notification.
Example URI
- userNotificationId
int
(required)User Notification ID.
204
Notifications Collection ¶
List all notifications for a userGET/organizations/{organizationIdOrKey}/user-notifications?unread=_&sort=_&order=_
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
List the requesting notifications for the given user. Will respond in the language requested by the user. You can only access your own notifications.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- unread
boolean
(optional) Default: falseRetrieve all notifications or unread notifications only.
- sort
string
(optional) Default: createdSort the results by notification
created
orkey
.- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"notification": {
"key": "notification_workspace_assignmentSubmitted"
},
"context": {
"user": {
"id": 500,
"firstname": "Chesley",
"lastname": "Brown",
"avatar": {
"url": null,
"gravatar": "1234e051cef6d1ebd59fc81b2bc7bf5e"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"assignment": {
"id": 102,
"name": "assignment 102",
"type": "assignment"
}
},
"read": "2014-07-26T07:54:41-07:00",
"created": "2014-07-25T07:54:41-07:00"
},
{
"id": 200,
"notification": {
"key": "notification_workspace_assignmentGradeSubmitted"
},
"context": {
"user": {
"id": 500,
"firstname": "Chesley",
"lastname": "Brown",
"avatar": {
"url": null,
"gravatar": "1234e051cef6d1ebd59fc81b2bc7bf5e"
},
"locale": "en-CA",
"confirmed": false,
"private": false
},
"assignment": {
"id": 102,
"name": "assignment 102",
"type": "assignment"
},
"grade": {
"given": 0.95,
"calculated": null,
"manual": true
}
},
"read": null,
"created": "2014-08-25T07:54:41-07:00"
},
{
"id": 300,
"notification": {
"key": "notification_workspace_newPost"
},
"context": {
"user": {
"id": 500,
"firstname": "Chesley",
"lastname": "Brown",
"avatar": {
"url": null,
"gravatar": "1234e051cef6d1ebd59fc81b2bc7bf5e"
},
"locale": "en-CA",
"confirmed": true,
"private": true
},
"workspace": {
"id": 1002,
"name": "workspace 1002",
"logo": null
},
"post": {
"id": 100,
"boardId": 1001,
"body": "post body 100"
}
},
"read": null,
"created": "2014-08-20T07:54:41-07:00"
}
]
Organization Users ¶
Add New User ¶
Add New UserPOST/organizations/{organizationIdOrKey}/new-user
This API may perform three separate duties:
- create a new user and add them to the organization
- invite a new user to the organization
- accept a previous invite
A new user may only be created or invited if they are not already related to the the given organization. If the user already exists but is not yet related to the organization, their existing data is updated with the information included in the request.
When adding a new and unconfirmed user account, a notification e-mail will be
sent to the user with further instructions. This notification may be explicitly
disabled by setting disableNewUserEmail
in the request body. If the request
body does not include the user’s password, the sent notification will include an
account activation link taking the user to a page where they can set their
password.
When org admin adding a new and confirmed user account, no notification e-mail will be sent to the user.
This endpoint can be accessed by either:
-
admin
permission within organization to add or invite a new user to the organization -
admin
of employer network within organization to add or invite a new user to the organization -
provider
of provider network within organization to add or invite a new user to the organization -
self
permission to accept an invitee to the organization
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
Headers
Content-Type: application/json
Body
{
"channelId": 101,
"externalId": "111-222-333",
"meta": {
"whatever": "something"
},
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"otherInfo": {
"birthYear": 1978,
"homePhone": "15005550300",
"mobilePhone": "15005550320",
"personalEmail": "tim@example.com",
"workEmail": "work100@gmail.com",
"workPhone": "15005550320",
"jobTitle": "Security Officer"
},
"termsOfServiceAccepted": "2015-03-26T12:11:45Z",
"user": {
"username": "tim@example.com",
"firstname": "Tim",
"lastname": "Cook",
"password": "password",
"locale": "en-CA",
"timezone": "Canada/Newfoundland",
"private": false
}
}
Schema
{
"id": "/organization-user.create",
"title": "add/update a user account and organization-user record",
"type": "object",
"properties": {
"channelId": {
"type": "integer",
"description": "channelId to set the user channel within the organization, only available for administrative logins"
},
"externalId": {
"type": "string",
"description": "externalId for the user within the organization, only available for administrative logins"
},
"address": {
"$ref": "/address"
},
"meta": {
"type": "object",
"description": "meta data to assign the new organization user to networks, only available for administrative logins",
"properties": {}
},
"otherInfo": {
"$ref": "/user.otherInfo"
},
"termsOfServiceAccepted": {
"type": "string",
"format": "date-time"
},
"user": {
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^\\S*$",
"maxLength": 255
},
"password": {
"type": ["string", "null"],
"maxLength": 255,
"minLength": 8
},
"firstname": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"lastname": {
"type": "string",
"maxLength": 255,
"minLength": 2
},
"locale": {
"type": ["string", "null"],
"maxLength": 10,
"minLength": 2
},
"timezone": {
"type": ["string", "null"]
},
"confirmed": {
"description": "Only org admin can set this flag to true",
"const": true
},
"private": {
"description": "Defaulted to false.",
"type": "boolean"
},
"invited": {
"description": "To indicate if the account is an invited account, which usually has empty firstname/lastname. Defaulted to false.",
"type": "boolean"
}
},
"required": ["username", "firstname", "lastname"],
"additionalProperties": false
},
"returnUrl": {
"type": "string"
},
"disableNewUserEmail": {
"description": "New user will not receive activation or welcome system email. Defaulted to false.",
"type": "boolean"
}
},
"required": ["user"],
"additionalProperties": false
}
{
"id": "/user.otherInfo",
"description": "meta data for storing organization user details, such as personal/work email addresses",
"type": "object",
"properties": {
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"birthYear": {
"type": ["integer", "null"],
"minimum": 1920,
"maximum": 2020
},
"dob": {
"description": "mm/dd/yyyy",
"type": ["string", "null"],
"pattern": "^(0[1-9]|1[012])/(0[1-9]|[1-2][0-9]|3[0-1])/[0-9]{4}$"
},
"phone": {
"type": ["string", "null"]
},
"homePhone": {
"type": ["string", "null"]
},
"mobilePhone": {
"type": ["string", "null"]
},
"personalEmail": {
"type": ["string", "null"]
},
"workPhone": {
"type": ["string", "null"]
},
"workEmail": {
"type": ["string", "null"]
},
"jobTitle": {
"type": ["string", "null"]
},
"trades": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"trainingStatus": {
"type": ["string", "null"]
},
"homePhoneContactAllowed": {
"type": "boolean"
},
"mobilePhoneContactAllowed": {
"type": "boolean"
},
"device": {
"type": "object",
"properties": {
"model": {
"type": "string"
},
"platform": {
"type": "string"
},
"os": {
"type": "string"
}
},
"additionalProperties": false
},
"affiliation": {
"type": ["string", "null"]
}
},
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"oneOf": [
{"type": ["boolean", "string", "number", "null"]},
{
"type": "object",
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"type": ["boolean", "string", "number", "null"]
}
},
"additionalProperties": false
},
{
"type": "array",
"items": {
"oneOf": [
{"type": ["string", "boolean", "number"]},
{
"type": "object",
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"type": ["string", "boolean", "number"]
}
},
"additionalProperties": false
}
]
}
}
]
}
},
"additionalProperties": false,
"maxProperties": 100
}
{
"id": "/address",
"title": "address details",
"description": "An Address following the convention of http://microformats.org/wiki/hcard",
"type": "object",
"properties": {
"id": {
"type": ["integer", "null"]
},
"name": {
"type": ["string", "null"]
},
"post-office-box": {
"type": ["string", "null"]
},
"street-address": {
"type": ["string", "null"]
},
"extended-address": {
"type": ["string", "null"]
},
"locality": {
"type": ["string", "null"]
},
"region": {
"type": ["string", "null"]
},
"postal-code": {
"type": ["string", "null"]
},
"country-name": {
"type": ["string", "null"]
},
"district": {
"type": ["string", "null"]
}
},
"required": [],
"additionalProperties": false,
"dependencies": {
"post-office-box": ["street-address"],
"extended-address": ["street-address"]
}
}
202
Headers
Content-Type: application/json
Body
{
"channel": {
"id": 101,
"organizationId": 100,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"externalId": "111-222-333",
"meta": {
"whatever": "something"
},
"otherInfo": {
"birthYear": 1978,
"homePhone": "15005550300",
"mobilePhone": "15005550320",
"personalEmail": "tim@example.com",
"workEmail": "work100@gmail.com",
"workPhone": "15005550320",
"jobTitle": "Security Officer"
},
"termsOfServiceAccepted": "2015-03-26T12:11:45Z",
"user": {
"id": 100,
"firstname": "Tim",
"lastname": "Cook",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"preferences": {
"notifications": {
"sms": false,
"email": true
}
},
"locale": "en-US",
"timezone": "Canada/Newfoundland",
"confirmed": true,
"private": false,
"created": "2014-07-25T10:00:00-09:00"
},
"address": {
"id": 1000,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
}
}
409
Organization User ¶
Get userGET/organizations/{organizationIdOrKey}/users/{userId}
Get a user’s details in an organization. Must have one of the following permissions:
-
admin
orauditor
within organization. -
self
.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- userId
int
(required)User ID.
200
Headers
Content-Type: application/json
Body
{
"id": 10001,
"organization": {
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"role": "admin",
"meta": {
"location": {
"country": "CA",
"province": "Alberta"
},
"trades": [
"wielding",
"plumber",
"hvac"
]
},
"otherInfo": {
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"birthYear": 1978,
"homePhone": "15005550300",
"mobilePhone": "15005550320",
"personalEmail": "tim@example.com",
"workEmail": "work100@gmail.com",
"workPhone": "15005550320",
"jobTitle": "Security Officer",
"learningRecords": {
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx": {
"employerName": "Another employer"
}
}
},
"address": {
"id": 1000,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
},
"termsOfServiceAccepted": "2015-03-26T12:11:45Z",
"externalId": "222-444-666",
"user": {
"id": 200,
"username": "johnny@example.com",
"firstname": "Johnny",
"lastname": "Smithe",
"avatar": {
"url": null,
"gravatar": "aa99b3512df341b8ca95d54a52d2998c"
},
"sms": {
"number": "+15005550007",
"confirmed": false
},
"locale": "ja-JA",
"confirmed": false,
"private": false
},
"channel": {
"id": 101,
"organizationId": 100,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"created": "2012-03-26T12:11:45Z",
"modified": null
}
Update userPUT/organizations/{organizationIdOrKey}/users/{userId}
Update a user’s role within an organization. Must have admin
permission within organization or self
to update
your own record.
For self
, you need to be an existing member in the given organization and can only update otherInfo
and termsOfServiceAccepted
properties.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- userId
int
(required)User ID.
Headers
Content-Type: application/json
Body
{
"role": "member",
"externalId": "111-222-333",
"meta": {
"whatever": "something"
},
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"otherInfo": {
"birthYear": 1978,
"homePhone": "15005550300",
"mobilePhone": "15005550320",
"personalEmail": "tim@example.com",
"workEmail": "work100@gmail.com",
"workPhone": "15005550320",
"jobTitle": "Security Officer",
"trades": [
"engineering",
"marketing"
],
"trainingStatus": "Worker",
"homePhoneContactAllowed": false,
"mobilePhoneContactAllowed": true,
"device": {
"model": "Samsung",
"platform": "Android",
"os": "10.1"
}
},
"termsOfServiceAccepted": "2015-03-26 12:11:45"
}
Schema
{
"id": "/organization-user.update",
"title": "organization admin to insert or update organization user",
"type": "object",
"properties": {
"externalId": {
"type": ["string", "null"]
},
"role": {
"description": "organization user role",
"enum": ["admin", "auditor", "member"]
},
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"meta": {
"description": "meta data to assign the new organization user to networks",
"type": "object",
"properties": {}
},
"otherInfo": {
"$ref": "/user.otherInfo"
},
"termsOfServiceAccepted": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false
}
{
"id": "/organization-user-self.update",
"title": "self to update his/her own organization user record",
"type": "object",
"properties": {
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"otherInfo": {
"$ref": "/user.otherInfo"
},
"termsOfServiceAccepted": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false
}
{
"id": "/user.otherInfo",
"description": "meta data for storing organization user details, such as personal/work email addresses",
"type": "object",
"properties": {
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"birthYear": {
"type": ["integer", "null"],
"minimum": 1920,
"maximum": 2020
},
"dob": {
"description": "mm/dd/yyyy",
"type": ["string", "null"],
"pattern": "^(0[1-9]|1[012])/(0[1-9]|[1-2][0-9]|3[0-1])/[0-9]{4}$"
},
"phone": {
"type": ["string", "null"]
},
"homePhone": {
"type": ["string", "null"]
},
"mobilePhone": {
"type": ["string", "null"]
},
"personalEmail": {
"type": ["string", "null"]
},
"workPhone": {
"type": ["string", "null"]
},
"workEmail": {
"type": ["string", "null"]
},
"jobTitle": {
"type": ["string", "null"]
},
"trades": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"trainingStatus": {
"type": ["string", "null"]
},
"homePhoneContactAllowed": {
"type": "boolean"
},
"mobilePhoneContactAllowed": {
"type": "boolean"
},
"device": {
"type": "object",
"properties": {
"model": {
"type": "string"
},
"platform": {
"type": "string"
},
"os": {
"type": "string"
}
},
"additionalProperties": false
},
"affiliation": {
"type": ["string", "null"]
}
},
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"oneOf": [
{"type": ["boolean", "string", "number", "null"]},
{
"type": "object",
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"type": ["boolean", "string", "number", "null"]
}
},
"additionalProperties": false
},
{
"type": "array",
"items": {
"oneOf": [
{"type": ["string", "boolean", "number"]},
{
"type": "object",
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"type": ["string", "boolean", "number"]
}
},
"additionalProperties": false
}
]
}
}
]
}
},
"additionalProperties": false,
"maxProperties": 100
}
{
"id": "/address",
"title": "address details",
"description": "An Address following the convention of http://microformats.org/wiki/hcard",
"type": "object",
"properties": {
"id": {
"type": ["integer", "null"]
},
"name": {
"type": ["string", "null"]
},
"post-office-box": {
"type": ["string", "null"]
},
"street-address": {
"type": ["string", "null"]
},
"extended-address": {
"type": ["string", "null"]
},
"locality": {
"type": ["string", "null"]
},
"region": {
"type": ["string", "null"]
},
"postal-code": {
"type": ["string", "null"]
},
"country-name": {
"type": ["string", "null"]
},
"district": {
"type": ["string", "null"]
}
},
"required": [],
"additionalProperties": false,
"dependencies": {
"post-office-box": ["street-address"],
"extended-address": ["street-address"]
}
}
200
Headers
Content-Type: application/json
Body
{
"id": 10001,
"organization": {
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"role": "admin",
"meta": {
"location": {
"country": "CA",
"province": "Alberta"
},
"trades": [
"wielding",
"plumber",
"hvac"
]
},
"otherInfo": {
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"birthYear": 1978,
"homePhone": "15005550300",
"mobilePhone": "15005550320",
"personalEmail": "tim@example.com",
"workEmail": "work100@gmail.com",
"workPhone": "15005550320",
"jobTitle": "Security Officer",
"learningRecords": {
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx": {
"employerName": "Another employer"
}
}
},
"address": {
"id": 1000,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
},
"termsOfServiceAccepted": "2015-03-26T12:11:45Z",
"externalId": "222-444-666",
"user": {
"id": 200,
"username": "johnny@example.com",
"firstname": "Johnny",
"lastname": "Smithe",
"avatar": {
"url": null,
"gravatar": "aa99b3512df341b8ca95d54a52d2998c"
},
"sms": {
"number": "+15005550007",
"confirmed": false
},
"locale": "ja-JA",
"confirmed": false,
"private": false
},
"channel": {
"id": 101,
"organizationId": 100,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"created": "2012-03-26T12:11:45Z",
"modified": null
}
Organization Users Collection ¶
List usersGET/organizations/{organizationIdOrKey}/users?role=_&networks=_&excludeInvited=_&query=_&queryOn=_&search=_&searchMethod=_&searchOperator=_&after=_&before=_&cursorId=_&limit=_&sort=_&sortData=_&order=_
Get a list of users within the given organization. Must have one of the following permissions:
-
admin
orauditor
within organization. -
admin
orprovider
of a network in the organization: Eithernetworks
orsearch
filter is required. Usesearch
filter to search against all users within the organization. Withnetworks
filter, it will only return the users within your networks or child networks.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- role
string
(optional) Default: nullFilter by the given roles
member
oradmin
. Accepts multiple roles by comma-separated string.- networks
array/string
(optional) Default: nullFilter by network
id
orkey
. Accepts multipleid
s orkey
s by array or comma-separated string.- excludeInvited
boolean
(optional) Default: trueExclude users whose accounts are in
invited
status.- query
string
(optional) Default: nullSearch by user firstname, lastname, username, external ID, phone numbers, and email addresses.
- queryOn
array/string
(optional) Default: userSpecify search areas. Accepts
user
,organization
, andorganizationUser
by array or comma-separated string.- search
string
(optional) Default: nullSearch by a stringify object. Allowed columns are
firstname
,lastname
,identifier
,emailIdentifier
,personalEmail
,workEmail
,email
,homePhone
,mobilePhone
,workPhone
,phone
,birthYear
,street-address
,locality
, andpostal-code
. Accept multiple search values in an array format forexact
search method. Example:{firstname: ['Tom', 'Mary'], birthYear: 1985, homePhone: null}
- searchMethod
string
(optional) Default: exactSearch using
exact
,partial
orfuzzy
method.- searchOperator
string
(optional) Default: andSearch using
and
oror
operator.- after
string
(optional) Default: nullRetrieve records with their identifiers after the given identifier.
- before
string
(optional) Default: nullRetrieve records with their identifiers before the given identifier.
- cursorId
int
(optional) Default: nullA primary id to be used in conjunction with
before
orafter
.- limit
int
(optional) Default: 10The maximum number of results returned. Max=100. If “limit” is not given, it’s defaulted to
100
.- sort
string
(optional) Default: createdSort the results by
created
,firstname
,lastname
, ormatchedBirthYear
.-
When sorting by
firstname
orlastname
, the secondary sort iscreated
. -
When sorting by
matchedBirthYear
, the secondary sorts are the distance between postalCode andcreated
.
-
- sortData
string
(optional) Default: nullA stringify object.
- When sorting by
matchedBirthYear
,birthYear
is requried.postalCode
is optional. Example:{"birthYear":"1985","postalCode":"A0A0A1"}
- When sorting by
- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 10001,
"organization": {
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"role": "admin",
"externalId": "222-444-666",
"meta": {
"location": {
"country": "CA",
"province": "Alberta"
},
"trades": [
"wielding",
"plumber",
"hvac"
]
},
"otherInfo": {
"birthYear": 1978,
"homePhone": "15005550300",
"workEmail": "work100@gmail.com",
"mobilePhone": "15005550320",
"personalEmail": "tim@example.com",
"jobTitle": "Security Officer"
},
"address": {},
"termsOfServiceAccepted": "2015-03-26T12:11:45Z",
"user": {
"id": 100,
"username": "tim@example.com",
"firstname": "Tim",
"lastname": "Cook",
"avatar": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"gravatar": "da89b3512df341b8caedd54d92d2998c"
},
"sms": {
"number": "+15005550006",
"confirmed": true
},
"locale": "en-CA",
"confirmed": true,
"private": true
},
"channel": {
"id": 101,
"organizationId": 100,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"created": "2012-03-26T12:11:45Z",
"modified": null
},
{
"id": 20001,
"organization": {
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"role": "member",
"externalId": "222-444-777",
"meta": {
"location": {
"country": "CA",
"province": "Newfoundland"
},
"trades": [
"wielding",
"plumber",
"hvac"
]
},
"otherInfo": {
"birthYear": 1988,
"homePhone": "15005550300",
"workEmail": "work200@gmail.com",
"mobilePhone": "15005550320",
"personalEmail": "johnny.smithe@gmail.com",
"jobTitle": "Office Assistent"
},
"address": {},
"termsOfServiceAccepted": null,
"user": {
"id": 200,
"username": "johnny@example.com",
"firstname": "Johnny",
"lastname": "Smithe",
"avatar": {
"url": null,
"gravatar": "aa99b3512df341b8ca95d54a52d2998c"
},
"sms": {
"number": "+15005550007",
"confirmed": false
},
"locale": "ja-JA",
"confirmed": false,
"private": false
},
"channel": null,
"created": "2012-11-26T12:11:45Z",
"modified": null
}
]
Organizations ¶
Organizations are used to manage collections of networks.
Organization ¶
Get organizationGET/organizations/{organizationIdOrKey}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get the details of the given organization. Basic information about an organization is always public
.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"theme": {
"headerBgColor": "#ffffff",
"themeColor": "#000000"
},
"configuration": {
"termsOfService": "http://organization/termsOfService.html",
"homepageUrl": "http://www.bluedrop.com",
"homepageNewUserUrl": "www.bluedrop.com/new-user.html"
},
"created": "2014-07-25T07:54:41-07:00"
}
Update organizationPUT/organizations/{organizationIdOrKey}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Update properties of the given organization. Must have admin
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
Headers
Content-Type: application/json
Body
{
"name": "Awesome Inc."
}
Schema
{
"id": "/organization.update",
"title": "update organization",
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 2
},
"logo": {
"type": [
"object",
"null"
],
"properties": {
"url": {
"description": "The url given must be a path on our CDN.",
"type": "string"
}
},
"required": [
"url"
],
"additionalProperties": false
},
"theme": {
"type": "object",
"properties": {
"headerBgColor": {
"type": "string",
"pattern": "^#([A-Fa-f0-9]{6})$"
},
"themeColor": {
"type": "string",
"pattern": "^#([A-Fa-f0-9]{6})$"
}
},
"additionalProperties": false
},
"configuration": {
"type": "object",
"properties": {
"termsOfService": {
"type": [
"string",
"null"
]
},
"homepageUrl": {
"type": [
"string",
"null"
]
},
"homepageNewUserUrl": {
"type": [
"string",
"null"
]
},
"tokenDurations": {
"description": "Token durations given in seconds. If not set, standardized default values will be used instead.",
"type": [
"object",
"null"
],
"properties": {
"short": {
"type": "integer"
},
"regular": {
"type": "integer"
}
},
"required": [
"short",
"regular"
],
"additionalProperties": false
},
"defaultTokenType": {
"description": "Default token type. If not set, a standardized default value will be used instead.",
"enum": [
"short",
"regular",
null
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"theme": {
"headerBgColor": "#ffffff",
"themeColor": "#000000"
},
"configuration": {
"termsOfService": "http://organization/termsOfService.html",
"homepageUrl": "http://www.bluedrop.com",
"homepageNewUserUrl": "www.bluedrop.com/new-user.html"
},
"created": "2014-07-25T07:54:41-07:00"
}
Delete organizationDELETE/organizations/{organizationIdOrKey}
Delete the given organization. Must have admin
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
204
Organization Custom Links ¶
Get organization custom linksGET/organizations/{organizationIdOrKey}/custom-links
Get the custom links of the given organization.
Must have member
or admin
permission within organization.
For member
, it will return a list of objects with name
and url
properties.
If a webhook
is set, url
value will be null
.
For admin
, webhook
property and value will be returned.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
200
Headers
Content-Type: application/json
Body
[
{
"name": {
"default": "Google"
},
"url": "http://www.google.ca"
},
{
"name": {
"default": "Facebook - localized to en",
"es": "Facebook - localized to es",
"hr": "Facebook - localized to hr"
},
"webhook": "http://facebook.com"
}
]
Update organization custom linksPUT/organizations/{organizationIdOrKey}/custom-links
Update custom links of the given organization.
Must have admin
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
Headers
Content-Type: application/json
Body
[
{
"name": {
"default": "new Google - localized to en",
"es": "new Google - localized to es",
"hr": "new Google - localized to hr"
},
"url": "http://www.google.ca"
},
{
"name": {
"default": "Facebook"
},
"webhook": "http://facebook.com"
}
]
Schema
{
"id": "/organization-custom-link.update",
"title": "insert or update organization custom link",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/nameLocalizations"
},
"url": {
"type": "string"
},
"webhook": {
"type": "string"
}
},
"oneOf": [
{
"required": [
"url"
]
},
{
"required": [
"webhook"
]
}
],
"required": [
"name"
],
"additionalProperties": false
},
"definitions": {
"nameLocalizations": {
"type": "object",
"patternProperties": {
".": {
"$ref": "#/definitions/name"
}
},
"required": [
"default"
],
"additionalProperties": false
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 2
}
}
}
204
Process Custom Link ¶
Get organization custom link for a webhook linkGET/organizations/{organizationIdOrKey}/custom-links/{customLinkIndex}
Get the redirect URL from by resolving a custom link’s webhook at customLinkIndex
.
If a webhook is not set for the custom-link it will return the url of that custom-link.
Must have member
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- customLinkIndex
int
(required)Index of the custom link array.
200
Headers
Content-Type: application/json
Body
{
"name": {default: "Google"},
"url": "http://www.google.ca"
}
417
Organization Districts Collection ¶
Get district listGET/organizations/{organizationIdOrKey}/districts?productId=_&networkId=_
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get a list of districts. Must have member
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- productId
int
(optional)Filter addresses of all classes within the given productId.
- networkId
int
(optional)Filter addresses of all classes within the given networkId.
200
Headers
Content-Type: application/json
Body
[
"Bonavista North - Gander",
"Corner Brook",
"St. John's"
]
Your Organization Collection ¶
List your organizationsGET/user/organizations?key=_&role=_&query=_&sort=_&order=_
List organizations you have access to.
Example URI
- key
string
(optional) Default: nullFilter by the given organization
key
.- role
string
(optional) Default: nullFilter by the given roles
member
andadmin
. Accepts multiple roles as a comma-separated string.- query
string
(optional) Default: nullSearch by
key
orname
.- sort
string
(optional) Default: organizationIdSort the results by
organizationId
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 10001,
"organization": {
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"meta": {
"whatever": "something"
},
"otherInfo": {
"birthYear": 1978,
"homePhone": "15005550300",
"workEmail": "work100@gmail.com",
"mobilePhone": "15005550320",
"personalEmail": "tim@example.com"
"jobTitle": "Security Officer"
},
"termsOfServiceAccepted": "2015-03-26T12:11:45Z",
"externalId": "222-444-666",
"role": "admin",
"address": {},
"user": {
"id": 100,
"firstname": "Tim",
"lastname": "Cook",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"channel": {
"id": 101,
"organizationId": 100,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"created": "2012-03-26T12:11:45Z",
"modified": null
},
{
"id": 20001,
"organization": {
"id": 100,
"key": "AwesomeInc",
"name": "Awesome Inc.",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"meta": {
"whatever": "something"
},
"otherInfo": {
"birthYear": 1988,
"homePhone": "15005550300",
"workEmail": "work200@gmail.com",
"mobilePhone": "15005550320",
"personalEmail": "johnny.smithe@gmail.com",
"jobTitle": "Office Assistent"
},
"termsOfServiceAccepted": "2015-03-26T12:11:45Z",
"externalId": null,
"role": "member",
"address": {},
"user": {
"id": 200,
"firstname": "Johnny",
"lastname": "Smithe",
"avatar": {
"url": null,
"gravatar": "aa99b3512df341b8ca95d54a52d2998c"
},
"locale": "en-US",
"confirmed": true,
"private": true
},
"channel": null,
"created": "2012-11-26T12:11:45Z",
"modified": null
}
]
Products ¶
A Product is a Learning Activity or a group of Learning Activities that can be sold. They have a minimum price, pricing rules and can have multiple prices depending on the Organization, Learning Network, time, etc.
Add Product ¶
Create productPOST/products
Create a new product. Must have admin
permission within organization or network.
Example URI
Headers
Content-Type: application/json
Schema
{
"id": "/product.create",
"title": "create a product",
"type": "object",
"allOf": [
{
"$ref": "/product.create-update-common"
},
{
"properties": {
"organizationId": {},
"networkId": {},
"name": {},
"type": {},
"price": {},
"minDays": {},
"description": {},
"locale": {},
"published": {},
"archived": {},
"anonymousAccess": {},
"deleted": {},
"banner": {},
"logo": {},
"license": {},
"categoryIds": {},
"requirements": {},
"manifestUrl": {
"description": "The url of the SCORM 2004, SCORM 1.2 or Tin Can manifest file. It is expects that the course package contents will be available in the same directory as the manifest file pointed to by the manifest url.",
"type": "string",
"format": "uri"
},
"otherInfo": {},
"authorizationRequired": {},
"validationRule": {},
"externalId": {}
},
"additionalProperties": false,
"required": ["organizationId", "name", "type", "license"]
}
]
}
{
"id": "/product.create-update-common",
"title": "common for create and update of a product",
"type": "object",
"properties": {
"organizationId": {
"type": ["integer"]
},
"networkId": {
"type": ["integer"]
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"type": {
"enum": ["certification", "docebo", "newprogram", "offline", "online", "onlineOffering", "program", "virtual"]
},
"price": {
"description": "product price",
"type": ["number", "null"],
"minimum": 0
},
"minDays": {
"description": "minimum offering length on offline product",
"type": ["integer", "null"]
},
"description": {
"description": "product description.",
"type": "string"
},
"locale": {
"type": ["string", "null"],
"maxLength": 10,
"minLength": 2
},
"published": {
"description": "published status. Defaulted to false",
"type": "boolean"
},
"archived": {
"type": "boolean"
},
"anonymousAccess": {
"type": "boolean"
},
"deleted": {
"type": "boolean"
},
"banner": {
"type": ["object", "null"],
"properties": {
"url": {
"description": "The url given must be a path on our CDN.",
"type": "string"
}
},
"required": ["url"],
"additionalProperties": false
},
"logo": {
"type": ["object", "null"],
"properties": {
"url": {
"description": "The url given must be a path on our CDN.",
"type": "string"
}
},
"required": ["url"],
"additionalProperties": false
},
"license": {
"type": "object",
"properties": {
"duration": {
"description": "license in number of months",
"type": ["integer", "null"]
},
"certificateExpiry": {
"description": "certificate expiry in number of months",
"type": "integer"
}
},
"required": ["duration"],
"additionalProperties": false
},
"categoryIds": {
"type": "array",
"items": {
"type": "integer"
},
"minItems": 1,
"uniqueItems": true
},
"requirements": {
"type": "object",
"properties": {
"browsers": {
"type": "string"
},
"plugins": {
"type": "string"
},
"settings": {
"type": "string"
}
},
"additionalProperties": false
},
"otherInfo": {
"type": "object",
"properties": {
"workEmail": {
"type": "string",
"format": "email"
},
"agreementURL": {
"type": "string"
},
"passingScore": {
"type": "number",
"minimum": 0.01,
"maximum": 1
},
"prerequisiteWarning": {
"type": "string"
}
},
"additionalProperties": false
},
"authorizationRequired": {
"type": "object",
"properties": {
"network": {
"type": "boolean"
},
"instructor": {
"type": "boolean"
}
},
"additionalProperties": false
},
"validationRule": {
"type": "object",
"properties": {
"maxNumSeatAllowedPerClass": {
"type": "integer"
},
"minNumInstructor": {
"type": "integer"
},
"minNumEvaluator": {
"type": "integer"
},
"learnerInstructorRatio": {
"type": "integer"
}
},
"additionalProperties": false
},
"externalId": {
"type": "string",
"pattern": "^[a-zA-Z0-9-]+$",
"minLength": 1
}
}
}
200
Headers
Content-Type: application/json
Body
{
"name": "New WHMIS Certification",
"price": 19.99,
"minDays": null,
"type": "program",
"description": "course description",
"locale": "en-CA",
"networkId": 100,
"workspaceId": 10001,
"published": false,
"archived": false,
"anonymousAccess": false,
"license": {
"duration": 12,
"certificateExpiry": 24
},
"content": {
"standard": "scorm2004",
"requirements": {
"browsers": "Chrome, Safari, Firefox",
"plugins": "Flash",
"settings": "At least 1024x764 screen resolution"
},
"updated": null
},
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"certificates": [],
"categories": [
{
"id": 1,
"name": "cooking"
}
],
"otherInfo": {
"workEmail": "productContact@example.com",
"agreementURL": "http://www.aaa.com/productAgreementUrl.html"
},
"authorizationRequired": {
"network": true,
"instructor": false
}
}
Product ¶
Get productGET/products/{productId}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get details of the given Product. Must be an authenticated user.
Example URI
- productId
int
(required)Product ID.
200
Body
{
"id": 100,
"name": "WHMIS Certification",
"price": 9.99,
"minDays": null,
"type": "program",
"locale": "en-CA",
"networkId": 100,
"workspaceId": 10001,
"published": true,
"archived": false,
"anonymousAccess": false,
"description": "description",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"license": {
"duration": 12,
"certificateExpiry": 12
},
"certificates": [
{
"id": 1001,
"name": "Bluedrop_Certificate"
},
{
"id": 1000,
"name": "Smart_Education_Certificate"
}
],
"categories": [
{
"id": 1001,
"name": "e-learning"
},
{
"id": 1000,
"name": "computer programming"
}
],
"content": {
"standard": "scorm2004",
"requirements": {
"browsers": "Chrome, Safari, Firefox",
"plugins": "Flash",
"settings": "At least 1024x764 screen resolution"
},
"updated": null
},
"otherInfo": {
"workEmail": "productContact@example.com",
"agreementURL": "http://www.aaa.com/productAgreementUrl.html"
},
"authorizationRequired": {
"network": true,
"instructor": false
}
}
Schema
{
"id": "/product.read",
"title": "A product",
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"price": {
"type": [
"number",
"null"
]
},
"minDays": {
"type": [
"integer",
"null"
]
},
"type": {
"type": "string"
},
"locale": {
"type": [
"string",
"null"
]
},
"networkId": {
"type": [
"integer",
"null"
]
},
"workspaceId": {
"type": [
"integer",
"null"
]
},
"published": {
"type": "boolean"
},
"archived": {
"type": "boolean"
},
"anonymousAccess": {
"type": "boolean"
},
"description": {
"type": [
"string",
"null"
]
},
"logo": {
"description": "The product's logo",
"oneOf": [
{
"type": "null"
},
{
"$ref": "/file.read"
}
]
},
"banner": {
"description": "The banner image",
"oneOf": [
{
"type": "null"
},
{
"$ref": "/file.read"
}
]
},
"license": {
"type": [
"object",
"null"
],
"properties": {
"duration": {
"type": "integer"
},
"certificateExpiry": {
"type": "integer"
}
},
"additionalProperties": false
},
"certificates": {
"type": "array",
"items": {
"$ref": "/certificate.read"
}
},
"categories": {
"type": "array",
"items": {
"$ref": "/category.read"
}
},
"content": {
"type": "object",
"properties": {
"standard": {
"type": [
"null",
"string"
]
},
"requirements": {
"type": [
"object",
"null"
],
"properties": {
"browsers": {
"type": [
"null",
"string"
]
},
"plugins": {
"type": [
"null",
"string"
]
},
"settings": {
"type": [
"null",
"string"
]
}
}
},
"updated": {
"type": [
"null",
"string"
],
"format": "date-time"
}
}
},
"otherInfo": {
"type": [
"object",
"null"
]
},
"authorizationRequired": {
"type": [
"object",
"null"
],
"properties": {
"network": {
"type": "boolean"
},
"instructor": {
"type": "boolean"
}
},
"additionalProperties": false
},
"validationRule": {
"type": [
"object",
"null"
]
}
},
"required": [
"id",
"price",
"minDays",
"type",
"locale",
"networkId",
"workspaceId",
"published",
"archived",
"anonymousAccess",
"description",
"logo",
"banner",
"license",
"certificates",
"content",
"categories",
"otherInfo",
"authorizationRequired",
"validationRule"
],
"additionalProperties": false
}
Update productPUT/products/{productId}
Update details of the given Product.
This endpoint can be accessed by:
-
admin
in the organization that the product is created from -
admin
in the network that the product is created from -
admin
in the product enrollment
Example URI
- productId
int
(required)Product ID.
Headers
Content-Type: application/json
Body
{
"name": "New WHMIS Certification",
"price": 19.99,
"type": "program",
"description": "description"
}
Schema
{
"id": "/product.update",
"title": "update a product",
"allOf": [
{
"$ref": "/product.create-update-common"
},
{
"type": "object",
"properties": {
"name": {},
"type": {},
"price": {},
"minDays": {},
"description": {},
"locale": {},
"published": {},
"archived": {},
"deleted": {},
"banner": {},
"logo": {},
"license": {},
"categoryIds": {},
"requirements": {},
"otherInfo": {},
"authorizationRequired": {},
"externalId": {}
},
"additionalProperties": false,
"required": []
}
]
}
{
"id": "/product.create-update-common",
"title": "common for create and update of a product",
"type": "object",
"properties": {
"organizationId": {
"type": ["integer"]
},
"networkId": {
"type": ["integer"]
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"type": {
"enum": ["certification", "docebo", "newprogram", "offline", "online", "onlineOffering", "program", "virtual"]
},
"price": {
"description": "product price",
"type": ["number", "null"],
"minimum": 0
},
"minDays": {
"description": "minimum offering length on offline product",
"type": ["integer", "null"]
},
"description": {
"description": "product description.",
"type": "string"
},
"locale": {
"type": ["string", "null"],
"maxLength": 10,
"minLength": 2
},
"published": {
"description": "published status. Defaulted to false",
"type": "boolean"
},
"archived": {
"type": "boolean"
},
"anonymousAccess": {
"type": "boolean"
},
"deleted": {
"type": "boolean"
},
"banner": {
"type": ["object", "null"],
"properties": {
"url": {
"description": "The url given must be a path on our CDN.",
"type": "string"
}
},
"required": ["url"],
"additionalProperties": false
},
"logo": {
"type": ["object", "null"],
"properties": {
"url": {
"description": "The url given must be a path on our CDN.",
"type": "string"
}
},
"required": ["url"],
"additionalProperties": false
},
"license": {
"type": "object",
"properties": {
"duration": {
"description": "license in number of months",
"type": ["integer", "null"]
},
"certificateExpiry": {
"description": "certificate expiry in number of months",
"type": "integer"
}
},
"required": ["duration"],
"additionalProperties": false
},
"categoryIds": {
"type": "array",
"items": {
"type": "integer"
},
"minItems": 1,
"uniqueItems": true
},
"requirements": {
"type": "object",
"properties": {
"browsers": {
"type": "string"
},
"plugins": {
"type": "string"
},
"settings": {
"type": "string"
}
},
"additionalProperties": false
},
"otherInfo": {
"type": "object",
"properties": {
"workEmail": {
"type": "string",
"format": "email"
},
"agreementURL": {
"type": "string"
},
"passingScore": {
"type": "number",
"minimum": 0.01,
"maximum": 1
},
"prerequisiteWarning": {
"type": "string"
}
},
"additionalProperties": false
},
"authorizationRequired": {
"type": "object",
"properties": {
"network": {
"type": "boolean"
},
"instructor": {
"type": "boolean"
}
},
"additionalProperties": false
},
"validationRule": {
"type": "object",
"properties": {
"maxNumSeatAllowedPerClass": {
"type": "integer"
},
"minNumInstructor": {
"type": "integer"
},
"minNumEvaluator": {
"type": "integer"
},
"learnerInstructorRatio": {
"type": "integer"
}
},
"additionalProperties": false
},
"externalId": {
"type": "string",
"pattern": "^[a-zA-Z0-9-]+$",
"minLength": 1
}
}
}
204
Delete productDELETE/products/{productId}
Delete a given Product.
This endpoint can be accessed by:
-
admin
in the organization that the product is created from -
admin
in the network that the product is created from -
admin
in the product enrollment
Example URI
- productId
int
(required)Product ID.
204
Product Launch Url ¶
Product Launch UrlPOST/products/{productId}/launch
Get launch URL of the given online product
and login user
.
This endpoint can be accessed by:
-
admin
in the organization that the product is created from -
admin
in the network that the product is created from -
admin
orprovider
in the network that the product is distributed to -
admin
,instructor
, ormember
in the product enrollment
Getting a product’s “tracking” mode launch URL, requires admin
, member
or
instructor
permission for the product.
Getting a product’s “review” mode launch URL, requires one of the following permissions:
-
organization
admin
permission for the product’s owning organization -
network
admin
permission for product owning network -
network
admin
orprovider
permission for a network the product has been distributed to
Example URI
- productId
int
(required)Product ID.
Headers
Content-Type: application/json
Body
{
"redirectUrl": "www.redirecturl.com",
"mode": "review"
}
Schema
{
"id": "/product.launch",
"title": "get product launch URL",
"type": "object",
"properties": {
"redirectUrl": {
"type": "string"
},
"mode": {
"enum": [
"tracking",
"review"
]
}
},
"required": [
"redirectUrl"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"url": "www.scorm-engine.com?tracking=false&forceReview=true®istration=A long encrypted registration param value&configuration=A long encrypted configuration param value"
}
Product Subproducts ¶
Get subproductsGET/products/{productId}/subproducts
Get list of sub products under an existing product.
Example URI
- productId
string
(required)Parent product ID.
200
Headers
Content-Type: application/json
Body
[
{
"id": 1000,
"name": "Lesson 01",
"price": 9.99,
"minDays": null,
"type": "online",
"description": "description 1000",
"locale": "en-CA",
"published": true,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"certificates": [
{
"id": 1001,
"name": "Bluedrop_Certificate"
},
{
"id": 1000,
"name": "Smart_Education_Certificate"
}
],
"categories": [
{
"id": 1001,
"name": "cooking"
},
{
"id": 1000,
"name": "beacon making"
}
]
},
{
"id": 1001,
"name": "Lesson 02",
"price": 9.99,
"minDays": null,
"type": "online",
"description": "description 1001",
"locale": "es",
"published": false,
"logo": null,
"banner": null,
"certificates": []
},
{
"id": 1002,
"name": "Lesson 03",
"price": 9.99,
"minDays": null,
"type": "online",
"description": "description 1002",
"locale": null,
"published": false,
"logo": null,
"banner": null,
"certificates": []
}
]
Update subproductsPUT/products/{productId}/subproducts
Update sub products under an existing product.
This endpoint can be accessed by:
-
admin
in the organization that the product is created from -
admin
in the network that the product is created from -
admin
in the product enrollment
Example URI
- productId
string
(required)Parent product ID.
Headers
Content-Type: application/json
Body
[
{
"id": 3
},
{
"id": 4
}
]
Schema
{
"title": "subproduct list",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "sub-product id",
"type": "integer"
}
},
"required": [
"id"
],
"additionalProperties": false
}
}
204
Products Collection ¶
List productsGET/products?type=_&published=_&query=_&sort=_&order=_&category=_
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get a list of public Products. Must be an authenticated user.
Example URI
- type
string
(optional) Default: nullFilter by types. A single or comma-separated list of types to filter by.
- published
boolean
(optional) Default: nullFilter by published status.
- category
array/string
(optional) Default: nullFilter by category
id
. Accepts multiple categoryid
s by array or comma-separated string.- xapiActivityId
array
(optional) Default: nullFilter by
xapiActivityId
. Accepts multiplexapiActivityId
s by array.- query
string
(optional) Default: nullSearch by
id
,name
.- sort
string
(optional) Default: nameSort the results by
id
,name
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 1000,
"name": "Lesson 01",
"price": 9.99,
"minDays": null,
"type": "online",
"description": "description 1000",
"locale": "en-CA",
"published": true,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"certificates": [],
"categories": []
},
{
"id": 1001,
"name": "Lesson 02",
"price": 9.99,
"minDays": null,
"type": "online",
"description": "description 1001",
"locale": "en-CA",
"published": false,
"logo": null,
"banner": null,
"certificates": [],
"categories": []
},
{
"id": 1002,
"name": "Lesson 03",
"price": 9.99,
"minDays": null,
"type": "online",
"description": "description 1002",
"locale": null,
"published": false,
"logo": null,
"banner": null,
"certificates": [],
"categories": []
}
]
Organization's Product Collection ¶
List Organization's productsGET/organizations/{organizationIdOrKey}/products?networks=_&type=_&locale=_&category=_&published=_&query=_&sort=_&order=_
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get a list of Products within the given Organization that the current user is enrolled in or are visible to the current user based on their networks.
If networks
parameter is provided, then the products returned will be further narrowed down to only the products distributed to those networks.
Must have member
permission within organization.
Example URI
- organizationIdOrKey
int/string
(required)Organization ID or Key.
- networks
array/string
(optional) Default: nullFilter by network
id
orkey
. Accepts multipleid
s orkey
s by array or comma-separated string.- type
string
(optional) Default: nullFilter by types. A single or comma-separated list of types to filter by.
- locale
string
(optional) Default: nullFilter by
locale
. Accepts multiplelocale
s by array or comma-separated string.- category
array/string
(optional) Default: nullFilter by category
id
. Accepts multiple categoryid
s by array or comma-separated string.- published
boolean
(optional) Default: nullFilter by published status.
- query
string
(optional)Search by product/subProduct
id
andname
.- sort
string
(optional) Default: nameSort the results by product
created
,name
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 1000,
"name": "Lesson 01",
"price": 9.99,
"minDays": null,
"type": "online",
"description": "description 1000",
"locale": "en-CA",
"published": true,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"banner": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"certificates": [
{
"id": 1001,
"name": "Bluedrop_Certificate"
},
{
"id": 1000,
"name": "Smart_Education_Certificate"
}
],
"categories": [
{
"id": 1001,
"name": "e-learning"
},
{
"id": 1000,
"name": "computer programming"
}
]
},
{
"id": 1001,
"name": "Lesson 02",
"price": 9.99,
"minDays": null,
"type": "online",
"description": "description 1001",
"locale": null,
"published": false,
"logo": null,
"banner": null,
"certificates": [],
"categories": []
},
{
"id": 1002,
"name": "Lesson 03",
"price": 9.99,
"minDays": null,
"type": "online",
"description": "description 1002",
"locale": null,
"published": false,
"logo": null,
"banner": null,
"certificates": [],
"categories": []
}
]
Product Enrollment ¶
Register into productPUT/user/products/{productId}
Register into a product or update your product registration record.
-
You can only register to the products distributed to your networks.
-
skillspassnl
user is not allowed to use this endpoint.
Example URI
- productId
int
(required)Product ID.
Headers
Content-Type: application/json
Body
{
"role": "member"
}
Schema
{
"id": "/product-user.update",
"title": "add or update user product role",
"type": "object",
"properties": {
"role": {
"enum": [
"member",
"instructor"
]
}
},
"required": [
"role"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"product": {
"id": 1000,
"name": "Lesson 01",
"description": "description 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"role": "member",
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
Unregister from productDELETE/user/products/{productId}
Unregister from a product.
Example URI
- productId
int
(required)Product ID.
204
User's Product Enrollment ¶
Register a user into productPUT/users/{userId}/products/{productId}
Register into a product or update your product registration record.
-
For
member
role, must have at least one of:owner
permission for useradmin
permission within the organization in which the product has been created or published toadmin
orprovider
permission within a network, or its parent, to which the product has been distributed and the user is in
-
For
instructor
role, must have:admin
permission within the organization in which the product has been created or to which the product has been published
-
An organization
member
withowner
permission can only register to products distributed to their networks. -
skillspassnl
user is not allowed to use this endpoint to register self to a product
Example URI
- userId
int
(required)User ID.
- productId
int
(required)Product ID.
Headers
Content-Type: application/json
Body
{
"role": "member"
}
Schema
{
"id": "/product-user.update",
"title": "add or update user product role",
"type": "object",
"properties": {
"role": {
"enum": [
"member",
"instructor"
]
}
},
"required": [
"role"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"product": {
"id": 1000,
"name": "Lesson 01",
"description": "description 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"locale": "en-CA",
"confirmed": true,
"private": false
},
"role": "member",
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
Unregister from productDELETE/users/{userId}/products/{productId}
Unregister the given user from a product.
This endpoint can be accessed by:
-
admin
in the given user’s organization -
admin
in the network that the product is created from -
admin
orprovider
in the network that the product is distributed to -
admin
in the product enrollment -
self
Example URI
- userId
int
(required)User ID.
- productId
int
(required)Product ID.
204
Your Product Collection ¶
List your productsGET/user/products?organizations=_&productId=_&networks=_&type=_&role=_&query=_&sort=_&order=_
Get a list of your products.
Example URI
- organizations
array/string
(optional) Default: nullFilter by organization
id
orkey
. Accepts multipleid
s orkey
s by array or comma-separated string.- productId
array/string
(optional) Default: nullFilter by product
id
. Accepts multipleid
s by array or comma-separated string.- networks
array/string
(optional) Default: nullFilter by network
id
orkey
. Accepts multipleid
s orkey
s by array or comma-separated string.- type
string
(optional)Product type.
- role
array/string
(optional) Default: nullFilter by the product user roles. Accepts multiple roles by array or comma-separated string.
- query
string
(optional) Default: nullSearch by product or class
name
.- sort
string
(optional) Default: createdSort the results by enrollment
created
, productid
,name
, classid
,name
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"name": "WHMIS Certification",
"description": "This WHMIS certification program has been developed in accordance with Federal and Provincial legislations across Canada.",
"price": 99,
"logo": null,
"xapiActivityId": "tag:bluedrop.io,2016:product:100",
"type": "online",
"role": "member",
"subProducts": [
{
"id": 101,
"name": "New WHMIS Certification - course 1",
"logo": null,
"role": null
},
{
"id": 102,
"name": "New WHMIS Certification - course 2",
"logo": null,
"role": "instructor"
}
],
"class": null
},
{
"id": 200,
"name": "New WHMIS Certification",
"description": null,
"price": 299,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/logo%20X.png",
"fileName": "logo X.png"
},
"xapiActivityId": "tag:bluedrop.io,2016:product:200",
"type": "program",
"role": "admin",
"subProducts": [],
"class": {
"id": 1001,
"name": "Class 1",
"logo": null,
"description": "Class 1 description",
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
"price": 89.99,
"seats": {
"total": 15,
"remaining": 3
},
"contact": {
"email": {
"type": "work",
"value": "whinstructor@example.com"
}
},
"events": {
"start": "2014-08-15T12:00:00.000Z",
"end": "2014-08-16T20:30:00.000Z"
},
"address": {
"id": 200,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
},
"publishPrice": true,
"published": true,
"xapiActivityId": "tag:bluedrop.io,2016:class:1001"
}
}
]
User's Product Collection ¶
List user's productsGET/users/{userId}/products?organizations=_&productId=_&networks=_&type=_&role=_&query=_&sort=_&order=_
Get a list of the given user’s products. Must have owner
permission for user.
Example URI
- userId
int
(required)User ID.
- organizations
array/string
(optional) Default: nullFilter by organization
id
orkey
. Accepts multipleid
s orkey
s by array or comma-separated string.- productId
array/string
(optional) Default: nullFilter by product
id
. Accepts multipleid
s by array or comma-separated string.- networks
array/string
(optional) Default: nullFilter by network
id
orkey
. Accepts multipleid
s orkey
s by array or comma-separated string.- type
string
(optional)Product type.
- role
array/string
(optional) Default: nullFilter by the product user roles. Accepts multiple roles by array or comma-separated string.
- query
string
(optional) Default: nullSearch by product or class
name
.- sort
string
(optional) Default: createdSort the results by enrollment
created
, productid
,name
, classid
,name
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"name": "WHMIS Certification",
"description": "This WHMIS certification program has been developed in accordance with Federal and Provincial legislations across Canada.",
"price": 99,
"logo": null,
"xapiActivityId": "tag:bluedrop.io,2016:product:100",
"type": "online",
"role": "member",
"subProducts": [
{
"id": 101,
"name": "New WHMIS Certification - course 1",
"logo": null,
"role": null
},
{
"id": 102,
"name": "New WHMIS Certification - course 2",
"logo": null,
"role": "instructor"
}
],
"class": null
},
{
"id": 200,
"name": "New WHMIS Certification",
"description": null,
"price": 299,
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/logo%20X.png",
"fileName": "logo X.png"
},
"xapiActivityId": "tag:bluedrop.io,2016:product:200",
"type": "program",
"role": "admin",
"subProducts": [],
"class": {
"id": 1001,
"name": "Class 1",
"logo": null,
"description": "Class 1 description",
"network": {
"id": 10001,
"key": "bluedrop",
"name": "Bluedrop Learning Network",
"meta": {
"location": {
"country": "CA",
"province": "NL"
}
}
},
"price": 89.99,
"seats": {
"total": 15,
"remaining": 3
},
"contact": {
"email": {
"type": "work",
"value": "whinstructor@example.com"
}
},
"address": {
"id": 200,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
},
"events": {
"start": "2014-08-15T12:00:00.000Z",
"end": "2014-08-16T20:30:00.000Z"
},
"publishPrice": true,
"published": true,
"xapiActivityId": "tag:bluedrop.io,2016:class:1001"
}
}
]
Product Members Collection ¶
List product's usersGET/products/{productId}/users?organizationId=_&userId=_&networkId=_&role=_&query=_&excludeClassEnrollment=_&distributionView=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
Get a list of users in the given product.
If distributionView
filter is true
and product type is newprogram
, it will only return the users that the logged-in user is able to see depending on his networks and product distribution status.
It only returns the enrollment records where classId
is null.
This endpoint can be accessed by either:
-
admin
in the organization that the product is created from -
admin
in the network that the product is created from -
admin
of employer network within organization that the product is created from -
admin
orprovider
in a parent of a network the product is distributed to, whendistributionView
is false -
admin
orprovider
in a network that the product is distributed to -
admin
,instructor
, ormember
permission within the product: can only see public users.
Example URI
- productId
int
(required)Product ID.
- organizationId
int
(required)Filter by member organization
id
.- userId
int
(optional) Default: nullFilter by user
id
.- networkId
int
(optional) Default: nullFilter by network
id
.- role
array/string
(optional) Default: nullFilter by the product user roles. Accepts multiple roles by array or comma-separated string.
- query
string
(optional) Default: nullSearch by user
firstname
orlastname
.- excludeClassEnrollment
boolean
(optional) Default: trueExclude class enrollment records (i.e. classId is null).
- distributionView
boolean
(optional) Default: falseApplies to products with
newprogram
type. Only include users the current user is able to see depending on his networks and product distribution status- cursorId
int
(optional) Default: nullA primary id to be used in conjunction with
before
orafter
.- limit
int
(optional) Default: 10The maximum number of results returned. Max=100.
- sort
string
(optional) Default: createdSort the results by enrollment
created
or userfirstname
,lastname
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
link: before=John&cursorId=10034&limit=2;after=Mary&cursorId=10033&limit=2
Body
[
{
"id": 100,
"product": {
"id": 1000,
"name": "Lesson 01",
"description": "description 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"user": {
"id": 100,
"firstname": "John",
"lastname": "Lee",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"jobTitle": "Medical Officer",
"locale": "en-CA",
"confirmed": true,
"private": true
},
"role": "admin",
"created": "2014-07-25T07:54:41-07:00",
"modified": null
},
{
"id": 201,
"product": {
"id": 2000,
"name": "Lesson 02",
"description": "description 2000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"user": {
"id": 200,
"firstname": "Tom",
"lastname": "Brown",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"jobTitle": null,
"locale": "en-CA",
"confirmed": false,
"private": false
},
"role": "member",
"created": "2014-07-25T07:54:41-07:00",
"modified": null
}
]
Admin Product Collection ¶
List Products for AdminsGET/admin-products?ownerOrganizationId=_&distributorId=_&networkId=_&productId=_&categoryId=_&type=_&archived=_&query=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
Get a list of products for a publisher or distributor organization. The list contains only the products the caller is allowed to see.
Accessing a product’s information requires one of the following permissions:
-
admin
permission for the organization owning the product -
admin
permission for an organization the product has been published to -
admin
orprovider
permission for the network owning the product -
admin
orprovider
permission for a network the product has been distributed to -
admin
permission for an employer network in the organization owning the product -
admin
permission for an employer network in an organization the product has been published to
Example URI
- ownerOrganizationId
int
(optional)Filter by owner organization
id
.- distributorId
int
(optional)Filter by distributor organization
id
.- networkId
int
(optional) Default: nullFilter by network
id
.- productId
int
(optional) Default: nullFilter by product
id
.- categoryId
int
(optional) Default: nullFilter by category
id
.- type
string
(optional) Default: nullFilter by product types. Accepts multiple types by array or comma-separated string.
- archived
boolean
(optional) Default: nullFilter by archived status.
- query
string
(optional)Search by product
id
andname
.- after
string
(optional) Default: nullRetrieve records with their identifiers after the given identifier.
- before
string
(optional) Default: nullRetrieve records with their identifiers before the given identifier.
- cursorId
int
(optional) Default: nullA primary id to be used in conjunction with
before
orafter
.- limit
int
(optional) Default: 10The maximum number of results returned. Max=100.
- sort
string
(optional) Default: nameSort the results by product
id
orname
.- order
string
(optional) Default: ascOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 1000,
"name": "Lesson 01",
"minDays": null,
"description": "description 1000",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
},
"type": "online",
"ownerOrganizationId": 100,
"ownerNetworkId": null,
"isPublished": true,
"archived": false,
"pricingRule": {
"currency": "CAD",
"cost": 9.99,
"mrsp": 9.99,
"umrp": null
},
"authorizationRequired": {
"network": true,
"instructor": true
},
"version": {
"major": 1,
"releaseDate": "2015-10-30 17:04:29",
"forceUpgrade": true
}
},
{
"id": 1000,
"name": "Lesson 01",
"minDays": null,
"description": "description 1000",
"logo": null,
"type": "online",
"ownerOrganizationId": 100,
"ownerNetworkId": null,
"isPublished": false,
"archived": false,
"pricingRule": {},
"authorizationRequired": {},
"version": {}
}
]
Schema
{
"id": "/product-admin.read",
"title": "Product details for admin view",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"minDays": {
"type": [
"integer",
"null"
]
},
"description": {
"type": "string"
},
"logo": {
"description": "The product's logo",
"oneOf": [
{
"type": "null"
},
{
"$ref": "/file.read"
}
]
},
"type": {
"type": "string"
},
"ownerOrganizationId": {
"type": "integer"
},
"ownerNetworkId": {
"type": [
"integer",
"null"
]
},
"isPublished": {
"type": "boolean"
},
"archived": {
"type": "boolean"
},
"pricingRule": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"cost": {
"type": "number"
},
"mrsp": {
"type": [
"number",
"null"
]
},
"umrp": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
},
"authorizationRequired": {
"type": "object",
"properties": {
"network": {
"type": "boolean"
},
"instructor": {
"type": "boolean"
}
},
"additionalProperties": false
},
"version": {
"type": "object",
"properties": {
"major": {
"type": "integer"
},
"releaseDate": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"forceUpgrade": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"required": [
"id",
"name",
"minDays",
"description",
"logo",
"type",
"ownerOrganizationId",
"ownerNetworkId",
"isPublished",
"pricingRule",
"authorizationRequired",
"version"
],
"additionalProperties": false
}
}
Proficiencies ¶
Add Competency ¶
Create a competencyPOST/competencies
Create a new competency within a given organization.
Must have admin
permission within the organization.
Example URI
Body
{
"organizationId": 100,
"name": "Management",
"description": "Management competency",
"proficiencyScale": "pass/fail"
}
Schema
{
"id": "/competency.create",
"title": "create a new competency in an organization",
"type": "object",
"properties": {
"organizationId": {
"type": "integer"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"proficiencyScale": {
"enum": [
"pass/fail",
"percentage",
"A-F"
]
},
"file": {
"type": "object",
"properties": {
"url": {
"description": "an external link",
"type": "string"
}
},
"required": [
"url"
],
"additionalProperties": false
}
},
"required": [
"organizationId",
"name",
"proficiencyScale"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"id": 10000,
"organizationId": 100,
"name": "Management",
"description": "Management competency",
"proficiencyScale": "pass/fail",
"file": null,
"created": "2016-03-31T15:10:32.186Z",
"modified": null
}
Competencies ¶
Update a competencyPUT/competencies/{competencyId}
Update a competency.
Must have admin
permission within the organization.
A competency that has been graded or has had any of its skills graded can not have its proficiency scale updated.
Example URI
- competencyId
int
(required)Competency ID.
Body
{
"name": "Management",
"description": "Management competency",
"proficiencyScale": "pass/fail"
}
Schema
{
"id": "/competency.update",
"title": "update competency information",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"proficiencyScale": {
"enum": [
"pass/fail",
"percentage",
"A-F"
]
},
"file": {
"type": [
"object",
"null"
],
"properties": {
"url": {
"description": "an external link",
"type": "string"
}
},
"required": [
"url"
],
"additionalProperties": false
}
},
"additionalProperties": false
}
204
Delete a competencyDELETE/competencies/{competencyId}
Delete a competency.
Must have admin
permission within the organization.
A competency that has been graded or has had any of its skills graded can not be deleted.
Example URI
- competencyId
int
(required)Competency ID.
204
Skills ¶
Delete a skillDELETE/skills/{skillId}
Delete a skill.
Must have admin
permission within the organization.
A skill that has been graded can not be deleted.
Example URI
- skillId
int
(required)Skill ID.
204
Product Proficiencies Collection ¶
List product proficienciesGET/product-proficiencies?organizationId=_&productId=_&sort=_&order=_
Get a list of product proficiencies for a specific product & organization.
Inactive skill data is not included in the result.
Must have member
or auditor
permission within organization.
Example URI
- organizationId
int
(required)Organization ID.
- productId
int
(required)Product ID.
- sort
string
(optional) Default: product_proficiency.idSort the results by
product_proficiency.id
.- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 6,
"organizationId": 100,
"productId": 1,
"competency": null,
"skill": {
"id": 1041,
"name": "Addition",
"description": null,
"xapiActivityId": "tag:bluedrop.io,2016:skill:1041",
"competency": {
"id": 104,
"name": "Accounting",
"description": "Basic accounting competency",
"xapiActivityId": "tag:bluedrop.io,2016:competency:104",
"file": null,
"proficiencyScale": "percentage"
}
},
"created": "2004-10-19T08:23:05.000Z",
"modified": "2012-02-29T13:37:42.000Z"
},
{
"id": 4,
"organizationId": 100,
"productId": 1,
"competency": null,
"skill": {
"id": 1031,
"name": "Horse riding",
"description": null,
"xapiActivityId": "tag:bluedrop.io,2016:skill:1031",
"competency": {
"id": 103,
"name": "Riding",
"description": "Riding different types of animals",
"xapiActivityId": "tag:bluedrop.io,2016:competency:103",
"file": {
"url": "www.bluedrop.com"
},
"proficiencyScale": "percentage"
}
},
"created": "2004-10-19T08:23:03.000Z",
"modified": null
},
{
"id": 3,
"organizationId": 100,
"productId": 1,
"competency": {
"id": 103,
"name": "Riding",
"description": "Riding different types of animals",
"xapiActivityId": "tag:bluedrop.io,2016:competency:103",
"file": {
"url": "www.bluedrop.com"
},
"proficiencyScale": "percentage",
"skills": [
{
"id": 1031,
"name": "Horse riding",
"description": null,
"xapiActivityId": "tag:bluedrop.io,2016:skill:1031"
},
{
"id": 1032,
"name": "Mule riding",
"description": null,
"xapiActivityId": "tag:bluedrop.io,2016:skill:1032"
}
]
},
"skill": null,
"created": "2004-10-19T08:23:02.000Z",
"modified": null
},
{
"id": 2,
"organizationId": 100,
"productId": 1,
"competency": {
"id": 102,
"name": "Simple competency",
"description": "Competency with no skills",
"xapiActivityId": "tag:bluedrop.io,2016:competency:102",
"file": null,
"proficiencyScale": "percentage",
"skills": []
},
"skill": null,
"created": "2004-10-19T08:23:01.000Z",
"modified": null
}
]
Reports ¶
Reservations ¶
Add Reservation ¶
Create a reservationPOST/classes/{classId}/reservations
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Create a new reservation within a given class.
This endpoint can be accessed by:
-
admin
in the class’s organization -
admin
orprovider
in the class’s network -
admin
in the class enrollment
Example URI
- classId
int
(required)Class ID.
Body
{
"employerId": 100,
"seats": 50,
"contact": {
"name": "WHSCC employer",
"tel": {
"type": "work",
"value": "+15005550007"
},
"email": {
"type": "work",
"value": "whadmin@example.com"
}
}
}
Schema
{
"id": "/reservation.create",
"title": "create a new reservation",
"type": "object",
"properties": {
"employerId": {
"type": "integer"
},
"seats": {
"type": "integer",
"minimum": 1
},
"contact": {
"$ref": "/contact"
}
},
"required": [
"employerId",
"seats"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"class": {
"id": 100,
"name": "My Math Class",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
}
},
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"created": "2014-10-01 10:23:54+02",
"modified": null
},
"contact": {
"name": "WHSCC employer",
"tel": {
"type": "work",
"value": "+15005550007"
},
"email": {
"type": "work",
"value": "whadmin@example.com"
}
},
"seats": 50,
"paid": false,
"created": "2014-10-01 10:23:54+02",
"modified": null
}
Class Reservation ¶
Get a reservationGET/classes/{classId}/reservations/{reservationId}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Retrieve the detail information of a reservation.
This endpoint can be accessed by:
-
admin
in the class’s organization -
admin
orprovider
in the class’s network -
admin
orinstructor
in the class enrollment
Example URI
- classId
int
(required)Class ID.
- reservationId
int
(required)Reservation ID.
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"class": {
"id": 100,
"name": "My Math Class",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
}
},
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"created": "2014-10-01 10:23:54+02",
"modified": null
},
"contact": {
"name": "WHSCC employer",
"tel": {
"type": "work",
"value": "+15005550007"
},
"email": {
"type": "work",
"value": "whadmin@example.com"
}
},
"seats": 50,
"paid": false,
"created": "2014-10-01 10:23:54+02",
"modified": null
}
Update a reservationPUT/classes/{classId}/reservations/{reservationId}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Update the detail information of a reservation. seats
cannot be adjusted if paid
flag for the given reservation is true at the time.
This endpoint can be accessed by:
-
admin
in the class’s organization -
admin
orprovider
in the class’s network -
admin
in the class enrollment
Example URI
- classId
int
(required)Class ID.
- reservationId
int
(required)Reservation ID.
Body
{
"employerId": 100,
"seats": 50,
"paid": true,
"contact": {
"name": "WHSCC employer",
"tel": {
"type": "work",
"value": "+15005550007"
},
"email": {
"type": "work",
"value": "whadmin@example.com"
}
}
}
Schema
{
"id": "/reservation.update",
"title": "update a reservation",
"type": "object",
"properties": {
"employerId": {
"type": "integer"
},
"seats": {
"description": "seats cannot be changed when current paid is TRUE",
"type": "integer",
"minimum": 1
},
"paid": {
"type": "boolean"
},
"contact": {
"$ref": "/contact"
}
},
"additionalProperties": false
}
204
Delete a reservationDELETE/classes/{classId}/reservations/{reservationId}
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Delete a reservation from a class. Reservations that have one or more enrollments cannot be deleted.
This endpoint can be accessed by:
-
admin
in the class’s organization -
admin
orprovider
in the class’s network -
admin
in the class enrollment
Example URI
- classId
int
(required)Class ID.
- reservationId
int
(required)Reservation ID.
204
Class's Reservation Collection ¶
List Class's ReservationsGET/classes/{classId}/reservations?employerId=_&sort=_&order=_
[This endpoint has been deprecated. Please use the endpoint at http://docs.bluedrop360apiv2.apiary.io/#]
Get a list of reservations within the given class.
This endpoint can be accessed by:
-
admin
in the class’s organization -
admin
orprovider
in the class’s network -
admin
orinstructor
in the class enrollment
Example URI
- classId
int
(required)Class ID.
- employerId
int
(optional) Default: nullFilter by
employerId
.- sort
string
(optional) Default: createdSort the results by
employer.name
,created
, andmodified
.- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"class": {
"id": 100,
"name": "My Math Class",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
}
},
"employer": {
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"contact": {},
"created": "2014-10-01 10:23:54+02",
"modified": null
},
"contact": {
"name": "WHSCC employer",
"tel": {
"type": "work",
"value": "+15005550007"
},
"email": {
"type": "work",
"value": "whadmin@example.com"
}
},
"seats": 50,
"paid": true,
"created": "2014-10-01 10:23:54+02",
"modified": null
},
{
"id": 100,
"class": {
"id": 100,
"name": "My Math Class",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/class-logo.jpg",
"fileName": "class-logo.jpg"
}
},
"employer": {
"id": 200,
"name": "employer 200",
"externalId": "100-200",
"address": {},
"contact": {},
"created": "2014-10-02 10:23:54+02",
"modified": null
},
"contact": {},
"seats": 10,
"paid": false,
"created": "2014-10-02 10:23:54+02",
"modified": null
}
]
Tokens ¶
Create Upload Token ¶
Provides a signed URL that a client can then PUT file contents to. Makes a local storage file available as an temporary addressable URL.
This addressable URL can then be used by other services to copy and access the uploaded file.
Create an upload tokenPOST/upload-tokens
Creates an upload token. Must be an authenticated user.
Example URI
Headers
Content-Type: application/json
Body
{
"fileName": "image.png",
"contentType": "image/png",
"metadata": {
"key": "value"
}
}
Schema
{
"id": "/upload-token.create",
"title": "Create upload token",
"type": "object",
"properties": {
"fileName": {
"description": "The file name. Must be a UTF-8 encoded to at most 987 bytes. Must not start with a period, nor contain a slash nor a backslash. The only accepted whitespace are spaces.",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"contentType": {
"description": "The internet media type (MIME) of the file to be uploaded.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"metadata": {
"description": "A key value object of metadata properties.",
"type": "object"
}
},
"required": [
"fileName",
"contentType"
],
"additionalProperties": false
}
200
Headers
Content-Type: application/json
Body
{
"signedUrl": "https://s3.amazonaws.com/bucketname/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.png?AWSAccessKeyId=...",
"url": "https://s3.amazonaws.com/bucketname/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.png"
}
Schema
{
"id": "/upload-token.read",
"title": "An upload token",
"type": "object",
"properties": {
"signedUrl": {
"description": "PUT a file to this URL (ensure Content-Type header matches the contentType of the POST request)",
"type": "string",
"format": "uri"
},
"url": {
"description": "URL that the uploaded file can be accessed at",
"type": "string",
"format": "uri"
}
},
"required": [
"signedUrl",
"url"
],
"additionalProperties": false
}
Validate a Token ¶
Validate a TokenPOST/jwt-token
Validate a token, return parameters from the token. Some additional data might be appended to the return depending on the token.
Example URI
Headers
Content-Type: application/json
Body
{
"token": "yJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjYsImNvbmZpcm1hdGlvbiI6dHJ1ZSwibmJmIjoxNDIyNTM4MTE1MDE3LCJleHAiOjE0MjI2MjQ1MTUwMTh9.IHgBcKnIIZrL18BXVlWp7MlIf_l3ZStyFDnIIlP-cFY"
}
Schema
{
"id": "/jwt-token.create",
"title": "Validate a token",
"type": "object",
"properties": {
"token": {
"type": "string"
}
},
"required": [
"token"
],
"additionalProperties": false
}
200
Body
{
"userId": 100,
"networkId": 601,
"organizationId": 601,
"loginToken": "yJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjYsImNvbmZpcm1hdGlvbiI6dHJ1ZSwibmJmIjoxNDIyNTM4MTE1MDE3LCJleHAiOjE0MjI2MjQ1MTUwMTh9.IHgBcKnIIZrL18BXVlWp7MlIf_l3ZStyFDnIIlP-cFY"
}
Users ¶
Self ¶
Get account informationGET/user
Get your account information.
Example URI
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"username": "tim@example.com",
"firstname": "Tim",
"lastname": "Cook",
"organizationId": 1001,
"role": "member",
"avatar": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/logo.jpg",
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"sms": {
"number": "+15005550006",
"confirmed": true
},
"locale": "en-CA",
"confirmed": true,
"private": false,
"channel": {
"id": 101,
"organizationId": 1001,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"externalId": "111-222-333",
"address": {
"id": 1000,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
},
"otherInfo": {
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"birthYear": 1978,
"homePhone": "15005550300",
"mobilePhone": "15005550320",
"personalEmail": "tim@example.com",
"workEmail": "work100@gmail.com",
"workPhone": "15005550320",
"jobTitle": "Security Officer"
},
"created": "2014-07-25T10:00:00-09:00"
}
Schema
{
"id": "/user-basic.read",
"title": "user basic information",
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"username": {
"type": "string"
},
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
},
"organizationId": {
"type": "integer"
},
"role": {
"enum": [
"admin",
"auditor",
"member"
]
},
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"channel": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/channel.read"
}
]
},
"avatar": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"gravatar": {
"type": [
"string",
"null"
]
}
},
"required": [
"url",
"gravatar"
],
"additionalProperties": false
},
"locale": {
"type": [
"string",
"null"
]
},
"externalId": {
"type": [
"string",
"null"
]
},
"jobTitle": {
"type": [
"string",
"null"
]
},
"created": {
"type": "string",
"format": "date-time"
},
"confirmed": {
"type": "boolean"
},
"private": {
"type": "boolean"
},
"preferences": {
"type": "object"
},
"otherInfo": {
"type": "object"
},
"sms": {
"type": "object",
"properties": {
"number": {
"type": "string"
},
"confirmed": {
"type": "boolean"
}
},
"required": [
"number",
"confirmed"
],
"additionalProperties": false
}
},
"required": [
"id",
"firstname",
"lastname",
"avatar",
"locale",
"confirmed",
"private"
],
"additionalProperties": false
}
Update accountPUT/user
Update your user account or to activate an identifier linked to your user account with disableNewUserEmail
set to false.
Example URI
Headers
Content-Type: application/json
Body
{
"firstname": "John",
"lastname": "Cook",
"private": true,
"locale": "en-CA"
}
Schema
{
"id": "/user.update",
"title": "update a user",
"type": "object",
"properties": {
"firstname": {
"description": "firstname can only be updated by organization admin",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"lastname": {
"description": "lastname can only be updated by organization admin",
"type": "string",
"maxLength": 255,
"minLength": 2
},
"identifier": {
"description": "to activate email identifier",
"type": "string",
"pattern": "^\\S*$",
"maxLength": 255
},
"private": {
"type": "boolean"
},
"sms": {
"type": "object",
"properties": {
"number": {
"type": "string"
},
"confirmed": {
"enum": [false]
}
},
"additionalProperties": false
},
"avatar": {
"type": "object",
"properties": {
"url": {
"description": "The url given must be a path on our CDN.",
"type": ["string", "null"]
}
},
"required": ["url"],
"additionalProperties": false
},
"locale": {
"type": "string",
"maxLength": 10,
"minLength": 2
},
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"otherInfo": {
"$ref": "/user.otherInfo"
},
"disableNewUserEmail": {
"description": "Unconfirmed user will not receive activation or welcome system email. Defaulted to true.",
"type": "boolean"
},
"returnUrl": {
"type": "string"
}
},
"additionalProperties": false
}
{
"id": "/user.otherInfo",
"description": "meta data for storing organization user details, such as personal/work email addresses",
"type": "object",
"properties": {
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"birthYear": {
"type": ["integer", "null"],
"minimum": 1920,
"maximum": 2020
},
"dob": {
"description": "mm/dd/yyyy",
"type": ["string", "null"],
"pattern": "^(0[1-9]|1[012])/(0[1-9]|[1-2][0-9]|3[0-1])/[0-9]{4}$"
},
"phone": {
"type": ["string", "null"]
},
"homePhone": {
"type": ["string", "null"]
},
"mobilePhone": {
"type": ["string", "null"]
},
"personalEmail": {
"type": ["string", "null"]
},
"workPhone": {
"type": ["string", "null"]
},
"workEmail": {
"type": ["string", "null"]
},
"jobTitle": {
"type": ["string", "null"]
},
"trades": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"trainingStatus": {
"type": ["string", "null"]
},
"homePhoneContactAllowed": {
"type": "boolean"
},
"mobilePhoneContactAllowed": {
"type": "boolean"
},
"device": {
"type": "object",
"properties": {
"model": {
"type": "string"
},
"platform": {
"type": "string"
},
"os": {
"type": "string"
}
},
"additionalProperties": false
},
"affiliation": {
"type": ["string", "null"]
}
},
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"oneOf": [
{"type": ["boolean", "string", "number", "null"]},
{
"type": "object",
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"type": ["boolean", "string", "number", "null"]
}
},
"additionalProperties": false
},
{
"type": "array",
"items": {
"oneOf": [
{"type": ["string", "boolean", "number"]},
{
"type": "object",
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"type": ["string", "boolean", "number"]
}
},
"additionalProperties": false
}
]
}
}
]
}
},
"additionalProperties": false,
"maxProperties": 100
}
{
"id": "/address",
"title": "address details",
"description": "An Address following the convention of http://microformats.org/wiki/hcard",
"type": "object",
"properties": {
"id": {
"type": ["integer", "null"]
},
"name": {
"type": ["string", "null"]
},
"post-office-box": {
"type": ["string", "null"]
},
"street-address": {
"type": ["string", "null"]
},
"extended-address": {
"type": ["string", "null"]
},
"locality": {
"type": ["string", "null"]
},
"region": {
"type": ["string", "null"]
},
"postal-code": {
"type": ["string", "null"]
},
"country-name": {
"type": ["string", "null"]
},
"district": {
"type": ["string", "null"]
}
},
"required": [],
"additionalProperties": false,
"dependencies": {
"post-office-box": ["street-address"],
"extended-address": ["street-address"]
}
}
204
Delete accountDELETE/user
Delete your account.
Example URI
204
Get a user ¶
Get user informationGET/users/{userIdOrUsername}
Get basic account information for the given user in your organization. Returns the user’s private
data (username & SMS information & otherInfo) for self
or organization admin
or network admin
/provider
in the organization.
Example URI
- userIdOrUsername
int/string
(required)User ID or Username.
200
Headers
Content-Type: application/json
Body
{
"id": 100,
"firstname": "Tim",
"lastname": "Cook",
"organizationId": 1001,
"role": "member",
"avatar": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/logo.jpg",
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"sms": {
"number": "+15005550006",
"confirmed": true
},
"locale": "en-CA",
"confirmed": true,
"private": false,
"channel": {
"id": 101,
"organizationId": 1001,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"address": {
"id": 1000,
"name": null,
"post-office-box": null,
"street-address": "1230 Main Street",
"extended-address": null,
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA",
"district": null
}
"otherInfo": {
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
},
"birthYear": 1978,
"homePhone": "15005550300",
"mobilePhone": "15005550320",
"personalEmail": "tim@example.com",
"workEmail": "work100@gmail.com",
"workPhone": "15005550320",
"jobTitle": "Security Officer"
},
"externalId": "111-222-333",
"created": "2014-07-25T10:00:00-09:00"
}
Schema
{
"id": "/user-basic.read",
"title": "user basic information",
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"username": {
"type": "string"
},
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
},
"organizationId": {
"type": "integer"
},
"role": {
"enum": ["admin", "auditor", "member"]
},
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"channel": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/channel.read"
}
]
},
"avatar": {
"type": "object",
"properties": {
"url": {
"type": ["string", "null"]
},
"gravatar": {
"type": ["string", "null"]
}
},
"required": ["url", "gravatar"],
"additionalProperties": false
},
"locale": {
"type": ["string", "null"]
},
"externalId": {
"type": ["string", "null"]
},
"jobTitle": {
"type": ["string", "null"]
},
"created": {
"type": "string",
"format": "date-time"
},
"confirmed": {
"type": "boolean"
},
"private": {
"type": "boolean"
},
"preferences": {
"type": "object"
},
"otherInfo": {
"type": "object"
},
"sms": {
"type": "object",
"properties": {
"number": {
"type": "string"
},
"confirmed": {
"type": "boolean"
}
},
"required": ["number", "confirmed"],
"additionalProperties": false
}
},
"required": ["id", "firstname", "lastname", "avatar", "locale", "confirmed", "private"],
"additionalProperties": false
}
Edit User ¶
Update a userPUT/users/{userId}
Update properties of the given user. Must have owner
permission for user or be an organization admin for the user.
When updating an unconfirmed user account, a notification e-mail can be
sent to the user with further instructions by setting disableNewUserEmail
to false in the request body. disableNewUserEmail
default is set to true
Example URI
- userId
int
(required)User ID.
Headers
Content-Type: application/json
Body
{
"firstname": "John",
"lastname": "Cook",
"locale": "en-CA"
}
Schema
{
"id": "/user.update",
"title": "update a user",
"type": "object",
"properties": {
"firstname": {
"description": "firstname can only be updated by organization admin",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"lastname": {
"description": "lastname can only be updated by organization admin",
"type": "string",
"maxLength": 255,
"minLength": 2
},
"identifier": {
"description": "to activate email identifier",
"type": "string",
"pattern": "^\\S*$",
"maxLength": 255
},
"private": {
"type": "boolean"
},
"sms": {
"type": "object",
"properties": {
"number": {
"type": "string"
},
"confirmed": {
"enum": [false]
}
},
"additionalProperties": false
},
"avatar": {
"type": "object",
"properties": {
"url": {
"description": "The url given must be a path on our CDN.",
"type": ["string", "null"]
}
},
"required": ["url"],
"additionalProperties": false
},
"locale": {
"type": "string",
"maxLength": 10,
"minLength": 2
},
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"otherInfo": {
"$ref": "/user.otherInfo"
},
"disableNewUserEmail": {
"description": "Unconfirmed user will not receive activation or welcome system email. Defaulted to true.",
"type": "boolean"
},
"returnUrl": {
"type": "string"
}
},
"additionalProperties": false
}
{
"id": "/user.otherInfo",
"description": "meta data for storing organization user details, such as personal/work email addresses",
"type": "object",
"properties": {
"address": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "/address"
}
]
},
"birthYear": {
"type": ["integer", "null"],
"minimum": 1920,
"maximum": 2020
},
"dob": {
"description": "mm/dd/yyyy",
"type": ["string", "null"],
"pattern": "^(0[1-9]|1[012])/(0[1-9]|[1-2][0-9]|3[0-1])/[0-9]{4}$"
},
"phone": {
"type": ["string", "null"]
},
"homePhone": {
"type": ["string", "null"]
},
"mobilePhone": {
"type": ["string", "null"]
},
"personalEmail": {
"type": ["string", "null"]
},
"workPhone": {
"type": ["string", "null"]
},
"workEmail": {
"type": ["string", "null"]
},
"jobTitle": {
"type": ["string", "null"]
},
"trades": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"trainingStatus": {
"type": ["string", "null"]
},
"homePhoneContactAllowed": {
"type": "boolean"
},
"mobilePhoneContactAllowed": {
"type": "boolean"
},
"device": {
"type": "object",
"properties": {
"model": {
"type": "string"
},
"platform": {
"type": "string"
},
"os": {
"type": "string"
}
},
"additionalProperties": false
},
"affiliation": {
"type": ["string", "null"]
}
},
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"oneOf": [
{"type": ["boolean", "string", "number", "null"]},
{
"type": "object",
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"type": ["boolean", "string", "number", "null"]
}
},
"additionalProperties": false
},
{
"type": "array",
"items": {
"oneOf": [
{"type": ["string", "boolean", "number"]},
{
"type": "object",
"patternProperties": {
"^[a-zA-Z_0-9-]+$": {
"type": ["string", "boolean", "number"]
}
},
"additionalProperties": false
}
]
}
}
]
}
},
"additionalProperties": false,
"maxProperties": 100
}
{
"id": "/address",
"title": "address details",
"description": "An Address following the convention of http://microformats.org/wiki/hcard",
"type": "object",
"properties": {
"id": {
"type": ["integer", "null"]
},
"name": {
"type": ["string", "null"]
},
"post-office-box": {
"type": ["string", "null"]
},
"street-address": {
"type": ["string", "null"]
},
"extended-address": {
"type": ["string", "null"]
},
"locality": {
"type": ["string", "null"]
},
"region": {
"type": ["string", "null"]
},
"postal-code": {
"type": ["string", "null"]
},
"country-name": {
"type": ["string", "null"]
},
"district": {
"type": ["string", "null"]
}
},
"required": [],
"additionalProperties": false,
"dependencies": {
"post-office-box": ["street-address"],
"extended-address": ["street-address"]
}
}
204
Delete a userDELETE/users/{userId}
Delete the given user. Must have owner
permission for user.
Example URI
- userId
int
(required)User ID.
204
User Collection ¶
List UsersGET/users/?user=_&sort=_&order=_
Get a list of user basic information in your organization.
Private user data will be returned only for self
or organization admin
or network admin
/provider
in the organization.
Example URI
- user
array/string
(optional) Default: nullFilter by user
id
. Accepts multiple userid
s by array or comma-separated string.- sort
string
(optional) Default: createdSort the results by
lastname
,firstname
, andcreated
.- order
string
(optional) Default: descOrder the results in either
asc
ordesc
order.
200
Headers
Content-Type: application/json
Body
[
{
"id": 100,
"firstname": "Tim",
"lastname": "Cook",
"organizationId": 1001,
"role": "member",
"avatar": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/logo.jpg",
"gravatar": "8a9a97b600ae9167792c9216a04aa03c"
},
"sms": {
"number": "+15005550006",
"confirmed": true
},
"locale": "en-CA",
"confirmed": true,
"private": true,
"channel": {
"id": 101,
"organizationId": 1001,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"externalId": "111-222-333",
"created": "2014-07-25T10:00:00-09:00"
}
{
"id": 200,
"firstname": "John",
"lastname": "Smithe",
"organizationId": 1001,
"role": "admin",
"avatar": {
"url": null,
"gravatar": "8a9a97b600ae9167792c9216a04aa111"
},
"sms": {
"number": "+15005550007",
"confirmed": false
},
"locale": "en-CA",
"confirmed": false,
"private": false,
"channel": {
"id": 101,
"organizationId": 1001,
"name": "Channel A",
"logo": {
"url": "https://bln-content.s3.amazonaws.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/image.jpg",
"fileName": "image.jpg"
}
},
"externalId": "111-222-333",
"created": "2014-07-25T10:00:00-09:00"
}
]
Schema
{
"id": "/users.read",
"title": "user basic information",
"oneOf": [
{
"$ref": "/user-basic.read"
},
{
"type": "array",
"items": {"$ref": "/user-basic.read"}
}
]
}
Activate User ¶
Activate UserPOST/user-confirmations
Activate a user’s account. Requires a valid token that is issued and emailed upon account creation.
Example URI
Headers
Content-Type: application/json
Body
{
"token": "yJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjYsImNvbmZpcm1hdGlvbiI6dHJ1ZSwibmJmIjoxNDIyNTM4MTE1MDE3LCJleHAiOjE0MjI2MjQ1MTUwMTh9.IHgBcKnIIZrL18BXVlWp7MlIf_l3ZStyFDnIIlP-cFY"
}
Schema
{
"type": "object",
"properties": {
"token": {
"type": "string"
}
},
"required": [
"token"
],
"additionalProperties": false
}
204
200
Headers
Content-Type: application/json
Body
{
"passwordSetToken": "yJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjYsImNvbmZpcm1hdGlvbiI6dHJ1ZSwibmJmIjoxNDIyNTM4MTE1MDE3LCJleHAiOjE0MjI2MjQ1MTUwMTh9.IHgBcKnIIZrL18BXVlWp7MlIf_l3ZStyFDnIIlP-cFY"
}
Change Password ¶
Change passwordPUT/user/password
Update the given user’s password.
An authenticated organization admin user is allowed to update any user’s password in their organization without specifying any credentials for the target user.
In all other cases the target user needs to be identified using either a valid
passwordSet
token for the target user account or the target user’s current
password. When using a passwordSet
token, the caller needs not be logged in,
but when using the current password they do.
Once the operation has been successfully completed, the target user will be sent
a confirmation email, localized in the locale specified in this API call’s
Accept-Language
header.
Example URI
Headers
Content-Type: application/json
Body
{
"currentPassword": "passwordabc",
"newPassword": "password123"
}
Schema
{
"id": "/user-password.update",
"title": "update a user's password",
"type": "object",
"properties": {
"currentPassword": {
"type": "string",
"maxLength": 255,
"minLength": 8
},
"token": {
"description": "valid `passwordSet` token",
"type": "string"
},
"newPassword": {
"type": "string",
"maxLength": 255,
"minLength": 8,
"pattern": "(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])"
},
"organizationIdOrKey": {
"type": [
"integer",
"string"
]
}
},
"not": {
"required": [
"currentPassword",
"token"
]
},
"required": [
"newPassword"
],
"additionalProperties": false
}
204
Change Own Password ¶
Change own passwordPUT/user/password
Update the calling user’s password.
An authenticated organization admin user is allowed to update their password without specifying any credentials, in which case they must explicitly identify the target organization in the request.
In all other cases the user needs to be identified using either a valid
passwordSet
token for the target user account or their current password. When
using a passwordSet
token, the user needs not be logged in, but when using the
current password they do.
Once the operation has been successfully completed, the user will be sent a
confirmation email, localized in the locale specified in this API call’s
Accept-Language
header.
Example URI
Headers
Content-Type: application/json
Body
{
"currentPassword": "passwordabc",
"newPassword": "password123",
"organizationIdOrKey": 10000
}
Schema
{
"id": "/user-password.update",
"title": "update a user's password",
"type": "object",
"properties": {
"currentPassword": {
"type": "string",
"maxLength": 255,
"minLength": 8
},
"token": {
"description": "valid `passwordSet` token",
"type": "string"
},
"newPassword": {
"type": "string",
"maxLength": 255,
"minLength": 8,
"pattern": "(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])"
},
"organizationIdOrKey": {
"type": [
"integer",
"string"
]
}
},
"not": {
"required": [
"currentPassword",
"token"
]
},
"required": [
"newPassword"
],
"additionalProperties": false
}
204
Password Forgot ¶
Forgot passwordPOST/forgot/password
It will generate a time based token and send an email with password reset link to user. The link will remain valid for the next 24 hours.
Example URI
Headers
Content-Type: application/json
Body
{
"email": "chesley@bluedrop.com",
"organizationIdOrKey": "bluedrop"
}
Schema
{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"organizationIdOrKey": {
"type": "string"
},
"returnUrl": {
"type": "string"
}
},
"required": [
"email",
"organizationIdOrKey"
],
"additionalProperties": false
}
204
Preferences ¶
Get preference settingsGET/user/preferences
Retrieve your preference settings.
Example URI
200
Headers
Content-Type: application/json
Body
{
"notifications": {
"sms": true,
"email": true
}
}
Update preference settingsPUT/user/preferences
Set or update your preference settings.
Example URI
Headers
Content-Type: application/json
Body
{
"notifications": {
"sms": false,
"email": true
}
}
Schema
{
"title": "update user notification settings",
"type": "object",
"properties": {
"notifications": {
"type": "object",
"properties": {
"sms": {
"type": "boolean"
},
"email": {
"type": "boolean"
}
},
"required": [
"sms",
"email"
],
"additionalProperties": false
}
},
"additionalProperties": false
}
204