Back to top

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 token
POST/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

POST https://bln-api.coursepark.com/auth/login
Request
HideShow
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
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "accessToken": "b6492cc0188368d08cba353bb6973cf90b736e74f453324b960c3bccfbd220a2"
}
Response  401
HideShow
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
}
Response  403
HideShow
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 token
POST/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

POST https://bln-api.coursepark.com/auth/sso-login
Request
HideShow
Headers
Content-Type: application/json
Body
{
  "token": "Generated token for SSO login"
}
Schema
{
  "type": "object",
  "properties": {
    "token": {
      "type": "string"
    }
  },
  "required": [
    "token"
  ],
  "additionalProperties": false
}
Response  200
HideShow
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
  • admin: Admin of assignment.

    • update assignment
    • delete assignment

Board

  • owner: Owner of board.

    • includes admin permission in board
  • admin: Admin of board.

    • update board
    • delete board

Post

  • owner: Owner of post.

    • includes admin permission in post
  • 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
  • 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
  • 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 privileges
GET/user/acl?resource=_

Get a list of current user’s ACL privileges on the requested ACL resources.

Example URI

GET https://bln-api.coursepark.com/user/acl?resource=_
URI Parameters
HideShow
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.

Response  200
HideShow
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 accounts
PATCH/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

PATCH https://bln-api.coursepark.com/user-accounts/:keepUserIdOrIdentifier
URI Parameters
HideShow
removeUserIdOrIdentifier
string (required) 

User ID or user account identifier.

Request
HideShow
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
}
Response  204

Categories

Add Category

Create a category
POST/organizations/{organizationIdOrKey}/categories

Create a new category within a given organization. Must have admin permission within organization.

Example URI

POST https://bln-api.coursepark.com/organizations/organizationIdOrKey/categories
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

Request
HideShow
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
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
    "id": 100,
    "name": "Bluedrop Learning Network",
    "description": "Bluedrop Learning Network Courses",
}

Organization Category

Get a category
GET/organizations/{organizationIdOrKey}/categories/{categoryId}

Retrieve a category’ details. Must have member permission within organization.

Example URI

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/categories/categoryId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

categoryId
int (required) 

Category ID.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
    "id": 100,
    "name": "Bluedrop Learning Network",
    "description": "Bluedrop Learning Network Courses",
}

Update a category
PUT/organizations/{organizationIdOrKey}/categories/{categoryId}

Update a category. Must have admin permission within organization.

Example URI

PUT https://bln-api.coursepark.com/organizations/organizationIdOrKey/categories/categoryId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

categoryId
int (required) 

Category ID.

Request
HideShow
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
}
Response  204

Delete a category
DELETE/organizations/{organizationIdOrKey}/categories/{categoryId}

Delete a category from a given organization. Must have admin permission within organization.

Example URI

DELETE https://bln-api.coursepark.com/organizations/organizationIdOrKey/categories/categoryId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

categoryId
int (required) 

Category ID.

Response  204

Organization's Category Collection

List Organization's Categories
GET/organizations/{organizationIdOrKey}/categories?query=_&sort=_&order=_

Get a list of categories within the given organization. Must have member permission within organization.

Example URI

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/categories?query=_&sort=_&order=_
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

query
string (optional) Default: null 

Search by category name or description.

sort
string (optional) Default: created 

Sort the results by name, created, and modified.

order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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 certificate
GET/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 and auditor 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

GET https://bln-api.coursepark.com/certificates/learningRecordRegistrationId
URI Parameters
HideShow
learningRecordRegistrationId
Guid (required) 

learning record registration ID.

Response  200
HideShow
Headers
Transfer-Encoding: chunked
Response  400
HideShow
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 certificates
GET/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 and auditor 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

Example URI

GET https://bln-api.coursepark.com/certificates?classId=_
URI Parameters
HideShow
classId
int (required) 

class Id.

Response  200
HideShow
Headers
Transfer-Encoding: chunked
Response  400
HideShow
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 certificates
GET/organizations/{organizationIdOrKey}/certificates?query=_&sort=_&order=_

Get a list of available certificates within the given organization.

Example URI

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/certificates?query=_&sort=_&order=_
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

query
string (optional) Default: null 

Search by certificate name.

sort
string (optional) Default: certificate.name 

Sort the results by certificate.id, and certificate.name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 product
POST/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

POST https://bln-api.coursepark.com/organizations/organizationIdOrKey/products/productId/certificates/certificateId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

productId
int (required) 

Product ID.

certificateId
int (required) 

Certificate ID.

Response  200
HideShow
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 product
DELETE/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

DELETE https://bln-api.coursepark.com/organizations/organizationIdOrKey/products/productId/certificates/certificateId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

productId
int (required) 

Product ID.

certificateId
int (required) 

Certificate ID.

Response  204

Organization Product Certificates

Get product's certificates
GET/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

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/products/productId/certificates
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

productId
int (required) 

Product ID.

Response  200
HideShow
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 certificates
PUT/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

PUT https://bln-api.coursepark.com/organizations/organizationIdOrKey/products/productId/certificates
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

productId
int (required) 

Product ID.

Request
HideShow
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
}
Response  204

Channels

Channel Collection

List Channels
GET/channels?organizationId=_&id=_&sort=_&order=_

Get a list of channels within an organization.

Must have admin permission in given organization.

Example URI

GET https://bln-api.coursepark.com/channels?organizationId=_&id=_&sort=_&order=_
URI Parameters
HideShow
organizationId
int (required) 

Organization ID.

id
int (optional) 

Channel ID.

sort
string (optional) Default: name 

Sort the results by channel name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 class
POST/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 or provider in the given network that the given product is distributed to

Example URI

POST https://bln-api.coursepark.com/products/productId/classes
URI Parameters
HideShow
productId
int (required) 

Product ID.

Request
HideShow
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
}
Response  200
HideShow
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 class
GET/classes/{classId}

Retrieve class details.

Example URI

GET https://bln-api.coursepark.com/classes/classId
URI Parameters
HideShow
classId
int (required) 

Class ID.

Response  200
HideShow
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 class
PUT/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 or provider in the class’s network

  • admin or instructor in the class enrollment: Class instructor is only allowed to update active column.

Example URI

