Overview
Available APIs
All APIs are REST API based on JSON API.
Available
Partner API v2
This is the second version of the API created for Bloomflow clients and partners. It is built in a modernized format allowing access to more information, compared to API v1, and more importantly, to edit, update and delete information.
Deprecated
Open Public API
This does not require any authentication and can be used to retrieve basic platform information.
Partner API v1
This is the first version of the API created for Bloomflow clients and partners. Its main purpose is to access platform, user, and program information.
Partner API v2
Base URL
All Partner API v2 endpoints are served from the domain of the Bloomflow platform you were given access to:
https://<your-platform-domain>/api/partners/v2
The examples below use example.com as a placeholder for <your-platform-domain>. On the reference pages, set the same domain once in the Servers field displayed above the endpoints before using Try it out.
Authentication
Bearer token in request header (Bearer XXXXXXXXXXXXX)
Token: Provided by Bloomflow Structure: Based on JSON API standards
Available Objects
- Users
- Programs (aka Challenges)
- Juries
- Steps
- Teams
- Team Memberships
- Communities
- Participations
- Participation Tags
- Questions
- Answers
- Projects
- Announcements
- Trackers
- Messages
- Webinars
- Hubs (Catalogs and Kanbans)
- Rewarded Events
Filter Capabilities
Overview
The filtering logic described below applies to all Partner API v2 endpoints that are in a GET list mode (index).
It allows the API user to use the objects and relationships attributes to filter the elements to be returned by the API response.
Additionally, the filters can be used along with specific logic elements called predicates in order to refine the filter.
Filterable Elements
Any direct attribute described in the response content of GET [INDEX] request type can be used as a filterable element.
For example, the locale attribute can be used as a filter on the GET User list request.
If available, it is possible to use relationship elements to filter. For example, the id attribute of the relationship step can be used as a filter on the GET Participations list request.
Available Predicates
Predicates should be used inside a specific URL parameter in the API request: ?q[*predicate]
For example: https://example.com/api/partners/v2/object?q[attribute_eq]=value
| Predicate | Description | Notes |
|---|---|---|
*_eq | Equal | |
*_not_eq | Not equal | |
*_matches | Matches with LIKE | Example: q[email_matches]=%@gmail.com |
*_does_not_match | Does not match with LIKE | |
*_matches_any | Matches any | |
*_matches_all | Matches all | |
*_does_not_match_any | Does not match any | |
*_lt | Less than | |
*_lteq | Less than or equal | |
*_gt | Greater than | |
*_gteq | Greater than or equal | |
*_present | Not null and not empty | Only compatible with string columns. Example: q[name_present]=1 SQL: col is not null AND col != '' |
*_blank | Is null or empty | SQL: col is null OR col = '' |
*_null | Is null | |
*_not_null | Is not null | |
*_in | Match any values in array | Example: q[name_in][]=Alice&q[name_in][]=Bob |
*_not_in | Match none of values in array | |
*_lt_any | Less than any | SQL: col < value1 OR col < value2 |
*_lteq_any | Less than or equal to any | |
*_gt_any | Greater than any | |
*_gteq_any | Greater than or equal to any | |
*_lt_all | Less than all | SQL: col < value1 AND col < value2 |
*_lteq_all | Less than or equal to all | |
*_gt_all | Greater than all | |
*_gteq_all | Greater than or equal to all | |
*_not_eq_all | None of values in a set | |
*_start | Starts with | SQL: col LIKE 'value%' |
*_not_start | Does not start with | |
*_start_any | Starts with any of | |
*_start_all | Starts with all of | |
*_not_start_any | Does not start with any of | |
*_not_start_all | Does not start with all of | |
*_end | Ends with | SQL: col LIKE '%value' |
*_not_end | Does not end with | |
*_end_any | Ends with any of | |
*_end_all | Ends with all of | |
*_not_end_any | Does not end with any of | |
*_not_end_all | Does not end with all of | |
*_cont | Contains value | Uses LIKE |
*_cont_any | Contains any of | |
*_cont_all | Contains all of | |
*_not_cont | Does not contain | |
*_not_cont_any | Does not contain any of | |
*_not_cont_all | Does not contain all of | |
*_i_cont | Contains value (case insensitive) | Uses ILIKE |
*_i_cont_any | Contains any of values (case insensitive) | |
*_i_cont_all | Contains all of values (case insensitive) | |
*_not_i_cont | Does not contain (case insensitive) | |
*_not_i_cont_any | Does not contain any of values (case insensitive) | |
*_not_i_cont_all | Does not contain all of values (case insensitive) | |
*_true | Is true | |
*_false | Is false |
Sorting
Results from GET list endpoints can be sorted using the q[s] parameter.
Format: q[s]=property+direction
| Direction | Description |
|---|---|
asc | Ascending |
desc | Descending |
Example: https://example.com/api/partners/v2/object?q[s]=updated_at+desc will return results sorted by updated_at in descending order.
Pagination
For responses containing a list of elements, results are returned in multiple pages.
The pagination can be configured according to the following dedicated page filters:
| Filter | Description | Example |
|---|---|---|
page | Defines the current page | page=3 |
per | Defines the number of elements returned per page. Defaults to 100; values must be between 1 and 1000 (out-of-range values fall back to the default). | per=50 |
Example: https://example.com/api/partners/v2/object?page=3&per=50 will return page 3 containing 50 elements.