PUT https://bln-api.coursepark.com/classes/classId
URI Parameters
HideShow
classId
int (required) 

Class ID.

Request
HideShow
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
}
Response  200
HideShow
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 class
DELETE/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 or provider in the class’s network

  • admin in the class enrollment

Example URI

DELETE https://bln-api.coursepark.com/classes/classId
URI Parameters
HideShow
classId
int (required) 

Class ID.

Response  204
Response  409

Product Class Collection

List all classes for product
GET/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

GET https://bln-api.coursepark.com/products/productId/classes?networks=_&district=_&beginDateRange=_&endDateRange=_&query=_&published=_&networks=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
URI Parameters
HideShow
productId
int (required) 

Product ID.

published
boolean (optional) 

Filtered by class published status.

networks
array/string (optional) Default: null 

Filter by network id or key. Accepts multiple ids or keys by array or comma-separated string.

district
string (optional) Default: null 

Search by district of the class address.

beginDateRange
date (optional) Default: null 

Search for classes with first event start date from this one. Accept format ‘yyyy-mm-dd’.

endDateRange
date (optional) Default: null 

Search for classes with first event start date before this one. Accept format ‘yyyy-mm-dd’.

query
string (optional) Default: null 

Search by class name.

after
string (optional) Default: null 

Retrieve records with their identifiers after the given identifier.

before
string (optional) Default: null 

Retrieve records with their identifiers before the given identifier.

cursorId
int (optional) Default: null 

A primary id to be used in conjunction with before or after.

limit
int (optional) Default: 10 

The maximum number of results returned. Max=100.

sort
string (optional) Default: start 

Sort the results by class id, name, or start.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 registration
PUT/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

PUT https://bln-api.coursepark.com/user/classes/classId
URI Parameters
HideShow
classId
int (required) 

Class ID.

Request
HideShow
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
}
Response  200
HideShow
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
}
Response  409

Remove from class
DELETE/user/classes/{classId}

Remove yourself from a class.

Example URI

DELETE https://bln-api.coursepark.com/user/classes/classId
URI Parameters
HideShow
classId
int (required) 

Class ID.

Response  204

Your Class Collection

List your class registrations
GET/user/classes?classId=_&productId=_&role=_&sort=_&order=_

Return a list of your class registrations.

Example URI

GET https://bln-api.coursepark.com/user/classes?classId=_&productId=_&role=_&sort=_&order=_
URI Parameters
HideShow
classId
int (optional) Default: null 

Class ID.

productId
int (optional) Default: null 

Product ID.

role
array/string (optional) Default: null 

Filter by the class user roles. Accepts multiple roles by array or comma-separated string.

sort
string (optional) Default: created 

Sort the results by enrollment created, productId, product name, classId, className.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 registration
PUT/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

PUT https://bln-api.coursepark.com/users/userId/classes/classId
URI Parameters
HideShow
userId
int (required) 

User ID.

classId
int (required) 

Class ID.

Request
HideShow
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
}
Response  200
HideShow
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
}
Response  409

Un-register User

Remove user from class
DELETE/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 or provider permission within class’s network

  • owner permission of the user

Example URI

DELETE https://bln-api.coursepark.com/users/userId/classes/classId?triggeredByNetworkId=_
URI Parameters
HideShow
userId
int (required) 

User ID.

classId
int (required) 

Class ID.

triggeredByNetworkId
int (optional) 

Network ID that this transaction is triggered from.

Response  204

Class Members Collection

Get member list
GET/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 or provider in the class’s network

  • admin of employer network within class’s organization

  • admin, instructor or member in the class enrollment: User externalId is not included in user object for class enrollment permissions.

Example URI

GET https://bln-api.coursepark.com/classes/classId/users?networkId=_&role=_&query=_&sort=_&order=_
URI Parameters
HideShow
classId
int (required) 

Class ID.

networkId
int (optional) Default: null 

Filter members within the given network.

role
string (optional) Default: null 

Filter by the given roles member, instructor and admin. Accepts multiple roles by comma-separated string.

query
string (optional) Default: null 

Search by user firstname or lastname.

sort
string (optional) Default: created 

Sort the results by enrollment created or user firstname, lastname.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 class
GET/classes/{classId}/workspaces

Get a list of all workspaces within the given class.

Example URI

GET https://bln-api.coursepark.com/classes/classId/workspaces
URI Parameters
HideShow
classId
int (required) 

Class ID.

Response  200
HideShow
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 network
POST/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

POST https://bln-api.coursepark.com/networks/networkId/products/productId/distributed-products
URI Parameters
HideShow
networkId
int (required) 

Network ID.

productId
int (required) 

Product ID.

Request
HideShow
Body
{
  "openDistribution": true
}
Schema
{
  "id": "/distributed-product.create",
  "title": "create distributed product",
  "type": "object",
  "properties": {
    "openDistribution": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
Response  200
HideShow
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
}
Response  409

Update product of network
PUT/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

PUT https://bln-api.coursepark.com/networks/networkId/products/productId/distributed-products
URI Parameters
HideShow
networkId
int (required) 

Network ID.

productId
int (required) 

Product ID.

Request
HideShow
Body
{
  "openDistribution": true
}
Schema
{
  "id": "/distributed-product.update",
  "title": "update distributed product",
  "type": "object",
  "properties": {
    "openDistribution": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
Response  204

Remove product from network
DELETE/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

DELETE https://bln-api.coursepark.com/networks/networkId/products/productId/distributed-products
URI Parameters
HideShow
networkId
int (required) 

Network ID.

productId
int (required) 

Product ID.

Response  204

Distributed Product Collection

List Distributed Products
GET/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

GET https://bln-api.coursepark.com/networks/products/distributed-products?networkId=_&productId=_&organizationId=_&networkType=_&productType=_&sort=_&order=_
URI Parameters
HideShow
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: null 

Filtered by network types. Accepts multiple types by array or comma-separated string. Includes network, trainingProvider, employer and cohort.

productType
array/string (optional) Default: null 

Filtered by product types. Accepts multiple types by array or comma-separated string.

sort
string (optional) Default: created 

Sort the results by created, modified, product.name or network.name.

order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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 employer
POST/employers

Create a new employer within a given organization.

This endpoint can be accessed by:

  • admin or member in the given organization.

Example URI

POST https://bln-api.coursepark.com/employers
Request
HideShow
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"]
    }
}
Response  200
HideShow
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 employer
PUT/employers/{employerId}

Update an employer.

Must have admin permission within the employer organization.

Example URI

PUT https://bln-api.coursepark.com/employers/employerId
URI Parameters
HideShow
employerId
int (required) 

Employer ID.

Request
HideShow
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"]
    }
}
Response  204

Delete an employer
DELETE/employers/{employerId}

Delete an employer. The network associated to the employer will be deleted.

Must have admin permission within the employer organization.

Example URI

DELETE https://bln-api.coursepark.com/employers/employerId
URI Parameters
HideShow
employerId
int (required) 

Employer ID.

Response  204

Employer Collection

List employers
GET/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 or member in the given organization.

Example URI

GET https://bln-api.coursepark.com/employers?employerId=_&organizationId=_&externalId=_&name=_&query=_&hasNetwork=_&hasCanonicalEmployer=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
URI Parameters
HideShow
organizationId
int (required) 

Organization ID.

employerId
int (optional) Default: null 

Employer ID.

externalId
string (optional) Default: null 

Employer External ID.

name
string (optional) Default: null 

Fuzzy search on employer name.

query
string (optional) Default: null 

Search partial matches on name or exact matches on externalId.

hasNetwork
boolean (optional) Default: null 

Filtered by employers having a employer network or not.

hasCanonicalEmployer
boolean (optional) Default: null 

Filtered by employers having a canonical employer or not.

after
string (optional) Default: null 

Retrieve records with their identifiers after the given identifier.

before
string (optional) Default: null 

Retrieve records with their identifiers before the given identifier.

cursorId
int (optional) Default: null 

A primary id to be used in conjunction with before or after.

limit
int (optional) Default: 10 

The maximum number of results returned. Max=100.

sort
string (optional) Default: name 

Sort the results by id, name or verified.

  • when sorting by verified, the secondary sorts are name and id.
order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 yourself
POST/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

POST https://bln-api.coursepark.com/user/employers/employerId/user-employers
URI Parameters
HideShow
employerId
int (required) 

Employer ID.

Request
HideShow
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
}
Response  200
HideShow
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 employment
PUT/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

PUT https://bln-api.coursepark.com/user/employers/employerId/user-employers
URI Parameters
HideShow
employerId
int (required) 

Employer ID.

Request
HideShow
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
}
Response  200
HideShow
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 employment
DELETE/user/employers/{employerId}/user-employers?startDate=_

Delete your employment record. You will be removed from the employer network.

Example URI

DELETE https://bln-api.coursepark.com/user/employers/employerId/user-employers?startDate=_
URI Parameters
HideShow
employerId
int (required) 

Employer ID.

startDate
date (required) 

Your employment start date. Accept format ‘yyyy-mm-dd’ only.

Response  204

User's Employer

Add an employer to user
POST/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

POST https://bln-api.coursepark.com/users/userId/employers/employerId/user-employers
URI Parameters
HideShow
userId
int (required) 

User ID.

employerId
int (required) 

Employer ID.

Request
HideShow
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
}
Response  200
HideShow
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 employer
PUT/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 or provider of given user; networkId is required

  • parent network admin or provider of given user

  • self

Example URI

PUT https://bln-api.coursepark.com/users/userId/employers/employerId/user-employers
URI Parameters
HideShow
userId
int (required) 

User ID.

employerId
int (required) 

Employer ID.

Request
HideShow
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
}
Response  200
HideShow
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 employment
DELETE/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

DELETE https://bln-api.coursepark.com/users/userId/employers/employerId/user-employers?startDate=_
URI Parameters
HideShow
userId
int (required) 

User ID.

employerId
int (required) 

Employer ID.

startDate
date (required) 

User employment start date. Accept format ‘yyyy-mm-dd’ only.

Response  204

Your Employer Collection

List your employers
GET/user/user-employers?employerId=_&sort=_&order=_

Get a list of your employers.

Example URI

GET https://bln-api.coursepark.com/user/user-employers?employerId=_&sort=_&order=_
URI Parameters
HideShow
employerId
int (optional) Default: null 

Employer ID.

sort
string (optional) Default: startDate 

Sort the results by employer_user startDate.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 employers
GET/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 or auditor in the given organization

  • self

Example URI

GET https://bln-api.coursepark.com/users/userId/user-employers?employerId=_&organizationId=_&sort=_&order=_
URI Parameters
HideShow
userId
int (required) 

User ID.

employerId
int (optional) Default: null 

Employer ID.

organizationId
int (optional) 

Organization ID.

sort
string (optional) Default: startDate 

Sort the results by employer_user startDate.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 Users
GET/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 with organizationId parameter

  • admin in the organization of the network with networkId parameter

  • admin in the network with networkId parameter

Example URI

GET https://bln-api.coursepark.com/employer-users?organizationId=_&networkId=_&includeSubNetworks=_&query=_&after=_&before=_&cursorId=_&limit= _&sort=_&order=_
URI Parameters
HideShow
organizationId
int (optional) 

Organization ID.

networkId
int (optional) 

Network ID.

includeSubNetworks
boolean (optional) Default: false 

Include users from child networks. Only applicable when networkId is provided.

query
string (optional) Default: null 

Search by user username, firstname or lastname.

after
string (optional) Default: null 

Retrieve records with their identifiers after the given identifier.

before
string (optional) Default: null 

Retrieve records with their identifiers before the given identifier.

cursorId
int (optional) Default: null 

A primary id to be used in conjunction with before or after.

limit
int (optional) Default: 10 

The maximum number of results returned. Max=100.

sort
string (optional) Default: firstname 

Sort the results by startDate, firstname or lastname.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 event
POST/workspaces/{workspaceId}/events

Add a new event for a given workspace.

This endpoint can be accessed by:

  • admin in the workspace’s organization.

  • admin or provider in the workspace’s class network.

  • admin in the workspace’s class enrollment.

Example URI

POST https://bln-api.coursepark.com/workspaces/workspaceId/events
URI Parameters
HideShow
workspaceId
int (required) 

Workspace ID.

Request
HideShow
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
}
Response  200
HideShow
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 event
PUT/events/{eventId}

Update an event.

This endpoint can be accessed by:

  • admin in the class organization.

  • admin or provider in the class network.

  • admin in the class enrollment.

Example URI

PUT https://bln-api.coursepark.com/events/eventId
URI Parameters
HideShow
eventId
int (required) 

Event ID.

Request
HideShow
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
}
Response  200
HideShow
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 event
DELETE/events/{eventId}

Delete an event.

This endpoint can be accessed by:

  • admin in the class organization.

  • admin or provider in the class network.

  • admin in the class enrollment.

Example URI

DELETE https://bln-api.coursepark.com/events/eventId
URI Parameters
HideShow
eventId
int (required) 

Event ID.

Response  204

Workspace Event Collection

Get workspace events
GET/workspaces/{workspaceId}/events?from=_&to_&query=_&sort=_&order=_

Retrieve all the events for a given workspace.

Example URI

GET https://bln-api.coursepark.com/workspaces/workspaceId/events?from=_&to_&query=_&sort=_&order=_
URI Parameters
HideShow
workspaceId
int (required) 

Workspace ID.

from
date (optional) Default: null 

Filtered by Start date.

to
date (optional) Default: null 

Filtered by End date.

query
string (optional) Default: null 

Search by summary.

sort
string (optional) Default: id 

Sort the results by id, start, end, summary.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 events
GET/classes/{classId}/events?from=_&to=_&query=_&sort=_&order=_

Retrieve all the events for a given class.

Example URI

GET https://bln-api.coursepark.com/classes/classId/events?from=_&to=_&query=_&sort=_&order=_
URI Parameters
HideShow
classId
int (required) 

Class ID.

from
date (optional) Default: null 

Filtered by Start date.

to
date (optional) Default: null 

Filtered by End date.

query
string (optional) Default: null 

Search by workspace name or summary.

sort
string (optional) Default: id 

Sort the results by id, start, end, summary, workspaceName.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 events
GET/user/events?from=_&to=_&query=_&sort=_&order=_

Get a list of your events.

Example URI

GET https://bln-api.coursepark.com/user/events?from=_&to=_&query=_&sort=_&order=_
URI Parameters
HideShow
from
date (optional) Default: null 

Filtered by Start date.

to
date (optional) Default: null 

Filtered by End date.

query
string (optional) Default: null 

Search by event summary, workspace name.

sort
string (optional) Default: id 

Sort the results by event id, start, end, workspace id, name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 events
GET/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

GET https://bln-api.coursepark.com/users/userId/events?from=_&to=_&query=_&sort=_&order=_
URI Parameters
HideShow
userId
int (required) 

User ID.

from
date (optional) Default: null 

Filtered by Start date.

to
date (optional) Default: null 

Filtered by End date.

query
string (optional) Default: null 

Search by event summary, workspace name.

sort
string (optional) Default: id 

Sort the results by event id, start, end, workspace id, name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 record
POST/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 or provider of given provider network

Example URI

POST https://bln-api.coursepark.com/user-imports
Request
HideShow
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"
  ]
}
Response  204

Learning Record Imports

Import a learning record
POST/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 or provider of given provider network

Example URI

POST https://bln-api.coursepark.com/learning-record-imports
Request
HideShow
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"
  ]
}
Response  204

Networks

Add Network

Create a network
POST/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

POST https://bln-api.coursepark.com/organizations/organizationIdOrKey/networks
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

Request
HideShow
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"]
    }
}
Response  200
HideShow
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 network
GET/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

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/networks/networkId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

networkId
int (required) 

Network ID.

Response  200
HideShow
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 network
PUT/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

PUT https://bln-api.coursepark.com/organizations/organizationIdOrKey/networks/networkId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

networkId
int (required) 

Network ID.

Request
HideShow
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
}
Response  204

Delete a Network
DELETE/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

DELETE https://bln-api.coursepark.com/organizations/organizationIdOrKey/networks/networkId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

networkId
int (required) 

Network ID or Key.

Response  204

Network Collection

List networks
GET/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 or instructor of networks to retrieve networks that the user has a role in and their subnetworks and with type filter not including employer

  • member permission within organization to retrieve employer networks

Example URI

GET https://bln-api.coursepark.com/networks?organizationId=_&networkId=_&parentId=_&employerId=_&cohortId=_&type=_&externalId=_&query=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
URI Parameters
HideShow
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: null 

Filtered by network types. Accepts multiple types by array or comma-separated string. Includes network, trainingProvider, employer and cohort.

externalId
string (optional) Default: null 

Filter by externalId.

query
string (optional) Default: null 

Search by network key or name.

after
string (optional) Default: null 

Retrieve records with their identifiers after the given identifier.

before
string (optional) Default: null 

Retrieve records with their identifiers before the given identifier.

cursorId
int (optional) Default: null 

A primary id to be used in conjunction with before or after.

limit
int (optional) Default: 10 

The maximum number of results returned. Max=100.

sort
string (optional) Default: name 

Sort the results by id or name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 networks
GET/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

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/networks?role=_&query=_&sort=_&order=_
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

role
array/string (optional) Default: null 

Filter by network user role. Accepts multiple roles by array or comma-separated string.

query
string (optional) Default: null 

Search by network key or name.

sort
string (optional) Default: network.created 

Sort the results by network.id, network.name, network.created, and role.created.

order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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 role
PUT/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 or instructor 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 replacing member and provider user roles within network.

  • Users with instructor permission are limited to adding, updating or replacing member 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

PUT https://bln-api.coursepark.com/organizations/organizationIdOrKey/networks/networkId/users/userId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

networkId
int (required) 

Network ID.

userId
int (required) 

User ID.

Request
HideShow
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
}
Response  200
HideShow
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
}
Response  409

Remove user from network
DELETE/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 or invitee in the network

  • Users with provider or instructor permission are not allowed to remove admin 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

DELETE https://bln-api.coursepark.com/organizations/organizationIdOrKey/networks/networkId/users/userId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

networkId
int (required) 

Network ID.

userId
int (required) 

User ID.

Response  204

Organization's Network User Collection

List Organization's Network Users
GET/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

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/networks/networkId/users?role=_&autoJoin=_&query=_&sort=_&order=_
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

networkId
int (required) 

Network ID.

role
array/string (optional) Default: null 

Filter by network user role. Accepts multiple roles by array or comma-separated string.

autoJoin
boolean (optional) Default: null 

Filtered by autoJoin status.

query
string (optional) Default: null 

Search by user firstname, lastname, and username.

sort
string (optional) Default: role.created 

Sort the results by role.created, user.firstname or user.lastname.

order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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 Users
GET/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 with networkId parameter

  • self of user with userId 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

GET https://bln-api.coursepark.com/network-users?organizationId=_&networkId=_&userId=_&excludeClassId=_&includeSubNetworks=_&role=_&networkType=_&query=_&after=_&before=_&cursorId=_&limit= _&sort=_&order=_
URI Parameters
HideShow
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: false 

Include users from child networks. Only applicable when networkId is provided.

role
array/string (optional) Default: null 

Filter by network user role. Accepts multiple roles by array or comma-separated string.

networkType
array/string (optional) Default: null 

Filtered by network types. Accepts multiple types by array or comma-separated string. Includes network, trainingProvider, employer and cohort.

query
string (optional) Default: null 

Search by user username, firstname or lastname.

after
string (optional) Default: null 

Retrieve records with their identifiers after the given identifier.

before
string (optional) Default: null 

Retrieve records with their identifiers before the given identifier.

cursorId
int (optional) Default: null 

A primary id to be used in conjunction with before or after.

limit
int (optional) Default: 10 

The maximum number of results returned. Max=100.

sort
string (optional) Default: role.created 

Sort the results by role.created, role, network.id, network.created, network.name, user.firstname or user.lastname.

order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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 Subnetworks
GET/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

GET https://bln-api.coursepark.com/network-subnetworks?ids=_&subnetworkType=_&sort=_&order=_
URI Parameters
HideShow
ids
array/string (required) 

A list of parent network IDs.

subnetworkType
array/string (optional) Default: null 

Filtered by network types in subnetworks object. Accepts multiple types by array or comma-separated string. Includes network, trainingProvider, employer and cohort.

sort
string (optional) Default: name 

Sort the results by network name, created.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 read
PUT/user-notifications/{userNotificationId}

Mark a given notification as read. Must have owner permission of notification.

Example URI

PUT https://bln-api.coursepark.com/user-notifications/userNotificationId
URI Parameters
HideShow
userNotificationId
int (required) 

User Notification ID.

Response  204

Notifications Collection

List all notifications for a user
GET/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

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/user-notifications?unread=_&sort=_&order=_
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

unread
boolean (optional) Default: false 

Retrieve all notifications or unread notifications only.

sort
string (optional) Default: created 

Sort the results by notification created or key.

order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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 User
POST/organizations/{organizationIdOrKey}/new-user

This API may perform three separate duties:

  1. create a new user and add them to the organization
  2. invite a new user to the organization
  3. 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

POST https://bln-api.coursepark.com/organizations/organizationIdOrKey/new-user
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

Request
HideShow
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"]
    }
}
Response  202
HideShow
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
  }
}
Response  409

Organization User

Get user
GET/organizations/{organizationIdOrKey}/users/{userId}

Get a user’s details in an organization. Must have one of the following permissions:

  • admin or auditor within organization.

  • self.

Example URI

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/users/userId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

userId
int (required) 

User ID.

Response  200
HideShow
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 user
PUT/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

PUT https://bln-api.coursepark.com/organizations/organizationIdOrKey/users/userId
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

userId
int (required) 

User ID.

Request
HideShow
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"]
    }
}
Response  200
HideShow
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 users
GET/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 or auditor within organization.

  • admin or provider of a network in the organization: Either networks or search filter is required. Use search filter to search against all users within the organization. With networks filter, it will only return the users within your networks or child networks.

Example URI

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/users?role=_&networks=_&excludeInvited=_&query=_&queryOn=_&search=_&searchMethod=_&searchOperator=_&after=_&before=_&cursorId=_&limit=_&sort=_&sortData=_&order=_
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

role
string (optional) Default: null 

Filter by the given roles member or admin. Accepts multiple roles by comma-separated string.

networks
array/string (optional) Default: null 

Filter by network id or key. Accepts multiple ids or keys by array or comma-separated string.

excludeInvited
boolean (optional) Default: true 

Exclude users whose accounts are in invited status.

query
string (optional) Default: null 

Search by user firstname, lastname, username, external ID, phone numbers, and email addresses.

queryOn
array/string (optional) Default: user 

Specify search areas. Accepts user, organization, and organizationUser by array or comma-separated string.

search
string (optional) Default: null 

Search by a stringify object. Allowed columns are firstname, lastname, identifier, emailIdentifier, personalEmail, workEmail, email,homePhone,mobilePhone,workPhone,phone, birthYear, street-address,locality, and postal-code. Accept multiple search values in an array format for exact search method. Example: {firstname: ['Tom', 'Mary'], birthYear: 1985, homePhone: null}

searchMethod
string (optional) Default: exact 

Search using exact, partial or fuzzy method.

searchOperator
string (optional) Default: and 

Search using and or or operator.

after
string (optional) Default: null 

Retrieve records with their identifiers after the given identifier.

before
string (optional) Default: null 

Retrieve records with their identifiers before the given identifier.

cursorId
int (optional) Default: null 

A primary id to be used in conjunction with before or after.

limit
int (optional) Default: 10 

The maximum number of results returned. Max=100. If “limit” is not given, it’s defaulted to 100.

sort
string (optional) Default: created 

Sort the results by created, firstname, lastname, or matchedBirthYear.

  • When sorting by firstname or lastname, the secondary sort is created.

  • When sorting by matchedBirthYear, the secondary sorts are the distance between postalCode and created.

sortData
string (optional) Default: null 

A stringify object.

  • When sorting by matchedBirthYear, birthYear is requried. postalCode is optional. Example: {"birthYear":"1985","postalCode":"A0A0A1"}
order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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 organization
GET/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

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

Response  200
HideShow
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 organization
PUT/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

PUT https://bln-api.coursepark.com/organizations/organizationIdOrKey
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

Request
HideShow
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
}
Response  200
HideShow
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 organization
DELETE/organizations/{organizationIdOrKey}

Delete the given organization. Must have admin permission within organization.

Example URI

DELETE https://bln-api.coursepark.com/organizations/organizationIdOrKey
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

Response  204

Organization Districts Collection

Get district list
GET/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

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/districts?productId=_&networkId=_
URI Parameters
HideShow
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.

Response  200
HideShow
Headers
Content-Type: application/json
Body
[
  "Bonavista North - Gander",
  "Corner Brook",
  "St. John's"
]

Your Organization Collection

List your organizations
GET/user/organizations?key=_&role=_&query=_&sort=_&order=_

List organizations you have access to.

Example URI

GET https://bln-api.coursepark.com/user/organizations?key=_&role=_&query=_&sort=_&order=_
URI Parameters
HideShow
key
string (optional) Default: null 

Filter by the given organization key.

role
string (optional) Default: null 

Filter by the given roles member and admin. Accepts multiple roles as a comma-separated string.

query
string (optional) Default: null 

Search by key or name.

sort
string (optional) Default: organizationId 

Sort the results by organizationId.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 product
POST/products

Create a new product. Must have admin permission within organization or network.

Example URI

POST https://bln-api.coursepark.com/products
Request
HideShow
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
        }
    }
}
Response  200
HideShow
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 product
GET/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

GET https://bln-api.coursepark.com/products/productId
URI Parameters
HideShow
productId
int (required) 

Product ID.

Response  200
HideShow
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 product
PUT/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

PUT https://bln-api.coursepark.com/products/productId
URI Parameters
HideShow
productId
int (required) 

Product ID.

Request
HideShow
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
        }
    }
}
Response  204

Delete product
DELETE/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

DELETE https://bln-api.coursepark.com/products/productId
URI Parameters
HideShow
productId
int (required) 

Product ID.

Response  204

Product Launch Url

Product Launch Url
POST/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 or provider in the network that the product is distributed to

  • admin, instructor, or member 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 or provider permission for a network the product has been distributed to

Example URI

POST https://bln-api.coursepark.com/products/productId/launch
URI Parameters
HideShow
productId
int (required) 

Product ID.

Request
HideShow
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
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "url": "www.scorm-engine.com?tracking=false&forceReview=true&registration=A long encrypted registration param value&configuration=A long encrypted configuration param value"
}

Product Subproducts

Get subproducts
GET/products/{productId}/subproducts

Get list of sub products under an existing product.

Example URI

GET https://bln-api.coursepark.com/products/productId/subproducts
URI Parameters
HideShow
productId
string (required) 

Parent product ID.

Response  200
HideShow
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 subproducts
PUT/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

PUT https://bln-api.coursepark.com/products/productId/subproducts
URI Parameters
HideShow
productId
string (required) 

Parent product ID.

Request
HideShow
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
  }
}
Response  204

Products Collection

List products
GET/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

GET https://bln-api.coursepark.com/products?type=_&published=_&query=_&sort=_&order=_&category=_
URI Parameters
HideShow
type
string (optional) Default: null 

Filter by types. A single or comma-separated list of types to filter by.

published
boolean (optional) Default: null 

Filter by published status.

category
array/string (optional) Default: null 

Filter by category id. Accepts multiple category ids by array or comma-separated string.

xapiActivityId
array (optional) Default: null 

Filter by xapiActivityId. Accepts multiple xapiActivityIds by array.

query
string (optional) Default: null 

Search by id,name.

sort
string (optional) Default: name 

Sort the results by id, name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 products
GET/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

GET https://bln-api.coursepark.com/organizations/organizationIdOrKey/products?networks=_&type=_&locale=_&category=_&published=_&query=_&sort=_&order=_
URI Parameters
HideShow
organizationIdOrKey
int/string (required) 

Organization ID or Key.

networks
array/string (optional) Default: null 

Filter by network id or key. Accepts multiple ids or keys by array or comma-separated string.

type
string (optional) Default: null 

Filter by types. A single or comma-separated list of types to filter by.

locale
string (optional) Default: null 

Filter by locale. Accepts multiple locales by array or comma-separated string.

category
array/string (optional) Default: null 

Filter by category id. Accepts multiple category ids by array or comma-separated string.

published
boolean (optional) Default: null 

Filter by published status.

query
string (optional) 

Search by product/subProduct id and name.

sort
string (optional) Default: name 

Sort the results by product created, name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 product
PUT/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

PUT https://bln-api.coursepark.com/user/products/productId
URI Parameters
HideShow
productId
int (required) 

Product ID.

Request
HideShow
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
}
Response  200
HideShow
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 product
DELETE/user/products/{productId}

Unregister from a product.

Example URI

DELETE https://bln-api.coursepark.com/user/products/productId
URI Parameters
HideShow
productId
int (required) 

Product ID.

Response  204

User's Product Enrollment

Register a user into product
PUT/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 user
    • admin permission within the organization in which the product has been created or published to
    • admin or provider 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 with owner 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

PUT https://bln-api.coursepark.com/users/userId/products/productId
URI Parameters
HideShow
userId
int (required) 

User ID.

productId
int (required) 

Product ID.

Request
HideShow
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
}
Response  200
HideShow
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 product
DELETE/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 or provider in the network that the product is distributed to

  • admin in the product enrollment

  • self

Example URI

DELETE https://bln-api.coursepark.com/users/userId/products/productId
URI Parameters
HideShow
userId
int (required) 

User ID.

productId
int (required) 

Product ID.

Response  204

Your Product Collection

List your products
GET/user/products?organizations=_&productId=_&networks=_&type=_&role=_&query=_&sort=_&order=_

Get a list of your products.

Example URI

GET https://bln-api.coursepark.com/user/products?organizations=_&productId=_&networks=_&type=_&role=_&query=_&sort=_&order=_
URI Parameters
HideShow
organizations
array/string (optional) Default: null 

Filter by organization id or key. Accepts multiple ids or keys by array or comma-separated string.

productId
array/string (optional) Default: null 

Filter by product id. Accepts multiple ids by array or comma-separated string.

networks
array/string (optional) Default: null 

Filter by network id or key. Accepts multiple ids or keys by array or comma-separated string.

type
string (optional) 

Product type.

role
array/string (optional) Default: null 

Filter by the product user roles. Accepts multiple roles by array or comma-separated string.

query
string (optional) Default: null 

Search by product or class name.

sort
string (optional) Default: created 

Sort the results by enrollment created, product id, name, class id, name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 products
GET/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

GET https://bln-api.coursepark.com/users/userId/products?organizations=_&productId=_&networks=_&type=_&role=_&query=_&sort=_&order=_
URI Parameters
HideShow
userId
int (required) 

User ID.

organizations
array/string (optional) Default: null 

Filter by organization id or key. Accepts multiple ids or keys by array or comma-separated string.

productId
array/string (optional) Default: null 

Filter by product id. Accepts multiple ids by array or comma-separated string.

networks
array/string (optional) Default: null 

Filter by network id or key. Accepts multiple ids or keys by array or comma-separated string.

type
string (optional) 

Product type.

role
array/string (optional) Default: null 

Filter by the product user roles. Accepts multiple roles by array or comma-separated string.

query
string (optional) Default: null 

Search by product or class name.

sort
string (optional) Default: created 

Sort the results by enrollment created, product id, name, class id, name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 users
GET/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 or provider in a parent of a network the product is distributed to, when distributionView is false

  • admin or provider in a network that the product is distributed to

  • admin, instructor, or member permission within the product: can only see public users.

Example URI

GET https://bln-api.coursepark.com/products/productId/users?organizationId=_&userId=_&networkId=_&role=_&query=_&excludeClassEnrollment=_&distributionView=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
URI Parameters
HideShow
productId
int (required) 

Product ID.

organizationId
int (required) 

Filter by member organization id .

userId
int (optional) Default: null 

Filter by user id.

networkId
int (optional) Default: null 

Filter by network id.

role
array/string (optional) Default: null 

Filter by the product user roles. Accepts multiple roles by array or comma-separated string.

query
string (optional) Default: null 

Search by user firstname or lastname.

excludeClassEnrollment
boolean (optional) Default: true 

Exclude class enrollment records (i.e. classId is null).

distributionView
boolean (optional) Default: false 

Applies 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: null 

A primary id to be used in conjunction with before or after.

limit
int (optional) Default: 10 

The maximum number of results returned. Max=100.

sort
string (optional) Default: created 

Sort the results by enrollment created or user firstname, lastname.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 Admins
GET/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 or provider permission for the network owning the product

  • admin or provider 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

GET https://bln-api.coursepark.com/admin-products?ownerOrganizationId=_&distributorId=_&networkId=_&productId=_&categoryId=_&type=_&archived=_&query=_&after=_&before=_&cursorId=_&limit=_&sort=_&order=_
URI Parameters
HideShow
ownerOrganizationId
int (optional) 

Filter by owner organization id.

distributorId
int (optional) 

Filter by distributor organization id.

networkId
int (optional) Default: null 

Filter by network id.

productId
int (optional) Default: null 

Filter by product id.

categoryId
int (optional) Default: null 

Filter by category id.

type
string (optional) Default: null 

Filter by product types. Accepts multiple types by array or comma-separated string.

archived
boolean (optional) Default: null 

Filter by archived status.

query
string (optional) 

Search by product id and name.

after
string (optional) Default: null 

Retrieve records with their identifiers after the given identifier.

before
string (optional) Default: null 

Retrieve records with their identifiers before the given identifier.

cursorId
int (optional) Default: null 

A primary id to be used in conjunction with before or after.

limit
int (optional) Default: 10 

The maximum number of results returned. Max=100.

sort
string (optional) Default: name 

Sort the results by product id or name.

order
string (optional) Default: asc 

Order the results in either asc or desc order.

Response  200
HideShow
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 competency
POST/competencies

Create a new competency within a given organization.

Must have admin permission within the organization.

Example URI

POST https://bln-api.coursepark.com/competencies
Request
HideShow
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
}
Response  200
HideShow
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 competency
PUT/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

PUT https://bln-api.coursepark.com/competencies/competencyId
URI Parameters
HideShow
competencyId
int (required) 

Competency ID.

Request
HideShow
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
}
Response  204

Delete a competency
DELETE/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

DELETE https://bln-api.coursepark.com/competencies/competencyId
URI Parameters
HideShow
competencyId
int (required) 

Competency ID.

Response  204

Skills

Delete a skill
DELETE/skills/{skillId}

Delete a skill.

Must have admin permission within the organization.

A skill that has been graded can not be deleted.

Example URI

DELETE https://bln-api.coursepark.com/skills/skillId
URI Parameters
HideShow
skillId
int (required) 

Skill ID.

Response  204

Product Proficiencies Collection

List product proficiencies
GET/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

GET https://bln-api.coursepark.com/product-proficiencies?organizationId=_&productId=_&sort=_&order=_
URI Parameters
HideShow
organizationId
int (required) 

Organization ID.

productId
int (required) 

Product ID.

sort
string (optional) Default: product_proficiency.id 

Sort the results by product_proficiency.id.

order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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

Share Learning Records

Sharing Learning Records By Email
POST/learning-record-sharings/send-emails

Share your learning records by email. Emails with the learning record details will be sent to given recipients.

Example URI

POST https://bln-api.coursepark.com/learning-record-sharings/send-emails
Request
HideShow
Body
{
  "organizationId": 100,
  "productIds": [
    10001,
    10006
  ],
  "emailAddresses": [
    "dave@example.com",
    "mary@example.com",
    "peter@example.com"
  ],
  "message": "I would like to share my learning records."
}
Schema
{
  "id": "/learning-record-sharing.send-email.create",
  "title": "Share learning records with others",
  "type": "object",
  "oneOf": [
    {
      "properties": {
        "organizationId": {
          "type": "integer"
        },
        "productIds": {
          "type": "array",
          "items": {
            "description": "product id",
            "type": "integer"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "emailAddresses": {
          "type": "array",
          "items": {
            "description": "email address of the recipient",
            "type": "string",
            "format": "email"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "message": {
          "type": "string",
          "maxLength": 4000
        }
      },
      "additionalProperties": false,
      "required": [
        "organizationId",
        "productIds",
        "emailAddresses"
      ]
    },
    {
      "properties": {
        "recipientName": {
          "description": "name or title of the recipient",
          "type": "string",
          "maxLength": 255,
          "minLength": 1
        },
        "recipientEmail": {
          "description": "email address of the recipient",
          "type": "string",
          "format": "email"
        }
      },
      "required": [
        "recipientName",
        "recipientEmail"
      ],
      "additionalProperties": false
    }
  ]
}
Response  204

Reservations

Add Reservation

Create a reservation
POST/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 or provider in the class’s network

  • admin in the class enrollment

Example URI

POST https://bln-api.coursepark.com/classes/classId/reservations
URI Parameters
HideShow
classId
int (required) 

Class ID.

Request
HideShow
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
}
Response  200
HideShow
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 reservation
GET/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 or provider in the class’s network

  • admin or instructor in the class enrollment

Example URI

GET https://bln-api.coursepark.com/classes/classId/reservations/reservationId
URI Parameters
HideShow
classId
int (required) 

Class ID.

reservationId
int (required) 

Reservation ID.

Response  200
HideShow
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 reservation
PUT/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 or provider in the class’s network

  • admin in the class enrollment

Example URI

PUT https://bln-api.coursepark.com/classes/classId/reservations/reservationId
URI Parameters
HideShow
classId
int (required) 

Class ID.

reservationId
int (required) 

Reservation ID.

Request
HideShow
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
}
Response  204

Delete a reservation
DELETE/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 or provider in the class’s network

  • admin in the class enrollment

Example URI

DELETE https://bln-api.coursepark.com/classes/classId/reservations/reservationId
URI Parameters
HideShow
classId
int (required) 

Class ID.

reservationId
int (required) 

Reservation ID.

Response  204

Class's Reservation Collection

List Class's Reservations
GET/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 or provider in the class’s network

  • admin or instructor in the class enrollment

Example URI

GET https://bln-api.coursepark.com/classes/classId/reservations?employerId=_&sort=_&order=_
URI Parameters
HideShow
classId
int (required) 

Class ID.

employerId
int (optional) Default: null 

Filter by employerId.

sort
string (optional) Default: created 

Sort the results by employer.name, created, and modified.

order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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 token
POST/upload-tokens

Creates an upload token. Must be an authenticated user.

Example URI

POST https://bln-api.coursepark.com/upload-tokens
Request
HideShow
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
}
Response  200
HideShow
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 Token
POST/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

POST https://bln-api.coursepark.com/jwt-token
Request
HideShow
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
}
Response  200
HideShow
Body
{
  "userId": 100,
  "networkId": 601,
  "organizationId": 601,
  "loginToken": "yJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjYsImNvbmZpcm1hdGlvbiI6dHJ1ZSwibmJmIjoxNDIyNTM4MTE1MDE3LCJleHAiOjE0MjI2MjQ1MTUwMTh9.IHgBcKnIIZrL18BXVlWp7MlIf_l3ZStyFDnIIlP-cFY"
}

Users

Self

Get account information
GET/user

Get your account information.

Example URI

GET https://bln-api.coursepark.com/user
Response  200
HideShow
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 account
PUT/user

Update your user account or to activate an identifier linked to your user account with disableNewUserEmail set to false.

Example URI

PUT https://bln-api.coursepark.com/user
Request
HideShow
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"]
    }
}
Response  204

Delete account
DELETE/user

Delete your account.

Example URI

DELETE https://bln-api.coursepark.com/user
Response  204

Get a user

Get user information
GET/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

GET https://bln-api.coursepark.com/users/userIdOrUsername
URI Parameters
HideShow
userIdOrUsername
int/string (required) 

User ID or Username.

Response  200
HideShow
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 user
PUT/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

PUT https://bln-api.coursepark.com/users/userId
URI Parameters
HideShow
userId
int (required) 

User ID.

Request
HideShow
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"]
    }
}
Response  204

Delete a user
DELETE/users/{userId}

Delete the given user. Must have owner permission for user.

Example URI

DELETE https://bln-api.coursepark.com/users/userId
URI Parameters
HideShow
userId
int (required) 

User ID.

Response  204

User Collection

List Users
GET/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

GET https://bln-api.coursepark.com/users/?user=_&sort=_&order=_
URI Parameters
HideShow
user
array/string (optional) Default: null 

Filter by user id. Accepts multiple user ids by array or comma-separated string.

sort
string (optional) Default: created 

Sort the results by lastname, firstname, and created.

order
string (optional) Default: desc 

Order the results in either asc or desc order.

Response  200
HideShow
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 User
POST/user-confirmations

Activate a user’s account. Requires a valid token that is issued and emailed upon account creation.

Example URI

POST https://bln-api.coursepark.com/user-confirmations
Request
HideShow
Headers
Content-Type: application/json
Body
{
  "token": "yJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjYsImNvbmZpcm1hdGlvbiI6dHJ1ZSwibmJmIjoxNDIyNTM4MTE1MDE3LCJleHAiOjE0MjI2MjQ1MTUwMTh9.IHgBcKnIIZrL18BXVlWp7MlIf_l3ZStyFDnIIlP-cFY"
}
Schema
{
  "type": "object",
  "properties": {
    "token": {
      "type": "string"
    }
  },
  "required": [
    "token"
  ],
  "additionalProperties": false
}
Response  204
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "passwordSetToken": "yJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjYsImNvbmZpcm1hdGlvbiI6dHJ1ZSwibmJmIjoxNDIyNTM4MTE1MDE3LCJleHAiOjE0MjI2MjQ1MTUwMTh9.IHgBcKnIIZrL18BXVlWp7MlIf_l3ZStyFDnIIlP-cFY"
}

Change Password

Change password
PUT/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

PUT https://bln-api.coursepark.com/user/password
Request
HideShow
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
}
Response  204

Change Own Password

Change own password
PUT/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

PUT https://bln-api.coursepark.com/user/password
Request
HideShow
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
}
Response  204

Password Forgot

Forgot password
POST/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

POST https://bln-api.coursepark.com/forgot/password
Request
HideShow
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
}
Response  204

Preferences

Get preference settings
GET/user/preferences

Retrieve your preference settings.

Example URI

GET https://bln-api.coursepark.com/user/preferences
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "notifications": {
    "sms": true,
    "email": true
  }
}

Update preference settings
PUT/user/preferences

Set or update your preference settings.

Example URI

PUT https://bln-api.coursepark.com/user/preferences
Request
HideShow
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
}
Response  204

Generated by aglio on 09 Dec 2020